[GELÖST]Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 10:34

Guten morgen!

Ich programmiere gerade ein Lookup auf eine Form (von einer Tabelle wird der Lookup ausgeführt). Die gewünschte Form öffnet sich auch wunderbar und übernimmt meine Werte.

Ich möchte nun aber abfragen, aus welcher Spalte der Form ausgewählt worden ist. Damit möchte ich dann weiterarbeiten.

Beispiel:
Ich drücke den Lookup Button im Feld der Tabelle. Die Form geht auf und hat mehrere Spalten (Farbe, Geruch, Geschmack). Ich wähle "Blau" aus der Spalte "Farbe" aus. Jetzt soll aber nicht der Wert Blau übernommen werden, sondern ich möchte abfragen, welche Spalte man ausgewählt hat (In diesem Fall "Farbe").

Ist das in Navision irgendwie realisierbar?

Mein bisheriger Code im OnLookUp- Trigger:
Code:
recwahl.reset;
IF FORM.RUNMODAL(5167000,rec) = ACTION::LookupOK THEN BEGIn
  ...Welche Spalte ists?...
END;


Gruß,
jhe
Zuletzt geändert von jheATnav am 23. September 2009 17:07, insgesamt 1-mal geändert.

Re: Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 10:40

Ja, allerdings nicht ganz so einfach.
Du musst
  1. die Form über eine Variable deklarieren, damit du Zugriff auf die dort definierten Funktionen bekommst
  2. In der (LookUp-)Form eine Variable definieren, in welcher du dir merkst, auf welche Spalte der User geklickt hat.
  3. Im OnActivate-Trigger der einzelnen Spalten die Variable füllen
  4. über eine Funktion den Inhalt dieser Variablen zurückgeben
  5. in dem aufrufenden Code anschließend über die Funktion den Wert abfragen

Re: Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 15:43

Hab dein Vorschlag soweit umgesetzt, allerdings habe ich das Problem, dass der Rückgabewert der Funktion immer 0 ist, weil die Form nach dem LookupOK geschlossen wird und natürlich dann auch alle Variablen zurückgesetzt werden. :-|

Re: Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 15:50

jheATnav hat geschrieben:weil die Form nach dem LookupOK geschlossen wird und natürlich dann auch alle Variablen zurückgesetzt werden.

Stimmt nicht. Hast du die Form wirklich als Variable definiert? Ist die Rückgabefunktion drin?

Re: Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 16:18

Ich versuch mal den aktuellen Stand übersichtlich dazustellen:

Tabelle A (hier findet der Lookup statt):
Code:
rec.RESET;
IF FORM.RUNMODAL(5167000,rec) = ACTION::LookupOK THEN BEGIN
  message(FORMAT(test.übergebespalte());                     //Hier erhalte ich nicht den gewünschten Wert
END;
//test ist als Variable von der aufzurufenden Form deklariert


Form (Aufgerufene):
Code:
ÜbergebeSpalte() ausgewählt : Integer
ausgewählt := GIntAusgewählt;
//GIntAusgewählt wird in dem OnActivate-Trigger der Felder gesetzt


Hoffe dass das ausreicht ;)
Danke euch!

Re: Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 16:21

Wie Timo schon schrieb, musst du die Form mit einer Formvariable aufrufen, nicht mit FORM.RUNMODAL ...

Re: Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 16:25

Ok, meine Frage war falsch gestellt :-)

Du musst die Form auch verwenden. In etwa so:
Code:
clear(Test);
Test.SetRecord(DeinRec);
if test.runmodal=Action::LOOKUPOK then
  ...
Zuletzt geändert von McClane am 23. September 2009 17:00, insgesamt 1-mal geändert.

Re: Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 16:38

Ohje, typischer Anfängerfehler :)

Funktioniert soweit wie ich mir das vorgestellt habe. Allerdings ist jetzt das Problem, dass ich keinen OK- Button mehr auf der Form habe und dann auch keine Felder übergeben kann (eig schon ;) ).
Wie bekomm ich den wieder?

Re: Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 17:00

Test.Lookupmode:=true;

Re: Lookup;Wert aus ausgewählter Spalte verarbeiten

23. September 2009 17:07

McClane hat geschrieben:Test.Lookupmode:=true;


mercí :wink: