[GELÖST] Setfilter mit OR Bedingung

9. November 2011 12:45

Hallo Forum :).

Ich möchte gerne innerhalb der Debitoren auf alle Debitoren filtern die zu einer bestimmten Zuständigkeitseinheit gehören, desweiteren gibt es Debitoren die keiner Zuständigkeitseinheit angehören, auch diese sollen angezeigt werden.

Code:
custloc.setfilter("Responsibility Center",'%1|%2',UserSetup."Allowed Resp. Centers",'')

Allowed Resp. Centers enthält einen Filterwert z.B. A01..A99

Leider wird der Filter folgendermassen aufgebaut: 'A01..A99'|'' anstatt A01..A99|''

Wenn ich den setfilter Befehle wie nachfolgend aufbaue, dann wird der Filter korrekt angewendet(A01..A99|'').
Code:
setfilter("Responsibility Center",UserSetup."Allowed Resp. Centers"+'|'+'''''')


Vielleicht kann mir einer erklären, warum die obige setfilter Variante nicht funktioniert, die untere allerdings schon.
Für mich sieht das so aus, als wenn der Kompiler in der 2ten Version folgendermassen vorgeht:

Code:
' <- Textbegin     '     Textende-> ' ' <-Textbegin    '    Textende -> '

aber müsste es dann nicht so aufgebaut sein:
Code:
'''+'''



Die Frage ist nur reine Neugier.
Zuletzt geändert von Torsten K. am 9. November 2011 14:52, insgesamt 2-mal geändert.

Re: Setfilter mit OR Bedingung

9. November 2011 13:11

Der erste Aufruf ist nach meiner Meinung so zu interpretieren: Filtere auf Text1 oder Text2, und darum wird der so aufgebaut.

Würdest du so einen Aufruf haben:
Code:
SetFilter,Feld,'%1..%2|%3',Anfangswert,Endwert,Oder-Wert)
, müsste das gewünschte Ergebnis herauskommen.

Re: Setfilter mit OR Bedingung

9. November 2011 13:27

McClane hat geschrieben:Der erste Aufruf ist nach meiner Meinung so zu interpretieren: Filtere auf Text1 oder Text2, und darum wird der so aufgebaut.

Würdest du so einen Aufruf haben:
Code:
SetFilter,Feld,'%1..%2|%3',Anfangswert,Endwert,Oder-Wert)
, müsste das gewünschte Ergebnis herauskommen.

Ich bekomme schon einen Wert von A01..A99 aus:
Code:
UserSetup."Allowed Resp. Centers

Ich möchte jetzt nur noch zusätzlich auf Alle Debitoren filtern die keiner Zuständigkeitseinheit zugewiesen sind.
Navision fügt aber zu dem Filter noch ein Hochkommata am Anfang und am Ende hinzu, so das aus einer Range A01 bis A99 der Text A01..A99 wird.

Re: Setfilter mit OR Bedingung

9. November 2011 13:51

Ja, das hatte ich auch so verstanden :wink:

Re: Setfilter mit OR Bedingung

9. November 2011 14:04

McClane hat geschrieben:Ja, das hatte ich auch so verstanden :wink:


Joah, wobei das dann kompliziert wird, wenn die abzufilternden Zuständigkeitseinheiten nicht hintereinanderliegen, z.B. von A01 bis A08 und von A85 bis A95.

ich dachte nur, das ich evtl. beim setfilter hier:
Code:
UserSetup."Allowed Resp. Centers"

noch irgendwie was beachten muss :)

Verbuche ich das mal unter Sonstiges ;).

Re: Setfilter mit OR Bedingung

9. November 2011 14:25

Beim Einsatz von SETFILTER mit Jokerzeichen ist auch immer dieser Bug (KB 951233) zu beachten. Der gilt auch bei Version 4 und 5, für 6 habe ich das noch noch nicht getestet.
[Nachtrag] Ersatz für verwaisten Link: https://forum.mibuso.com/discussion/46336/strange-behavior-in-setfilter

Re: Setfilter mit OR Bedingung

9. November 2011 14:26

Sicher habe ich's blöd ausgedrückt :roll: .

Versuche ich's mal so: Der Filter '%1|%2' filtert auf genau 2 Texte, völlig egal, was da drin steht. Auch, wenn der erste Text einer ist, den Nav normal als Von..Bis-Filter annimmt.

Oder so: Wäre das Symbol für einen von-bis-Bereich das Minuszeichen anstelle der beiden Punkte, und du übergibst den String 'Müller-Lüdenscheid' in einen Filter wie oben, wird auf den genauen Nachnamen "Müller-Lüdenscheid" oder den zweiten Wert gefiltert und nicht, wie du es gerne hättest, auf alle Nachnamen von Müller bis Lüdenscheid oder den zweiten Wert (gut, da käme eh nix raus ...). Dafür bräuchte es SetFilter( ...,'%1..%2|%3','Müller','Lüdenscheid','Irgendwas');

Re: Setfilter mit OR Bedingung

9. November 2011 14:51

Hallo Kowa,

Danke, hatte mich schon gewundert, also doch ein undokumentiertes Feature :).

Also der Classic-SQL-Client (6.0.30232.0) macht das immer noch so.

Wenn man es weiss, dann ist es ja ganz einfach :mrgreen: .

Re: [GELÖST] Setfilter mit OR Bedingung

9. November 2011 17:52

In Kowas Link geht es um Wildcards und nicht um das, was du hier beschrieben hast.

Meiner Ansicht muss das auch so sein, dass die ein Filter mit einem '..' darin nicht grundsätzlich als Von-Bis-Bereich interpretiert wird. Denn wie will man sonst auf eine Zeichenfolge mit zwei Punkten darin filtern, wenn man genau das braucht?