[Gelöst] Normale TextBoxes befüllen

24. Januar 2014 13:59

Hallo zusammen,

Ich habe mehrere normale Felder (keine FlowFields) die anhand einer TableRelation eines Feldes befüllt werden sollen. Jetzt weiß ich nur leider nicht, wie der Code dazu aussieht.

Mit den FlowFields ging das ja recht easy, die soll ich nur nicht mehr benutzen.. Jetzt ist halt die Frage, wie sieht der Code für mein Problem aus?

Hab bis vor wenigen Wochen gar nichts mit Dynamics NAV zutun gehabt, dementsprechend hoch sind meine Kenntnisse. :/

Danke für eure Hilfe!
LG
Zuletzt geändert von Wolfie am 12. Februar 2014 09:57, insgesamt 1-mal geändert.

Re: Normale TextBoxes befüllen

24. Januar 2014 14:29

also bist du sozusagen auf einer Form/Page

-> der OnValidate-Trigger der entsprechenden Textbox ist ja schonmal richtig.
darein schreibst du dann halt die globalen Variablen, die du den anderen Textboxen zugewiesen hast und weist denen dann die gewünschten Werte zu.

Damit bei einem Datensatzwechsel die eigenen Textboxen nicht mit den letzten Werten gefüllt werden, muss du noch im OnAfterGetRecord-Trigger die Variablen clearen.

Warum darfst du das eigentl. nicht mit FlowFields lösen?

Re: Normale TextBoxes befüllen

24. Januar 2014 14:34

Ja ich bin auf einer Form, und wähle dort eine Nummer (Debitronr.) aus, anhand der Nummer sollen dann Name, Adresse, usw. in andere Textboxes geschrieben werden.

Dann versuch ich jetzt mal deine Tipps umzusetzen, danke!

Ich weiß nicht warum, zuerst hieß es "Benutz FlowFields", dann plötzlich doch nicht.

Re: Normale TextBoxes befüllen

24. Januar 2014 14:55

naja - sind die Textboxen, die gefüllt werden sollen, mit einer Sourceexpr aus deiner Quelltabelle verbunden, oder sind diese mit globalen Variablen gefüllt?
wenn die Sourceexpr. auf die Quelltabelle verweist, dann wäre es besser, die Felder im OnValidate des Feldes Debitorennummer der Quelltabelle zu füllen, anstelle es auf der Form zu machen -> denn auf der Form (bei glob. Variablen) werden die etwaige Änderungen nicht gespeichert.

praktisch:
In der Tabelle:
* neue lok. Variable Cust vom DataType record und Subtype Customer
Code:
DebitorNr. - OnValidate
IF DebitorNr. <> '' THEN BEGIN
  Cust.GET(DebitorNr.)
  DeinNamesFeld :=  Cust.Name;
  //....
END;

Re: Normale TextBoxes befüllen

24. Januar 2014 15:13

sweikelt hat geschrieben:praktisch:
In der Tabelle:
* neue lok. Variable Cust vom DataType record und Subtype Customer
Code:
DebitorNr. - OnValidate
IF DebitorNr. <> '' THEN BEGIN
  Cust.GET(DebitorNr.)
  DeinNamesFeld :=  Cust.Name;
  //....
END;


Habs so gelöst! DANKE!! :D

Re: Normale TextBoxes befüllen

27. Januar 2014 09:28

Hallo,

wahrscheinlich weil du auf FlowFields nicht filtern kannst/solltest.


Gruß
Aydin

Re: Normale TextBoxes befüllen

27. Januar 2014 10:17

aydina81 hat geschrieben:Hallo,

wahrscheinlich weil du auf FlowFields nicht filtern kannst/solltest.


Gruß
Aydin


oder den Inhalt nicht unbedingt ändern solltest

Wolfie, bitte editiere noch deinen ersten Beitrag mit "[Gelöst]" in der Threadüberschrift.
Zuletzt geändert von sweikelt am 27. Januar 2014 10:19, insgesamt 1-mal geändert.

Re: Normale TextBoxes befüllen

27. Januar 2014 10:18

aydina81 hat geschrieben:Hallo,
wahrscheinlich weil du auf FlowFields nicht filtern kannst/solltest.

Filtern kann man schon, aber andere Lösungen sind u.U. performanter und verursachen weniger Berechnungsaufwand.

Ein Flowfield würde aber auch seinen Wert anhand der aktuellen Werte der datenliefernden Tabelle ändern, und das ist nicht immer gewünscht. Wenn man wie im Beispiel bei Kundendaten die Name,Adresse etc. ändert man und als Flowfield angelegt hat, dann ändern die sich in der datenziehenden Tabelle sofort automatisch mit. Das wäre z.B. beim Rechnungsdruck schon ungesetzlich, weil man die dann später nicht mehr unverändert nachdrucken kann, und hier auch keine einmaligen ggf. abweichenden Adressen verwenden könnte.

Ein Ausschlussgrund für Flowfields ist auch, dass sie nicht Teil eines Schlüssels sein können, man kann also nicht danach sortieren.