[Gelöst] -Filter bearbeiten nach SETRANGE beim Report Aufruf

27. November 2008 11:08

Hi,

ich rufe mittels C/AL ein Report auf, bestimmte Felder sollen beim Start mit einen Filter besetzt werden, das mache ich wie folgt:

Code:

CalcPhysInvtOrderLines.Def(PhysInvtOrderHeader);

Item.SETRANGE("Inventory Value Zero", FALSE);
Item.SETRANGE("Item Category Code","Item Category".GETFILTER(Code));
Item.SETRANGE("Location Filter", "Item Category".GETFILTER("Location Filter"));
Item.SETRANGE(Blocked, FALSE);

CalcPhysInvtOrderLines.SETTABLEVIEW(Item);


Angenommen "Item Category" ist gleich B0, funktioniert die Übergabe auch.
Wähle ich nun aber als "Item Category" B0|B1|B2, dann wird folgendes in das Filter Feld geschrieben: 'B0|B1|B2'

Durch die Hochkommata kann ich mit dem Filter nichts anfangen...

Kann ich verhindern das diese ' ' hinzugefügt werden? Ich verstehe auch nicht warum die ' ' nur auftauchen wenn ich auf mehrere Codes filtern möchte.

Wenn Nein, wie kann ich diese aus dem String rauslöschen ? Habe versucht die Länge des Strings zu ermitteln, und wollte dann prüfen ob an erster und letzter Stelle ein Hochkommata steht wie folgt:

Code:

// Länge des String Code ermitteln
codeLen := STRLEN(Code);

IF COPYSTR(Code,0,1) = ''' THEN  /// ''' = 3 Hochkommata
 newCodeStr :=COPYSTR(Code,1,codeLen-1)


Aber das klappt auch nicht...

Wie könnte ich das lösen?

Vielen Dank
Zuletzt geändert von elTorito am 27. November 2008 11:42, insgesamt 1-mal geändert.

Re: Filter bearbeiten nach SETRANGE beim Report aufruf

27. November 2008 11:14

Wie hast du den Pipe-Filter per Quelltext eingegeben?
Funktioniert auch
Code:
...SETFILTER(..., '%1|%2|%3', 'B0', 'B1', 'B2');
nicht?

Re: Filter bearbeiten nach SETRANGE beim Report aufruf

27. November 2008 11:28

Item.SETRANGE("Item Category Code","Item Category".GETFILTER(Code));


Tausch doch mal das SetRange gegen ein SetFilter, das sollte dann eigentlich klappen.

Re: Filter bearbeiten nach SETRANGE beim Report aufruf

27. November 2008 11:41

Natalie hat geschrieben:Wie hast du den Pipe-Filter per Quelltext eingegeben?
Funktioniert auch
Code:
...SETFILTER(..., '%1|%2|%3', 'B0', 'B1', 'B2');
nicht?


hmm.

Ich starte einen Report (Prcessing Only) der auf Item Category basiert, also DatItem = Item Category,
dort gebe ich für das Feld Code den Filter 'B0|B1|B2' ein.

Im OnAfterGetRecord Trigger möchte ich einen weiteren Report aufrufen , dieser brauch den Code Filter zur weiteren Verarbeitung.

Mein Vorhaben ist es Inventur Auftraege automatisch zu generieren, für alle Artikelkategorien die vom Filter betroffen sind soll ein InventurAuftrag angelegt werden, und die passenden Artikel (gefiltert auf die Kategorie) gezogen werden.


Oh. McClane war schneller als ich ...

McClane hat geschrieben:
Item.SETRANGE("Item Category Code","Item Category".GETFILTER(Code));


Tausch doch mal das SetRange gegen ein SetFilter, das sollte dann eigentlich klappen.


Hmm. Tatsache, das funktioniert, :shock: , ... hmm warum habe ich das nicht schon ausprobiert?
Ich glaube das habe ich sogar probiert, aber dabei das Settableview nicht gesetzt.

Vielen Dank :-)

PS: Und wenn ich mir noch ein paar Gedanken mehr gemacht hätte, dann wüsste ich das ich den Filter gar nicht brauche, denn schliesslich sollen im InventurAuftragSubform nur die Artikel der Ausgewaehlten Artikelkategorie berechnet werden .... wenn ich den Filter nehme von dem hier die ganze Zeit die Rede ist, dann werden natürlich alle Artikel auf einmal gezogen :roll:

Ist ja bald Wochenende :mrgreen: Nochmals Danke ..