[Gelöst] Lookup-Funktion in Bestellformular

24. August 2009 10:10

Hallo alle!

Ich stehe vor einem Problem, das ihr vermutlich im Vorbeigehen lösen würdet.

Ich möchte im Formular' Einkaufsbestellung' (ID 50) per Klick auf einen Button das Formular 'Einkaufsübersicht' (ID 53) anzeigen. Dort sollen nur die Bestellungen beim dem Lieferanten der aktuellen Bestellung gelistet werden.
Der User soll dann von dort aus per Doppelklick oder OK auf die gewünschte Einkaufsbestellung im Einkaufsbestellformular springen können (Form 53 soll wieder geschlossen sein).

Wie mache ich das am besten?
Danke schon mal für eure Hilfe!

LG Gerald
Zuletzt geändert von BadGer am 24. August 2009 14:11, insgesamt 1-mal geändert.

Re: Lookup-Funktion in Bestellformular

24. August 2009 10:34

Irgendwie so (OnPush):
Code:
PurchaseHeader.SetRange("Document Type","Document Type");
PurchaseHeader.SetRange("Buy-from Vendor No.","Buy-from Vendor No.");
if form.runmodal(0,PurchaseHeader)=Action::LookupOK then
  begin
    SetRange("No.",PurchaseHeader."No.");
    findfirst;
    SetRange("No.");
  end;

Re: Lookup-Funktion in Bestellformular

24. August 2009 11:15

Hi!

Danke für die rasche Hilfe!

Hab mit dem Code folg. Problem:
RUNMODAL nimmt keine Parameter an.

LG Gerald

Re: Lookup-Funktion in Bestellformular

24. August 2009 11:24

Der Code läuft aber tatsächlich so, wie er da oben steht :-?

Re: Lookup-Funktion in Bestellformular

24. August 2009 11:25

Meine NAV Version:
4.0 SP3

Re: Lookup-Funktion in Bestellformular

24. August 2009 11:30

Ich habe zwar nur Nav5, aber ein form.runmodal hat auch schon in 3.70 Parameter akzeptiert ...

Re: Lookup-Funktion in Bestellformular

24. August 2009 11:35

Schon - aber nur ohne Parameter...

Re: Lookup-Funktion in Bestellformular

24. August 2009 11:37

Glaube ich nicht. Hast du die Form als Variable definiert?

Re: Lookup-Funktion in Bestellformular

24. August 2009 11:50

Ich hab jetzt folg. Code drin:
Code:
lrePurchaseHeader.RESET;
lrePurchaseHeader.SETRANGE("Document Type","Document Type"::Order);
lrePurchaseHeader.SETCURRENTKEY("Buy-from Vendor No.");
lrePurchaseHeader.SETRANGE("Buy-from Vendor No.",gcoVendorNo);
lrePurchaseHeader.SETRANGE(Status,lrePurchaseHeader.Status::Open);

IF (lrePurchaseHeader.FINDSET = TRUE) THEN BEGIN
  CLEAR(lfoPurchaseList);
  lfoPurchaseList.SETTABLEVIEW(lrePurchaseHeader);
  lfoPurchaseList.SETRECORD(lrePurchaseHeader);
  lfoPurchaseList.LOOKUPMODE(TRUE);
  IF (lfoPurchaseList.RUNMODAL = ACTION::LookupOK) THEN BEGIN
    lfoPurchaseList.GETRECORD(lrePurchaseHeader); 

    SETRANGE("Document Type",lrePurchaseHeader."Document Type");
    SETRANGE("No.",lrePurchaseHeader."No.");
    FIND('-');
    SETRANGE("Document Type");
    SETRANGE("No.");
  END;
END;

Allerdings springt das Form nur im Kopf dorthin - das Subform mit den Zeilen wird nicht aktualisiert.
Warum?

Re: Lookup-Funktion in Bestellformular

24. August 2009 12:07

Das ist die gerechte Strafe, weil du nicht meinen Code genommen ist :wink:

Nee im Ernst: das sieht alles ganz funktionstüchtig aus, der Bock müsste woanders liegen :-?

Re: Lookup-Funktion in Bestellformular

24. August 2009 12:31

OK - ich geb's ja zu ... ich hab nicht die ganze Wahrheit gesagt :wink:

Ich habe keinen Button am Form, sondern eine Textbox. In die wird per Barcode-Scanner eine Lieferantennummer geschrieben. Beim OnValidate Trigger habe ich den Code dann ausgeführt.
Mit dem oben beschriebenen Effekt.

Nun habe ich den Code per Button aufgerufen - da funktioniert es.

Warum?!

Re: Lookup-Funktion in Bestellformular

24. August 2009 12:51

Mal geraten: pack den Code in den OnAfterValidate und ein CurrForm.Update(false) dazu. Falls das hilft: noch besser in eine eigene Funktion, die du von da aufrufst.

Re: Lookup-Funktion in Bestellformular

24. August 2009 13:21

Funktioniert leider nicht.
Habe es auch in OnLookup, OnDeactivate und OnAfterInput probiert - immer der gleiche Effekt.
Nur aus dem Button heraus funktioniert es.

Hast du noch 'ne Idee?

Re: Lookup-Funktion in Bestellformular

24. August 2009 13:32

Muss ich das echt noch testen :wink:

Nein, keine weitere Idee, weil es bei mir funktioniert.

Re: Lookup-Funktion in Bestellformular

24. August 2009 13:36

Mit welchem Trigger?

Re: Lookup-Funktion in Bestellformular

24. August 2009 13:41

Irgendein belangloses Textfeld im Kopf->OnAfterValidate.

Re: Lookup-Funktion in Bestellformular

24. August 2009 13:57

Hab's jetzt in einer Cronos-DB probiert:
Mit Button springt er zum richtigen Datensatz und aktualisiert das Subform.
Mit Textbox im Kopf und im OnAfterValidate zeigt es zwar die Daten des richtigen Datensatzes an, überschreibt aber scheinbar tatsächlich nur die Feldinhalte. Drückt man zB Strg-Bild nach oben, kommt die Abfrage "Wollen Sie den Datensatz wirklich umbenennen?".

Bei dir ist das sicher nicht so?

Re: Lookup-Funktion in Bestellformular

24. August 2009 14:06

Das könnte daran liegen, dass du kein CurrForm.Update(false) hast.

ich hab´s eben noch mit deinem Code getestet, das klappt auch :?:

Re: Lookup-Funktion in Bestellformular

24. August 2009 14:11

Stimmt - das ist mir unter den Tisch gefallen.
Damit klappt es!

Vielen Dank für deine geduldige Hilfe!