Codefelder verbinden CC

22. August 2017 14:20

Hallo an alle,
ich habe 6 Codefelder, die sollen je nach Inhalt einem Ausgabefeld als Filter verknüpft werden.
Wenn Feld <> '' dann Verketten mit Komma, oder als Separates Feld ohne Komma.

Beispiele:
Feld 1=1
Feld 2=2
Feld 3=3
Ausgabe: 1,2,3

Feld 1=''
Feld 2=2
Feld 3=3
Ausgabe: 2,3

Feld 1=''
Feld 2=''
Feld 3=3
Ausgabe: 3
hat jemand eine Lösung ?

Re: Codefelder verbinden CC

22. August 2017 14:36

Hi,

ich verstehe die Frage/Aufgabe nicht richtig.

Evtl. IF Abfrage?

Code:
StrAusgabe :=''

IF FELD1 <> ''
  StrAusgabe :='' StrAusgabe + '1';

IF FELD1 <>'' AND FELD2<>''  THEN
  StrAusgabe :='' StrAusgabe + ',';

IF FELD2<>''  THEN
  StrAusgabe :='' StrAusgabe + '2';
...
...
..

Re: Codefelder verbinden CC

22. August 2017 15:21

Ich wuerde es so machen: (hab dein Komma durch nen _ ersetz damit man es besser lesen kann)
Code:
Ausgabe := Feld1;
Ausgabe += DELCHR(('_' + Feld2), '>', '_');
Ausgabe += DELCHR(('_' + Feld3), '>', '_');

Ausgabe := DELCHR(Ausgabe,  '<', '_');

Re: Codefelder verbinden CC

22. August 2017 15:28

Hallo,

ich würde folgenden Code bevorzugen:
Code:
Ausgabe:='';
if Feld1 <>'' then
  Ausgabe := Feld1;
if Feld2 <> '' then begin
  if Ausgabe <> '' then
    Ausgabe +=','
  Ausgabe += Feld2;
end;
if Feld3 <> '' then begin
  if Ausgabe <> '' then
    Ausgabe +=','
  Ausgabe += Feld3;
end;

Etwas einfacher wird es, wenn die Felder als Array vorliegen:
Code:
Ausgabe :='';
for I:=1 to arraylen(Feld) do begin
  if Feld[i] <>'' then begin
    if Ausgabe <> '' then
      Ausgabe +=','
    Ausgabe += Feld[i];
  end;
end;


Was soll denn passieren, wenn in Feld1 und Feld3 etwas steht?

Gruß Fiddi

Re: Codefelder verbinden CC

22. August 2017 16:01

Ich will dann auch noch :)
Bei mir wäre es eine Funktion, die alle Felder aufnimmt und einen String zurück gibt. Ich verbinde alle Felder mit einem Komma; In der While-Schleife werden alle doppelten Kommas zu einfachen Kommas gemacht. Am Ende werden noch evtl. vorhandene Kommas am Anfang oder Ende des Strings entfernt.


MultipleTextToString(Feld1 : Code[10];Feld2 : Code[10];Feld3 : Code[10];Feld4 : Code[10];Feld5 : Code[10];Feld6 : Code[10]) : Text
Code:
String := Feld1 + ',' + Feld2 + ',' + Feld3 + ',' + Feld4 + ',' + Feld5 + ',' + Feld6;
FindWhat := ',,';
ReplaceWith := ',';
WHILE STRPOS(String,FindWhat) > 0 DO
  String := DELSTR(String,STRPOS(String,FindWhat)) + ReplaceWith + COPYSTR(String,STRPOS(String,FindWhat) + STRLEN(FindWhat));
exit(DELCHR(String, '<>', ','));

Re: Codefelder verbinden CC

22. August 2017 16:09

Mein persönlicher Pokal geht an Ted! :-D
Sehr elegant.

Re: Codefelder verbinden CC gelöst

22. August 2017 20:01

Liebe Leute
vielen Dank für die schnellen Reaktionen. :-D
Damit habe ich eine Lösung gefunden
Thomas