[Gelöst] Daten anderer Tabellen in mein Formular übernehmen

22. Juli 2008 11:10

Hallöchen,
bin Student in der Diplomphase und nun mit dem Thema "betraut" worden, ein kleines Versandformular zu entwickeln um unseren Warenausgang zu vereinfachen. Hab auch schon ne "Designschulung" verpasst bekommen, aber wenn ich mal bischen tiefer in die Navision-Entwicklung gehen will, verlassen mich da die bekommenen Fähigkeiten. Deshalb bin ich hier auf euer schönes Forum gestoßen, in welchem ich hoffentlich Antworten auf meinen Wissensdurst bekomm. :lol:

Zu meinem Problem:
Als erste Infos brauch ich natürlich ne Adresse zum Verschicken. Diese soll händisch eingetragen werden sollen, oder aber aus der Kontaktliste ausgewählt werden. Hab dazu ne entsprechende Tabelle+Formular angelegt.
Wenn ich jetzt aber nen vorhanden Kontakt ausgewählt hab (über nen Lookup auf das Kontaktübersichtsformular) krieg ich zwar (logischerweise) die Kontaktnummer in mein Formular übernommen, aber wie kann ich die restlichen Felder dann automatisch füllen lassen (Firmenname,Adresse, PLZ, ...) ?

Grüße
enno

Edit: sory, jetz war ich vor lauter Aufregung noch im falschen Forum ... könnt das mal ein mod ins NAV5.0-forum schieben? danke
Edit: Erledigt!
Gruß, Natalie
MSDynamics.de-Team
Zuletzt geändert von enno am 22. Juli 2008 16:30, insgesamt 1-mal geändert.

22. Juli 2008 12:09

Wie wäre es mit der Kont. Nr. dann auf den ensprechenden Kontakt zu Filtern und in deine Felder einzutragen?

22. Juli 2008 13:57

Im OnValidate der Text Box greifst du auf die Kontaktdaten zu.
Mit GET oder über einen Filter. Das abhängig vom Primärkey deiner Kontakttabelle.
Anschließend weist du den Felder in deinem Versandformular die Daten zu.
Also:
Name := Kontakt.Name;
Straße := Kontakt.Straße;
Ort := Kontakt.Ort;
usw.

Gruss

22. Juli 2008 16:29

Danke für die schnelle Hilfe ... klappt soweit ganz gut.

Falls neue Fragen auftauchen meld ich mich wieder :oops:

24. Juli 2008 13:25

so ... muss nochmal kurz den thread nutzen für 2 kleine problemchen, für welche ich nicht unbedingt nen neuen Thread anlegen möchte ... ich hoffe, auch wenn hier gelöst steht, schaut nochmal kurz einer vorbei 8-)

Frage 1: Ich hab (nach der Anleitung hier) mal ne Nummernserie für mein Formular erstellt. Klappt soweit Prima. Allerdings muss ich immer auf die 3 Pünktchen hinter dem Feld gehn, und die Nummernserie anklicken, damit er mir ne Nummer "zieht". Würde aber gern automatisch ne Nummer ziehen, wenn ich in dem leeren Feld stehe und mit Tab ins nächste springe (so wie das in anderen Formularen üblich ist). Da kommt bei mir noch ne Fehlermeldung, dass ich nicht manuell Nummern vergeben darf.

Frage 2: Ich wollt ein (etwas größeres) Bemerkungsfeld auf dem Formular haben, in das der Nutzer bischen Text eintragen darf. Hab jetzt ne Textbox genommen und größer aufgezogen und dachte, dass das Property MultiLine (Yes) genau meinem Wunsch entspricht. Tut es aber leider nicht, dass Feld hat immer nur noch eine Zeile und der Cursor rutscht dann quasi nach rechts aus der Box ...

Grüße
enno

24. Juli 2008 13:43

enno hat geschrieben:Frage 1: Ich hab (nach der Anleitung hier) mal ne Nummernserie für mein Formular erstellt. Klappt soweit Prima. Allerdings muss ich immer auf die 3 Pünktchen hinter dem Feld gehn, und die Nummernserie anklicken, damit er mir ne Nummer "zieht". Würde aber gern automatisch ne Nummer ziehen, wenn ich in dem leeren Feld stehe und mit Tab ins nächste springe (so wie das in anderen Formularen üblich ist). Da kommt bei mir noch ne Fehlermeldung, dass ich nicht manuell Nummern vergeben darf.

Du musst dich am Standard orientieren, Beispiel Artikelkarte:
Die gesamte Nummernserien-Programmierung befindet sich auf der Tabelle Item:

OnInsert
Code:
IF "No." = '' THEN BEGIN
  GetInvtSetup;
  InvtSetup.TESTFIELD("Item Nos.");
  NoSeriesMgt.InitSeries(InvtSetup."Item Nos.",xRec."No. Series",0D,"No.","No. Series");
END;


No. - OnValidate
Code:
IF "No." <> xRec."No." THEN BEGIN
  GetInvtSetup;
  NoSeriesMgt.TestManual(InvtSetup."Item Nos.");
  "No. Series" := '';
END;


InvtSetup."Item Nos." musst du natürlich durch deine Nummernserie ersetzen.

Frage 2: Ich wollt ein (etwas größeres) Bemerkungsfeld auf dem Formular haben, in das der Nutzer bischen Text eintragen darf. Hab jetzt ne Textbox genommen und größer aufgezogen und dachte, dass das Property MultiLine (Yes) genau meinem Wunsch entspricht. Tut es aber leider nicht, dass Feld hat immer nur noch eine Zeile und der Cursor rutscht dann quasi nach rechts aus der Box ...
MuliLine macht sich erst bemerkbar, wenn du Leerzeichen verwendest. Wenn du die Textbox verlassen hast, wird der Text dann optisch auf Zeilen verteilt.

25. Juli 2008 12:10

Vielen Dank schonmal ... dass mit MultiLine klappt ja wirklich ... sieht nur ein wenig komisch aus, wenn der Cursor beim schreiben so groß ist, wie die Textbox :lol:

Zum Thema Nummernserie: Hab mich wie gesagt am Standard orientiert: hab das beispiel hier ausm Forum genommen und auch schon mehrmals mit anderen Tabellen verglichen. Wie gesagt: die Funktion an sich wird ja gut erfüllt (er zieht quasi ne nummer, wenn ich im Feld auf die 3 Punkte geh und meine Nummer anklick), nur automatisch wills noch nicht klappen, wenn ich das Feld "leer" lasse ... dachte ja, dass vielleicht irgendwo ein kleines Häkchen fehlt, aber muss ich wohl wohl oder übel weitersuchen ...

25. Juli 2008 13:47

enno hat geschrieben:hab das beispiel hier ausm Forum genommen und auch schon mehrmals mit anderen Tabellen verglichen.

Welches Beispiel meinst du?

25. Juli 2008 13:58

Natalie hat geschrieben:Welches Beispiel meinst du?


Hier http://www.msdynamics.de/viewtopic.php?t=1795 ist ne Nummernserienverwaltung mit dabei ... verlinkt aber extern, aber das meinte ich :wink:

25. Juli 2008 14:33

Veröffentliche bitte deinen Quelltext, speziell im OnInsert-Trigger deiner Ziel-Tabelle (nicht Form!). Mein Verdacht ist, dass du auf Tabellen des Beispiels verweist und nicht auf deine Zieltabelle.

25. Juli 2008 15:44

kannst du haben :lol:

der OnInsert:
Code:
IF "Shipping ID" = '' THEN BEGIN
  GetShippingSetup;
  ShippingSetup.TESTFIELD("Shipping Nos.");
  NoSeriesMgt.InitSeries(ShippingSetup."Shipping Nos.",xRec."No. Series",0D,xRec."Shipping ID","No. Series");
END;


und OnValidate:
Code:

IF "Shipping ID" <> xRec."Shipping ID" THEN BEGIN
  GetShippingSetup;
  NoSeriesMgt.TestManual(ShippingSetup."Shipping Nos.");
  "No. Series" := '';
END;


dazu noch AssistEdit:
Code:
GetShippingSetup;
ShippingSetup.TESTFIELD("Shipping Nos.");
IF NoSeriesMgt.SelectSeries(ShippingSetup."Shipping Nos.",xRec."No. Series","No. Series") THEN BEGIN
  NoSeriesMgt.SetSeries("Shipping ID");
  EXIT(TRUE);
END;


und die zusätzliche Funktion (hab ich nachträglich eingebaut, da die in der Item-Tabelle glaub ich auch drin war und ich schauen wollte, obs damit klappt)

GetShippingSetup()
Code:
IF NOT HasShippingSetup THEN BEGIN
  ShippingSetup.GET;
  HasShippingSetup := TRUE;
END;


grüße und ein schönes WE falls wir uns nicht mehr "sehen"

25. Juli 2008 16:42

Ich finde einen Unterschied im Trigger OnInsert:
So stehts bei dir:
Code:
NoSeriesMgt.InitSeries(ShippingSetup."Shipping Nos.",xRec."No. Series",0D,xRec."Shipping ID","No. Series");

So sollte es heißen:
Code:
NoSeriesMgt.InitSeries(ShippingSetup."Shipping Nos.",xRec."No. Series",0D,"Shipping ID","No. Series");


Ein sehr kleiner, aber feiner Unterschied ;-)

28. Juli 2008 08:25

Wer lesen kann ist klar im Vorteil :lol:

... Vielen Dank Natalie, jetz klappts super ...