(gelöst) OnLookUp vorfiltern

23. März 2021 09:23

Hallo Forumsgemeinde,

ich bräuchte nochmal etwas Hilfestellung um eine per OnLookUp aufgerufene Tabelle vorzufiltern.
Die aufgerufene Tabelle beinhaltet eine vielzahl an Datensätzen bei denen in der Spalte Form mehrfach der selbe Eintrag vorkommen kann.
Ich bräuchte nun eine Möglichkeit wie ich beim Aufruf der Tabelle die angezeigten Datensätze so vorfiltere, das Anhand der Angabe in der Spalte Form jeder Eintrag nur 1 x angezeigt wird. (Siehe Anhang)

Den Aufruf führte ich so durch
Code:
IF Rec.Artikelform <> '' THEN
  recVARseitlicheAusfuehrung.SETRANGE(Artikelform, Rec.Artikelform);

IF Rec.Thickness > 0 THEN
  recVARseitlicheAusfuehrung.SETFILTER(Staerke, '<=%1', Rec.Thickness);

IF Rec.LaengeSeitlicheAusfuehrung_MAX > 0 THEN
  recVARseitlicheAusfuehrung.SETFILTER(Laenge_seitl_Ausfuehrung_max, '<=%1', Rec.LaengeSeitlicheAusfuehrung_MAX);

IF (Rec.SS_Spannflaeche_L <> '') AND (Rec.SS_Spannflaeche_R <> '') AND (Rec.SS_Spannflaeche_L = Rec.SS_Spannflaeche_R) THEN
  recVARseitlicheAusfuehrung.SETFILTER(Spannflaeche, Rec.SS_Spannflaeche_L);

IF PAGE.RUNMODAL(50069, recVARseitlicheAusfuehrung) = ACTION::LookupOK THEN BEGIN
  VALIDATE("seitliche Ausführung" , FORMAT(recVARseitlicheAusfuehrung."seitl. Ausfuehrung"));
END;



Kann mir jemand von Euch hier helfen?


Besten Dank!
Michael
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von fuige am 24. März 2021 15:10, insgesamt 1-mal geändert.

Re: OnLookUp vorfiltern

23. März 2021 20:02

Du könntest vor dem PAGE.RUNMODAL die gefilterten Datensätze in einer Schleife durchlaufen und die Datensätze, die Du anzeigen möchtest, gezielt mit der Satzmarke markieren (meineRecordVariable.MARK(TRUE). Und danach (aber vor dem PAGE.RUNMODAL) per Befehl meineRecordVariable.MARKEDONLY(TRUE) diesen versteckten Filter mitgeben. In der Page würden dann nur die Datensätze zu sehen sein, die Du mit der Satzmarke im Programmcode markiert hast.

Re: OnLookUp vorfiltern

24. März 2021 10:48

Hallo Jupiter,

hättest Du evtl. ein Code Beispel für mich wie das mit den Satzmarken zu realisieren ist?

Danke schon mal für den Ansatz!

Re: OnLookUp vorfiltern

24. März 2021 14:43

Ich vermute mal das ich eher mit einer temporären Tabelle arbeiten muss in welche ich beim Durchlaufen der REPEAT Schleife die Datensätze übertrage.
Dabei muss geprüft werden ob die TEMP Tabelle bereits einen Datensatz mit der "seitl. Ausführung" beinhaltet.
Wenn nicht, dann muss der Eintrag hinzugefügt werden.
Anschl. müsste mit dem onLookUp dann die TEMP Tabelle geöffnet werden welche jeweils nur noch einmal die Angabe "seitl. Ausführung" beinhaltet.
Wie das mit dem MARK Befehl funktionieren könnte erschließt sich mir aktuell noch nicht.

Bei der Lösung mit einer TEMP Tabelle versuche ich mich aktuell mit den Befehlen COPY oder TRANSFERFIELDS.
Hier bekomme ich bis jetzt aber leider auch noch keine Lösung hin.

Könnte mir hier jemand helfe wie das Thema anzugehen ist und evtl. ein Code Beispiel liefern.
Vielen Dank im Voraus!

Re: OnLookUp vorfiltern

24. März 2021 15:09

Ich habe mir nun mit der temporären Tabelle recTMPseitlicheAusfuehrung und dem befüllen genau dieser beholfen.
Für alle die mal wie ich vor diesem Thema stehen, hier als kleine Hilfe der Code.
Vielen Dank an Jupiter für die Hilfestellung!


Code:
IF recVARseitlicheAusfuehrung.FIND('-') THEN
  recTMPseitlicheAusfuehrung.INIT;
  REPEAT
    recTMPseitlicheAusfuehrung.SETRANGE("seitl. Ausfuehrung", recVARseitlicheAusfuehrung."seitl. Ausfuehrung");
    IF NOT recTMPseitlicheAusfuehrung.FINDFIRST THEN BEGIN
       recTMPseitlicheAusfuehrung := recVARseitlicheAusfuehrung;
       recTMPseitlicheAusfuehrung.INSERT;
    END;
    recTMPseitlicheAusfuehrung.RESET;     
  UNTIL recVARseitlicheAusfuehrung.NEXT = 0;


IF PAGE.RUNMODAL(50075, recTMPseitlicheAusfuehrung) = ACTION::LookupOK THEN BEGIN
  VALIDATE("seitliche Ausführung" , FORMAT(recTMPseitlicheAusfuehrung."seitl. Ausfuehrung"));
END;