[Gelöst] CC: Filter in IF-Anweisung

23. März 2015 16:13

Hallo zusammen,

ich habe folgende Anweisung (Auszug):

Code:
...
IF DPDDruckCSV.Auftragsnummer = 'VA' THEN
...


Es sollen alle Auftragsnummern die "VA" in der Nummer beinhalten erscheinen.

So reicht es natürlich nicht, aber ich komme einfach nicht auf die korrekte Anweisung.

Ich habe es mit allen möglichen Filtervarianten probiert...
Zuletzt geändert von NIQ am 24. März 2015 09:39, insgesamt 1-mal geändert.

Re: CC: Filter in IF-Anweisung

23. März 2015 16:19

Wenn du Auftragsnummern suchst welche mit VA anfangen könntest du die mithilfe von CopySTR die ersten 2 Zeichen von der Auftragsnummer mit VA vergleichen

COPYSTR

Code:
Auftragsnummer = 'VA1000'
NewString:=COPYSTR(Auftragsnummer, Position[, Length])

IF NewString = VA THEN MachWas


Mit STRPOS kannst du auch einen String innerhalb eines Strings suchen

Re: CC: Filter in IF-Anweisung

23. März 2015 16:27

Code:
SETFILTER(Auftragsnummer, 'VA*');

sollte alle relevanten Aufträge ausgeben...

Re: CC: Filter in IF-Anweisung

23. März 2015 17:03

Es geht im Detail darum, dass alle Aufträge mit "VA" in der Nummer in ein Verzeichnis geschrieben werden und das Ganze für alle Aufträge mit "SVA" in ein anderes.

Mit den genauen Auftragsnummern funktioniert dies in meiner Anpassung auch schon.

Ich weiß nur nicht so recht, wie ich den Filter nun für alle Nummern in meinem Beispiel einbauen soll...

Code:
IF DPDDruckCSV.Auftragsnummer = 'VA15.00001' THEN
  Filename :='\\Clientname\dpd\Vertrieb\' + CONVERTSTR(FORMAT(WORKDATE),'.','_') +'_'+ CONVERTSTR(FORMAT(TIME),':','_') + '.csv'
ELSE IF DPDDruckCSV.Auftragsnummer = 'SVA15.00001' THEN
  Filename :='\\Clientname\dpd\Schweiz\' + CONVERTSTR(FORMAT(WORKDATE),'.','_') +'_'+ CONVERTSTR(FORMAT(TIME),':','_') + '.csv'

Re: CC: Filter in IF-Anweisung

23. März 2015 18:12

Code:
IF STRPOS(DPDDruckCSV.Auftragsnummer, 'VA') = 1 THEN
  Filename :='\\Clientname\dpd\Vertrieb\' + CONVERTSTR(FORMAT(WORKDATE),'.','_') +'_'+ CONVERTSTR(FORMAT(TIME),':','_') + '.csv'
ELSE IF STRPOS(DPDDruckCSV.Auftragsnummer, 'SVA') = 1 THEN
  Filename :='\\Clientname\dpd\Schweiz\' + CONVERTSTR(FORMAT(WORKDATE),'.','_') +'_'+ CONVERTSTR(FORMAT(TIME),':','_') + '.csv'

Re: CC: Filter in IF-Anweisung

23. März 2015 19:07

Müsste die Reihenfolge der if-Abfragen nicht andersrum sein? :wink:

Re: CC: Filter in IF-Anweisung

23. März 2015 22:48

Ein Klassiker ;)

Code:
CASE TRUE OF
 STRPOS(DPDDruckCSV.Auftragsnummer, 'VA'):  Filename := ...;
 STRPOS(DPDDruckCSV.Auftragsnummer, 'SVA'):  Filename := ..;
 usw...
END


Lässt sich grad bei mehr als 2 Optionen viel besser lesen ..

Re: CC: Filter in IF-Anweisung

23. März 2015 23:21

Auch so werden die "SVA" schon bei der Suche nach "VA" verarbeitet :wink: .

Re: CC: Filter in IF-Anweisung

24. März 2015 09:06

McClane hat geschrieben:Auch so werden die "SVA" schon bei der Suche nach "VA" verarbeitet :wink: .

Richtig, bei meiner Variante allerdings nicht, weil ich die Position 1 abfrage.

Re: CC: Filter in IF-Anweisung

24. März 2015 09:38

Vielen Dank für die Tipps! :)

Re: CC: Filter in IF-Anweisung

24. März 2015 11:15

JoergR hat geschrieben:Ein Klassiker ;)

Code:
CASE TRUE OF
 STRPOS(DPDDruckCSV.Auftragsnummer, 'VA'):  Filename := ...;
 STRPOS(DPDDruckCSV.Auftragsnummer, 'SVA'):  Filename := ..;
 usw...
END


Lässt sich grad bei mehr als 2 Optionen viel besser lesen ..


Sorry hab das =1 vergessen ...war schon spät :-x
Code:
CASE TRUE OF
 (STRPOS(DPDDruckCSV.Auftragsnummer, 'VA')=1):  Filename := ...;
 (STRPOS(DPDDruckCSV.Auftragsnummer, 'SVA')=1):  Filename := ..;
 usw...
END


so müsste es gehen..imho generell trotzdem besser lesbar als verschachtelte IF Anweisungen..

Re: CC: Filter in IF-Anweisung

24. März 2015 22:30

JoergR hat geschrieben:imho generell trotzdem besser lesbar als verschachtelte IF Anweisungen..

Ach Quatsch, es geht doch nichts über verschachtelte IF-Anweisungen :mrgreen: