Artikelbericht auto. Filter in der Programmierung [gelöst]

17. März 2008 10:59

Hallo allerseits

Ich habe ein Problem, dass eigentlich nichts grosses ist. Aber irgendwie klappt es nicht.

Ich will mir ein Artikelbericht erstellen lassen. Der Bericht soll aber nur Artikel ausgeben, deren Lagerbestand ungleich null beträgt.

Deshalb habe ich vor die Artikeltabelle im Code schon vorzufiltern.


Im Trigger "Item - OnPreDataItem()" des Reports habe ich versucht mit setfilter zu arbeiten.
Aber irgendwie schaffe ich nicht den Filter <>'' im Code unterzubringen.
Zuletzt geändert von dai am 17. März 2008 15:21, insgesamt 1-mal geändert.

17. März 2008 11:52

Hallo Dai.

Poste doch mal deinen Code. Ist der Lagerbestand eines Artikels nicht ein Flowfield? - Die kann man meines Wissens gar nicht filtern.

Gruss
Boris

Re: Artikelbericht automatische Filter in der Programmierung

17. März 2008 12:29

dai hat geschrieben:Im Trigger "Item - OnPreDataItem()" des Reports habe ich versucht mit setfilter zu arbeiten.
Aber irgendwie schaffe ich nicht den Filter <>'' im Code unterzubringen.

Zeig uns mal bitte deinen Code, mit dem es nicht geklappt hat.

17. März 2008 12:29

neoroot hat geschrieben:Ist der Lagerbestand eines Artikels nicht ein Flowfield? - Die kann man meines Wissens gar nicht filtern.

Doch, das geht. Nur nicht performant ....

17. März 2008 12:31

Filtern kann man das schon :wink: , allerdings auf 0, nicht auf leer.
Code:
SETFILTER(Inventory,'<>0');

17. März 2008 12:33

lol stimmt Kowa, manchmal laufe ich echt nur auf Sparflamme ...

17. März 2008 14:59

Folgende Code habe ich beim Trigger Item - OnPreDataItem() eingegeben.

it.SETFILTER(Inventory,'<>0');

Dabei ist "it" eine globale variable mit DataType record und Subtype die Tabelle Item.

nach ausführen des Berichts werden aber trotzdem auch Artikel angezeigt, die kein lagerbestand haben

17. März 2008 15:07

Hm... du hast absichtlich it.SETFILTER... und nicht Item.SETFILTER... gemacht?

17. März 2008 15:16

Hi neoroot

wenn ich ohne variable arbeite klappt es. Mit variable nicht. Vielen dank für die information.

Am anschluss aber direkt ein weitere frage. jetzt versucht ich die tabelle sp zu filtern, das nur artikel erscheinen die eine beschreibung haben.

habe folgendes versucht
Item.SETFILTER(Description,'<>''');
Also als Filter <>'' (ungleich leer)
Als den report ausführe bekomme ich aber eine fehlermeldung

Der Filter '<>'' ist ungültig.

Da kommt Nav wohl mit den Hochkommas nicht zurecht. Was muss ich da machen, damit ich den Filter <>'' in den Setfilter reinbekomme?

17. März 2008 15:20

Kommando zurück

Habe folgendes probiert und es hat geklappt

Item.SETFILTER(Description,'<>%1','');

Vielen Dank für eure Hilfe.

Gruß Dai

17. März 2008 15:25

Probiers mal so:

Code:
it.CALCFIELDS(Intentory);
it.SETFILTER(Inventory,'<>%1', 0);

17. März 2008 16:13

dai hat geschrieben:wenn ich ohne variable arbeite klappt es. Mit variable nicht.

Die Variable it ist unabhängig von dem DataItem Item. Auch darauf kann man filtern, falls zusätzliche Daten eines anderen Artikel erforderlich sind, während der Report die Artikeltabelle durchläuft.

Bei komplexeren Reports bitte beachten :
Ob man hier Item.SETFILTER oder SETFILTER schriebt, ist erstmal egal. Innerhalb des DataItems weiss der Compiler , was gemeint ist. Falls der Name des DataItems später aber mal geändert wird (z.B. statt <Item> dann vielleicht MainItem), lernt man die Vorzüge der einfachen Schreibweise zu schätzen. Diese erspart einem das Überarbeiten des Codes.
Falls mit Item.SETFILTER codiert wurde und eine Variable Item nicht existiert, versteht dann der Compiler die Zeile nicht mehr ( dann hat man Glück, und muss nur MainItem.SETFILTER schreiben) oder aber wenn die Variable Item existiert benutzt der Compiler diese automatisch ohne Rückfrage, die man eigentlich für andere Zwecke im Report angelegt hatte. Dann macht der Report eventuell etwas ganz anderes als geplant.