[gelöst] Filter im Report programieren

11. Oktober 2006 14:22

Hallo liebe Leute,

ich bin noch blutiger Anfänger in der Navisionprogramierung, also bitte nich verhauen für meine Frage *gg*.

Ich soll einen Report programieren, welcher einen Lagerbestandsfilter besitzt, der alle Ergebnisse herausfiltert, wo der Lagerbestand 0 ist. Ich habe mir gedacht dieses über die Funktion SETFILTER zu realisieren.

Mein Code lautet
Code:
Item.SETFILTER(Item.Inventory,Inventory<>0)


Allerdings kommt dann ein Typkonvertierungsfehler, der sagt

"Eine Typkonvertierung kann nicht durchgeführt werden, da eine der Seiten einen ungültigen Typ hat.

Text:=Boolean"

Die Funktion FORMAT hat mich da auch nicht weit gebracht. Der Typ der Inventoryvariable ist integer, deshalb versteh ich das nicht.

Ich hab dann noch folgendes probiert

Code:
Item.SETFILTER(Item.Inventory,'Inventory'<>0)


Da kommt von der Sache her der selbe Fehler, aber mit

Text<>Integer

Das kapier ich nicht. Kann mir da jemand helfen?

Grüße René
Zuletzt geändert von Rene am 12. Oktober 2006 09:34, insgesamt 1-mal geändert.

11. Oktober 2006 14:29

Hallo René

Der Filterbefehl muss so aussehen:

Code:
Item.SETFILTER(Inventory, '<>%1', 0);


Zur Laufzeit wird %1 ersetzt mit dem Wert 0
Zuletzt geändert von rotsch am 11. Oktober 2006 15:02, insgesamt 1-mal geändert.

11. Oktober 2006 14:44

hallo rotsch

danke für die schnelle Antwort, aber das Problem hab ich immer noch.

Diesmal aber mit Text:=Decimal

Ich hab in der Itemtabelle geschaut, und dort ist die Variable als Integer deklariert.

Der Platzhalter hat das Problem nicht gelöst.

Ich habe deshalb versucht es mit 2 Platzhalter zu realiesieren
Code:
 Item.SETFILTER(Item.Inventory,'%1<>%2',Inventory,0)


Die kompilierung klappt, aber dann kommt beim ausführen
die Fehlermeldung

"Der Filter'%1<>%2' ist ungültig.
Sie haben einen ungültigen Ausdruck für den Filter auf Feld Lagerbestand von Tabelle Artikel eingegeben."

Woran könnte es noch liegen?

EDIT: Was mich halt wundert ist dass die beiden Ausdrücke eigentlich Integer sind. Ein Typunterschied liegt ja garnicht vor.

Grüße René

11. Oktober 2006 14:51

Ich denke der Code muss so aussehen
Code:
Item.Calcfields(Inventory);
Item.SETFILTER(Item.Inventory, '<>%1', 0);


Michael

11. Oktober 2006 15:03

hi Michael

Danke Danke Danke.
Der Code war richtig.

Grüße René