[gelöst] Setfilter vs. Setrange

3. April 2013 09:03

Guten Morgen liebes Forum,

ich habe ein merkwürdiges Problem gelöst, weiß aber nicht warum.

Wir haben ein NAV 3.7 mit SQL 2008 DB.

Der Code

table.SETfilter(Step,'=%1|=%2',0,1) oder
table.SETfilter(Step,'%1|%2',0,1)

führt zur Beendigung des Clients.

Wenn man den Code durch

table.SETRANGE(Step,0,1) ersetzt, klappt es.

Dabei ist Step vom Typ Integer.

Was kann die Ursache sein?
Zuletzt geändert von rallnus am 4. April 2013 11:52, insgesamt 1-mal geändert.

Re: Setfilter vs. Setrange

3. April 2013 09:08

rallnus hat geschrieben:Wir haben ein NAV 3.7 mit SQL 2008 DB.

Wirklich 3.7? Dann steht dein Thema im falschen Unterforum (5.xx).

Dabei ist Step vom Typ Integer.

Was kann die Ursache sein?

Mir war dieser Fehler neu (ist ja auch eine sehr alte NAV-Version). Ich könnte mir aber gut vorstellen, dass es am Integer-Feld liegt, auf das du filterst.
Das Pipe-Zeichen als Filterausdruck ("|") ist eigentlich primär für Text-/Codefelder gedacht. Und damals in 3.7 hat man vermutlich noch nicht weit genug um die Ecke gedacht. Ist aber nur geraten.

Re: Setfilter vs. Setrange

3. April 2013 09:10

Leider reicht einem Supporter nur selten diese Aussage:
führt zur Beendigung des Clients.

Was genau macht der Client? Bricht er ohne Fehlermeldung ab? Gibt es eine Fehlermeldung? wenn ja welche? Bleibt er einfach stehen ohne das etwas getan werden kann?

Re: Setfilter vs. Setrange

3. April 2013 09:26

Ok, danke für die schnellen Antworten.

- JA, es ist 3.7, technisch 2009 R2 - ich kann es wohl nicht selbststänfig in ein anderes Forum verschieben?
- das aktuelle Anwendungsfenster schließt sich ohne Fehlermeldung, ein neues Fenster kann geöffnet werden

Re: Setfilter vs. Setrange

3. April 2013 09:36

rallnus hat geschrieben:- JA, es ist 3.7, technisch 2009 R2 - ich kann es wohl nicht selbststänfig in ein anderes Forum verschieben?

Wie SETRANGE und SETFILTER interpretiert werden, hängt von der technischen Version ab. Darum habe ich das Thema ins NAV 2009 Forum geschoben.
Im Übrigen wird eure Kombination aus 3.7 (Objekte) + 2009 R2 (technisch) von Microsoft nicht supportet. Es könnte vielleicht sein, dass dies der Grund für deine Abbrüche ist.

- das aktuelle Anwendungsfenster schließt sich ohne Fehlermeldung, ein neues Fenster kann geöffnet werden

Steht nichts in der Windows-Ereignisanzeige?

Re: Setfilter vs. Setrange

4. April 2013 11:52

Leider ist der Zugriff auf die Ereignisanzeige nicht so einfach.
Ich sehe das Problem daher erst mal als gelöst an.
Danke vielmals.

Re: [gelöst] Setfilter vs. Setrange

4. April 2013 15:50

rallnus hat geschrieben:Der Code

table.SETfilter(Step,'=%1|=%2',0,1) oder
table.SETfilter(Step,'%1|%2',0,1)

führt zur Beendigung des Clients.

Welche genaue Buildnr. verwendest du denn? Evtl. ist es ein Bug, der bereits bekannt/behoben wurde?

Hast du mal den folgenden Workaround probiert?
Table.SETFILTER(Step,STRSUBSTNO('=%1|=%2',0,1)) bzw.
Table.SETFILTER(Step,STRSUBSTNO('%1|%2',0,1))

Re: [gelöst] Setfilter vs. Setrange

12. April 2013 12:48

Es handelt sich um Build 32558.
Den Code werde ich gelegtlich testen, vielen Dank.

Re: [gelöst] Setfilter vs. Setrange

12. April 2013 14:35

Mit Wildcards gab es auch einen Setfilterbug, der entgegen dem KB Artikel mindestens bei Version 5 auch noch auftritt (dort bin ich über den gestolpert). Dort muss der Filterausdruck als TempString zwischengespeichert werden, um den zu umgehen.
http://support.microsoft.com/kb/951233