Im Navision ist es ganz einfach möglich ein einfaches LookUp zu machen. Will man jedoch mehrere Datensätze selektieren, muss man einige Anstregungen unternehmen. Am LookUp-Formular muss folgende Funktion hinterlegt werden:
PROCEDURE SetSelection(myRec : Record) BEGIN CurrForm.SETSELECTIONFILTER(myRec); END;
Der aufrufende Code könnte dann so aussehen:
myRec.RESET; myRec.DELETEALL; myForm.SETTABLEVIEW(myRec); myForm.LOOKUPMODE(TRUE); IF myForm.RUNMODAL = ACTION::LookupOK THEN BEGIN myForm.SetSelection(myRec); myRec.MARKEDONLY := TRUE; // Do something with the marked Records END;Tags: dynamics-nav, lookup, Navision
Nachtrag aus aktuellem Anlass: An dieser Stelle muss man stark aufpassen! SetSelectionFilter hat eine böse Ausnahme. Wenn man keinen Datensatz markiert oder mit Strg+A alle, dann setzt SetSelectionFilter die Satzmarken nicht.
Das führt zu dem Problem, dass man nicht weiß, ob der User nur einen Datensatz oder alle selektiert hat. Das ist sehr schlecht….
Comment by Steffen Forkmann — Tuesday, 24. October 2006 um 15:39 Uhr
Vielen Dank für die Anleitung.
Jedoch habe ich hier eine Kleinigkeit nachzutragen:
Alt:
PROCEDURE SetSelection(myRec : Record)
BEGIN
CurrForm.SETSELECTIONFILTER(myRec);
END;
Neu
PROCEDURE SetSelection(VAR myRec : Record)
BEGIN
CurrForm.SETSELECTIONFILTER(myRec);
END;
Anderenfalls werden die Markierungen nicht in den myRec der aufrufenden Section übernommen.
Viele Grüße
Chrom
Comment by Chrom — Wednesday, 14. December 2011 um 16:07 Uhr