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.
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;
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
24. August 2009 11:24
Der Code läuft aber tatsächlich so, wie er da oben steht
24. August 2009 11:25
Meine NAV Version:
4.0 SP3
24. August 2009 11:30
Ich habe zwar nur Nav5, aber ein form.runmodal hat auch schon in 3.70 Parameter akzeptiert ...
24. August 2009 11:35
Schon - aber nur ohne Parameter...
24. August 2009 11:37
Glaube ich nicht. Hast du die Form als Variable definiert?
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?
24. August 2009 12:07
Das ist die gerechte Strafe, weil du nicht meinen Code genommen ist
Nee im Ernst: das sieht alles ganz funktionstüchtig aus, der Bock müsste woanders liegen
24. August 2009 12:31
OK - ich geb's ja zu ... ich hab nicht die ganze Wahrheit gesagt
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?!
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.
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?
24. August 2009 13:32
Muss ich das echt noch testen
Nein, keine weitere Idee, weil es bei mir funktioniert.
24. August 2009 13:36
Mit welchem Trigger?
24. August 2009 13:41
Irgendein belangloses Textfeld im Kopf->OnAfterValidate.
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?
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
24. August 2009 14:11
Stimmt - das ist mir unter den Tisch gefallen.
Damit klappt es!
Vielen Dank für deine geduldige Hilfe!
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.