[GELÖST] GET auf gefilterten Record

16. November 2016 16:09

Hallo zusammen,

ich schätze einer von euch Profis wird diese Frage schnell beantworten können. ;-)

Wenn ich einen Record (Artikel) gefiltert habe - z.B. auf Produktgruppe - und anschließend ein GET auf diesen Record versuche, um abzuprüfen ob mein abzufragender Artikel "enthalten" ist, sollte das dann funktionieren? Tut es scheinbar nicht. Muss ich noch etwas beachten oder gibt es eine Alternativ-Lösung?

Vielen Dank & Viele Grüße
Zuletzt geändert von MoebelMeller am 17. November 2016 10:16, insgesamt 1-mal geändert.

Re: GET auf gefilterten Record

16. November 2016 16:50

GET berücksichtigt keine Filter. GET sucht in der gesamten Tabelle nach einem Datensatz, der deinen Primärschlüsselfelder-Angaben entspricht.
Möchtest du nur innerhalb der gefilterten Menge suchen, verwende FINDFIRST oder NOT ISEMPTY (je nachdem, ob du den Inhalt des zu suchenen Records später noch brauchst, oder nicht).

Re: GET auf gefilterten Record

16. November 2016 17:03

Hallo Natalie,

danke für die Antwort, gut zu wissen.
Das Problem ist, dass ich bereits auf den Primärschlüssel filtere, d.h. wenn ich z.B. folgende Artikelnummern habe:
123
124
125
234
235
236
...und dann auf 2* filtere, möchte ich später wissen, ob eine gewisse Artikelnummer, die ich später im Code "bekomme" innerhalb dieser Filterung existiert. D.h. wenn in diesem Beispiel 123 "kommt", hätte ich mit einem GET herausfinden wollen, ob die Artikelnummer enthalten ist.

Genauer gesagt geht es um einen Report, bei dem der User auf ein Artikel-DataItem filtern kann und ich in einem unabhängigen DataItem wissen muss, ob meine Artikelnummer angezeigt werden darf oder nicht. Ein ISEMPTY / FINDFIRST bringt mir an der Stelle leider nichts, da ich ja den Filter auf die Nummer überschreiben würde.

Vielen Dank & Viele Grüße

Re: GET auf gefilterten Record

16. November 2016 17:09

Eine Möglichkeit wäre dann, den Inhalt des Datasets in eine temporäre Instanz der Artikeltabelle zu kopieren und darauf dann das GET ausführen.

Re: GET auf gefilterten Record

16. November 2016 17:24

Das habe ich mir auch schon überlegt, aber unser Artikelstamm umfasst etwa 150.000 Artikel... Das wäre von der Performance nicht so schön. :-)

Re: GET auf gefilterten Record

16. November 2016 23:01

Wenn ich richtig verstanden habe, möchte man die Artikel einerseits per im Item-DataItem durch den Anwender gesetzten Filter filtern, andererseits die Artikel, die im Item-DataItem duchlaufen werden, nach gewissen per Programmierung gesetzten Filtern ausschließen. Wenn ja, dann muss man mit FILTERGROUP etwa folgendes machen:
1. Im Report eine globale Record-Variable für T.27 anlegen (z.B. namens ItemFilter).
2. im OnPreReport den im Item-DataItem gesetzten Filter in diese Variable kopieren (ItemFilter.COPYFILTERS(Item))
3. Im OnAfterGetRecord des Item-DataItems: locale record-Variable für T.27 anlegen (z.B. namens recLocalItem) und beim Durchlauf im OnAfterGetRecord folgende Prüfung per Programmierung ausführen:
Code:
recLocalItem.FILTERGROUP(10);
recLocalItem.COPYFILTERS(ItemFilter); // vom Anwender gesetzter Filter
recLocalItem.FILTERGROUP(11);
recLocalItem.SETRANGE("No.",'4711'); // zu prüfende Artikelnr. filtern
IF NOT recLocalItem.ISEMPTY THEN BEGIN
  // Artikel entspricht allen Filterkriterien
END;

Re: GET auf gefilterten Record

17. November 2016 10:15

Hallo Jupiter,

Hammer!!! Das wars --> Filtergroup. Funktioniert perfekt. :-D :-D
Vielen Dank für den Tipp!

Viele Grüße