Seite 1 von 1

SETFILTER[Gelöst]

Verfasst: 25. November 2010 12:00
von NAVGATOR
Hallo,

folgendes Problem:

Ich möchte mit SETFILTER nach allen Kreditoren filtern, die B&T enthalten,

also SETFILTER(Name,*@B&T*);

Das Problem ist jetzt, dass & als UND-Operator verstanden wird, und nicht als Teil des String.
Wie bekomme ich es hin, dass & als Teil des String verwendet wird?

Vielen Dank für eure Hilfe!

Re: SETFILTER

Verfasst: 25. November 2010 12:05
von McClane
SETFILTER(Name,'%1','*@B&T*');

Re: SETFILTER

Verfasst: 25. November 2010 12:16
von NAVGATOR
hmmm,

ich glaub das kann nicht die Lösungs sein

* und @ werden hier auch immer noch als Operator verwendet.

Ich muss mich auch hinsichtlich meines ersten Posts korrigieren,

ich meinte SETFILTER(Name,'*@B&T*')

und hier wird & als Operator verwendet.

Re: SETFILTER

Verfasst: 25. November 2010 12:26
von McClane
NAVGATOR hat geschrieben:ich glaub das kann nicht die Lösungs sein

Musst du ja auch nicht glauben, aber es klappt :wink:

Re: SETFILTER

Verfasst: 26. November 2010 14:14
von winfy
NAVGATOR hat geschrieben:Hallo,

folgendes Problem:

Ich möchte mit SETFILTER nach allen Kreditoren filtern, die B&T enthalten,

also SETFILTER(Name,*@B&T*);

Das Problem ist jetzt, dass & als UND-Operator verstanden wird, und nicht als Teil des String.
Wie bekomme ich es hin, dass & als Teil des String verwendet wird?

Vielen Dank für eure Hilfe!


Die SETFILTER Variante geht bei mir auch nicht @McClane! :shock:
Da der String unerwünschte Operatoren (gemeint ist &) enthält kann der Filter eigentlich auch nicht das gewünschte Ergebnis erzielen.

Als Workaround fällt mir nur ein:

Mit Setfilter vorsortieren und mit einer IF Anweisung dann genauer prüfen.

Code:
SETFILTER(Name, '*@B?T*');
...
Code:
IF STRPOS(UPPERCASE(Name), 'B&T') > 0 THEN BEGIN
  ...
END;


Gruß,
winfy

Re: SETFILTER

Verfasst: 26. November 2010 14:36
von McClane
winfy hat geschrieben:Die SETFILTER Variante geht bei mir auch nicht @McClane!

Bei mir aber :P :wink: Sowohl Native als auch SQL.
Mit SETFILTER(Name, '@*B&T*'); kommen alle, die mit "T" beginnen und "B" enden (also sinngemäß T*B), und sonst der eine, in dessen Namen wirklich der Substring vorkommt. Allerdings mit Nav5 SP1.

Re: SETFILTER

Verfasst: 26. November 2010 14:39
von winfy
McClane hat geschrieben:Bei mir aber :P :wink: Sowohl Native als auch SQL.
Mit SETFILTER(Name, '@*B&T*'); kommen alle, die mit "T" beginnen und "B" enden (also sinngemäß T*B), und sonst der eine, in dessen Namen wirklich der Substring vorkommt. Allerdings mit Nav5 SP1.


Ich glaube das war dann ein klassisches Missverständnis! :wink:

Er sucht IMO nach 'B&T' als String und will aber nicht das '&' als Operator erkannt wird.

Gruß,
winfy

Re: SETFILTER

Verfasst: 26. November 2010 15:07
von McClane
Nein, das habe ich genau so gemeint, wie du sagst. Mit der %1-Variante wird der Substring "B&T" korrekt gefunden *schwör*.

Re: SETFILTER

Verfasst: 1. Dezember 2010 11:39
von pduck
Ich kenne noch folgende Variante: SETFILTER(<Feld>, STRSUBSTNO('@*%1&%2*', 'B', 'T'));

Re: SETFILTER

Verfasst: 2. Dezember 2010 03:34
von Freestyler
pduck hat geschrieben:Ich kenne noch folgende Variante: SETFILTER(<Feld>, STRSUBSTNO('@*%1&%2*', 'B', 'T'));


Das klappt.