[gelöst] Lookup inkl. Filter

29. Juli 2014 19:06

Hallo Community,
Ich habe in einer Page ein Feld mit einer TabelRelation zur Tabelle Item.
Das Form hat als SourceTable ebenfalls die Tabelle Item.
Ich starte die Page gefiltert durch eine Aktion die folgende Befehle ausführt:

Code:
Item_LT.RESET;
Item_LT.SETRANGE(...);
MyPage.SETTABLEVIEW(Item_LT);
MyPage.SETRECORD(Item_LT);
MyPage.RUN;


Nun möchte ich auf einem Controll/Feld auf MyPage ein LookUp realisieren, dass mir die Filterung anzeigt, mit der die Page auch geöffnet wurde (was erstmal kein Problem darstellt - da ich ja die Funktion "COPYFILTERS" zur Verfügung habe).

Ich möchte darauf hin in dem LookUp einen neuen Artikel auswählen, der dann der aktuelle Rec auf MyPage wird (inkl. durchlaufen des OnAfterGetRecord Triggers).

Ich habe folgenden Ansatz:
Code:
ItemNoNextRec_G - OnLookup(VAR Text : Text) : Boolean
Item_LT.RESET;
Item_LT.COPYFILTERS(Rec);

IF PAGE.RUNMODAL(31, Rec) = ACTION::LookupOK THEN
  ItemNoNextRec_G := Item_LT."No.";


Aber das funktioniert noch nicht so richtig - viel lieber wäre mir auch nicht das LookUp Form, sondern wie bei einer normalen TableRelation aussehen könnte (eben nur gefiltert).

Im Prinzip möchte ich nicht, wie ich es ja mit STRG+PageUP/PageDOWN kann zum nächsten Record springen sondern ich möchte zu dem Record springen, den ich aus der Übersicht ausgewählt hab.

Habt ihr eine Idee? Bzw könnt mir eine Page aus dem Standard sagen wo ich nachsehen könnte?

*EDIT*
Ich bin jetzt ein Stück weiter, indem ich einfach noch
Code:
CurrPage.UPDATE;

aufrufe - allerdings mit dem Ergebnis, dass daraufhin ein Confirm Dialog kommt mit der Frage ob ich den Datensatz umbennen will - was eigentlich nicht das Ziel ist.
Zuletzt geändert von ThomasM am 1. August 2014 13:45, insgesamt 1-mal geändert.

Re: Lookup inkl. Filter

31. Juli 2014 12:30

soweit ich weiß wird nach dem OnLookup kein OnAfterGetCurrRecord aufgerufen.

Re: Lookup inkl. Filter

31. Juli 2014 14:41

Hm, Ok, Danke.

Ich bin mir auch unsicher, ob mein Vorhaben umsetzbar ist - da ich immer auf die Nachfrage von NAV "Möchten Sie den Datensatz umbennen" stoße, wenn ich aus dem neuen Fenster einen anderen Datensatz für meine Page auswähle & anzeigen möchte (via CurrPage.UPDATE).
Umbenennen möchte ich den aktuellen Datensatz auf der Page nicht - ich will lediglich einen neuen Datensatz anzeigen. Dass muss doch irgendwie gehen. Hm

Re: Lookup inkl. Filter

31. Juli 2014 16:26

mit einem Find bzw. get kommste nicht weiter?

ist das dein ganzer Code im OnLookUp, den du da oben geschrieben hast?
Ich kann das Ganze noch nicht wirklich nachvollziehen :(

Re: Lookup inkl. Filter

1. August 2014 11:27

ist das dein ganzer Code im OnLookUp, den du da oben geschrieben hast?
Ich kann das Ganze noch nicht wirklich nachvollziehen :(


Also ich möchte mit Hilfe des OnLookup Triggers ein neues Fenster anzeigen aus welchem ich einen Datensatz auswählen kann.
Dieser dort ausgewählte, soll der aktuelle Datensatz meiner Page werden.

Grundsätzlich ginge das - da ich der Lookup Page ja "Rec" mitgeben kann. Somit wird der ausgewählte Datensatz bereits auf "Rec" gespeichert.
Sobald ich jedoch CurrPage.UPDATE; aufrufe will NAV den Datensatz in der Tabelle überschreiben, statt einfach die Daten die auf "Rec" sind anzuzeigen.
Das durch UPDATE getriggerte Überschreiben ist mein Problem.
Selbst ein FIND/GET würde mir nicht helfen, da ich die Daten ja trotzdem auf die Page "holen" müsste via UPDATE und dann wieder von NAV gefragt werde ob ich den Datensatz umbenennen will.

Ich möchte das gleiche Verhalten bewirken, wie STRG+PAGEDOWN/PAGEUP bewirkt. Nur eben mit einem ausgewähltem Datensatz und nicht dem Nächsten/Vorherigem.

Re: Lookup inkl. Filter

1. August 2014 11:51

Hallo,

du müsstest wahrscheinlich ein:
Code:
CurrPage.Update(false);


absetzen.

Wäre es aber nicht besser du gehst über die Liste in die Karte, so wie der ganze Standard im RTC?
Der User kann sich direkt aus der Liste den Datensatz auswählen und evtl. parallel mehrere Karten öffnen.
In der Liste schnell filtern.
Als vom Handling wäre es für den User besser. Alle Datensätze im Blickfeld.
Irgendwie versuchst du wieder den Classic Stand (Karte --> Liste) herzustellen:-)


Oder habe ich die Anforderung falsch verstanden?

Gruß
Aydin

Re: Lookup inkl. Filter

1. August 2014 13:45

aydina81 hat geschrieben:Hallo,

du müsstest wahrscheinlich ein:
Code:
CurrPage.Update(false);


absetzen.



Hatte ich schon versucht - dann wird der neue Rec jedoch nicht übernommen - eventuell wurden die Daten aber auch nur nicht neu berechnet wodurch die Änderungen in der Karte sichtbar wurden - eventuell hätte ich anschließend noch den Code im OnAfterGetRecord Trigger anstoßen müssen.

aydina81 hat geschrieben:Wäre es aber nicht besser du gehst über die Liste in die Karte, so wie der ganze Standard im RTC?
Der User kann sich direkt aus der Liste den Datensatz auswählen und evtl. parallel mehrere Karten öffnen.
In der Liste schnell filtern.
Als vom Handling wäre es für den User besser. Alle Datensätze im Blickfeld.
Irgendwie versuchst du wieder den Classic Stand (Karte --> Liste) herzustellen:-)


Oder habe ich die Anforderung falsch verstanden?

Gruß
Aydin


Grundsätzlich hast du natürlich recht - der Workflow ist im RTC eben List -> Karte. Da die Nutzer zumeist bequem sind, kam die Idee auf, die aus der Liste geöffnete Karte um ein Feld zu erweitern durch welches die Daten aus der darunterliegenden Liste erneut angezeigt werden und etwas einfacher neue Datensätze angezeigt werden können.
Ist irgendwie mit dem Messer in den Rücken durch die Brust. Aber ich denke, dass ist eher ein "Consulting" Thema und müsste den Nutzern mal ausgeredet werden :-)

Danke für deine Anmerkungen - die Anforderung hast du komplette richtig erfasst, und mir den richtigen Hinweis mit auf den Weg gegeben, das "Feature" weg zu diskutieren :-)

Danke! Thomas