[gelöst]Feld dynamisch füllen

29. August 2011 08:39

Guten Morgen,

ich soll innerhalb einer Form ein neues Feld Beschreibung 2 anlegen und dieses dynamisch füllen.
Ich hatte mir jetzt gedacht, dass ich das über OnAfterGetRecord versuchen könnte.
Ist die Idee sinnvoll, oder gäbe es andere Möglichkeiten, dies besser zu gestalten?


Grüße

Sky
Zuletzt geändert von Sky am 2. September 2011 10:20, insgesamt 1-mal geändert.

Re: Feld dynamisch füllen

29. August 2011 08:54

Sprichst du bei diesem neuen Feld nur von einer Information, welche nur auf der Form sichtbar ist, oder von einem echten Tabellenfeld?

Re: Feld dynamisch füllen

29. August 2011 08:56

Von einer echten Information, der Inhalt soll also auch beim Drucken etc. sichtbar sein.


Grüße

Sky

Re: Feld dynamisch füllen

29. August 2011 09:03

OnAfterGetRecord ist ein Form-Trigger. Dieser sollte nur für Dinge "an der Oberfläche" verwendet werden.
Sofern deine Lizenz es zulässt (leider steht in deinem Profil nicht, ob du End-Benutzer oder Partner bist), solltest du das Feld in der Tabelle selbst füllen. Wo genau, hängt davon ab, womit du es füllen möchtest.
Hier bieten sich z.B. die OnValidate-Trigger der anderen Felder oder der OnInsert-Trigger an.

Re: Feld dynamisch füllen

29. August 2011 09:59

Jep meine Lizenz lässt das zu =)
Es wurde halt nur extra betont, dass das Feld dynamisch befüllt werden soll. Ob das zwingend die sinnvollste Idee ist, weiß ich nicht, da ich aber sehr unerfahren im Arbeiten mit NAV bin, wollte ich das einfach so wie gewünscht realisieren.

Re: Feld dynamisch füllen

29. August 2011 11:29

Hi Sky,

jeder fängt einmal klein an:-)

Durch ausprobieren und testen lernst du es am schnellsten.

Die Frage ist nur, wann soll das Feld denn dynamisch gefüllt werden. Also wenn der User was eingibt (dann nimm den OnVAlidate Trigger vom Feld) oder bei jedem Datensatz (OnAftergetRecord) schon vorher.


Gruß
Aydin

Re: Feld dynamisch füllen

29. August 2011 13:25

aydina81 hat geschrieben:oder bei jedem Datensatz (OnAftergetRecord) schon vorher.


Dem ist, wie Natalie bereits geschrieben hat, nicht so. Richtig wäre der OnInsert-Trigger. Der OnAfterGetRecord-Trigger wird dann durchlaufen, wenn der Datensatz auf der Form angezeigt wird. Da will man doch nicht erst das Feld füllen (vor allem jedes mal was zu enormen Perfomance-Einbrüchen führt).

Es kommt letztlich auf den Inhalt des Feldes an welches es annehmen soll. Wenn zum Beispiel das Feld Informationen erhalten soll, welche in anderen Feldern verfügbar sind, dann muss der OnValidate-Trigger des verwendeten Feldes benutzt werden.

Re: Feld dynamisch füllen

29. August 2011 13:50

Sebastian Pfliegel hat geschrieben:
aydina81 hat geschrieben:oder bei jedem Datensatz (OnAftergetRecord) schon vorher.


Dem ist, wie Natalie bereits geschrieben hat, nicht so. Richtig wäre der OnInsert-Trigger. Der OnAfterGetRecord-Trigger wird dann durchlaufen, wenn der Datensatz auf der Form angezeigt wird. Da will man doch nicht erst das Feld füllen (vor allem jedes mal was zu enormen Perfomance-Einbrüchen führt).


OnInsert wird doch nur aufgerufen, falls ein Datensatz angelegt wird, oder nicht?

Es kommt letztlich auf den Inhalt des Feldes an welches es annehmen soll. Wenn zum Beispiel das Feld Informationen erhalten soll, welche in anderen Feldern verfügbar sind, dann muss der OnValidate-Trigger des verwendeten Feldes benutzt werden.


Und OnVAlidate nur dann wenn Änderungen stattfinden. Vielleicht will man schon vorher das Feld gefüllt haben?:-)


Gruß Aydin

Re: Feld dynamisch füllen

29. August 2011 15:31

Das eine schließt das andere ja nicht aus, oder? ;) Heißt du kannst OnValidate und OnInsert nutzen. Es kommt eben auf die Information an die gespeichert werden soll. Eins kann ich dir aber sagen: OnAfterGetRecord wird es mit ziemlich sehr hoher Wahrscheinlichkeit nicht sein, da dieser Trigger wie gesagt beim Zugriff auf den Datensatz (über Form) erfolgt.

Re: Feld dynamisch füllen

29. August 2011 16:07

Kann es sein, dass der eine von euch eine Variable mit einer Info, und der andere ein Tabellenfeld füllen will? Dann haben nämlich beide Recht :roll:

Re: Feld dynamisch füllen

29. August 2011 16:15

Sky hat geschrieben:Von einer echten Information, der Inhalt soll also auch beim Drucken etc. sichtbar sein.

Ich geh von Tabellenfeld aus ;)

Re: Feld dynamisch füllen

29. August 2011 16:16

McClane hat geschrieben:Kann es sein, dass der eine von euch eine Variable mit einer Info, und der andere ein Tabellenfeld füllen will? Dann haben nämlich beide Recht :roll:


Natalie hat geschrieben:Sprichst du bei diesem neuen Feld nur von einer Information, welche nur auf der Form sichtbar ist, oder von einem echten Tabellenfeld?


Sky hat geschrieben:Von einer echten Information, der Inhalt soll also auch beim Drucken etc. sichtbar sein.


Wie ist deine Interpretation? :-)

Re: Feld dynamisch füllen

29. August 2011 16:56

Sky hat geschrieben:Guten Morgen,

ich soll innerhalb einer Form ein neues Feld Beschreibung 2 anlegen und dieses dynamisch füllen.
Ich hatte mir jetzt gedacht, dass ich das über OnAfterGetRecord versuchen könnte.
Ist die Idee sinnvoll, oder gäbe es andere Möglichkeiten, dies besser zu gestalten?



Ich ging von einer Variable mit einer Info aus, sonst würde die Anforderung ja heißen, erstelle sie ein neues Feld in der Tabelle und nicht in der Form. Was dazu führen würde, dass das Feld auch in Form einzublenden wäre. Dann halt je nachdem wo und wie man es dynamisch befüllen will.

Und wieso sollte man ein Tabellenfeld dynamisch befüllen, somahl es Beschreibung 2 heißt:-)
(Was nicht heißen soll, es geht nicht. Macht für mich nur keinen Sinn:-))

Gruß
Aydin
Zuletzt geändert von aydina81 am 29. August 2011 17:04, insgesamt 4-mal geändert.

Re: Feld dynamisch füllen

29. August 2011 16:57

*würfel* Ich tippe auf Variable :wink:

Re: Feld dynamisch füllen

29. August 2011 17:05

Sind die Würfeln schon gefallen? :lol:

Re: Feld dynamisch füllen

30. August 2011 00:54

Alea iacta est? (Ich gebe zu in meiner Kundheit Asterix&Obelix Comics gelesen zu haben ;-) )

Re: Feld dynamisch füllen

31. August 2011 08:10

Guten Morgen zusammen.

Erstmal Entschuldigung, dass ich mich erst jetzt melde, die letzten beiden Tage waren etwas stressig. Dann nochmal vielen Dank für eure rege, teilweise sogar mehrsprachige, Beteiligung ;)

Ich versuche jetzt gerade das ganze mit einer Variable hinzubiegen. Ich würde gerne in diese Variable die Werte aus einer anderen Form schreiben. Ist dies Möglich?

Re: Feld dynamisch füllen

31. August 2011 09:13

Hi,

sind die Werte aus der anderen Form Tabllenwerte?

Ansonsten kannst du dir mal anschauen wie die Werte in die Form kommen, von der du ablesen willst. Dann versuchst du es genau so:-)

Gruß
Aydin

Re: Feld dynamisch füllen

31. August 2011 09:23

Sky hat geschrieben:Ich würde gerne in diese Variable die Werte aus einer anderen Form schreiben.

Du meinst wahrscheinlich Tabelle. Und ja, das ist möglich. Du musst einen Record-Datentyp den Wert aus dem gewünschten Datensatz suchen und dann der Variable zuweisen.

Re: Feld dynamisch füllen

31. August 2011 09:32

Sebastian Pfliegel hat geschrieben:Du musst einen Record-Datentyp den Wert aus dem gewünschten Datensatz suchen

Falls du (also Sky ;-)) Hilfe dazu brauchst: viewtopic.php?f=19&t=8341
Voraussetzung ist, dass du weißt, wie man die passende Recordvariable anlegt.

Re: Feld dynamisch füllen

31. August 2011 10:07

Also den Record generell schein ich schon zu kriegen, jedoch greife ich irgnedwie nur auf das erste Element zu..

Code:
Item.RESET;
Item.FINDSET;
Var:=Item."Description 2";

Re: Feld dynamisch füllen

31. August 2011 10:17

Sky hat geschrieben:Also den Record generell schein ich schon zu kriegen, jedoch greife ich irgnedwie nur auf das erste Element zu..

Code:
Item.RESET;
Item.FINDSET;
Var:=Item."Description 2";


Vergleich mal, was ggü. dem Codestück hier fehlt? viewtopic.php?f=19&t=8341#FIND
Aber selbst wenn du alle durchläufst - was genau möchtest du nun in Var speichern?

Re: Feld dynamisch füllen

31. August 2011 11:12

Ich habe keinen anständigen Filter gesetzt, weswegen ich automatisch beim ersten Datensatz bleibe.
Eigentlich soll in die Variable die der Zeile zugehörige Description 2 geschrieben werden.

Re: Feld dynamisch füllen

31. August 2011 11:30

Verstehe ich das richtig?
Du hast eine Form mit SourceTable Item.
Hier willst du jetzt das Feld "Description 2" anzeigen?

Wenn das der Fall ist, schau dir doch einmal an wie das Feld Descrption angezeigt wird.
Es ist eine Textbox mit SourceExpression Description bzw. Rec.Description.
Das Feld "Description 2" hast du also eh im Zugriff, du musst es nur noch anzeigen lassen.

Hast du eine andere Sourcetable, in der z.B. die "Item No." vorhanden ist, kannst du dir, sofern das nicht schon geschehen ist, mit Item.GET("Item No.") den richtigen Datensatz holen.

Allerdings würde ich dir Nahe legen zumindestens einmal die Schulungshandbücher zu besorgen und zu lesen.

Re: Feld dynamisch füllen

31. August 2011 11:41

Ganz so einfach ist es dann (glaube ich auf jeden fall) doch nicht.
Ein solches Feld wäre ja statisch, oder? Und mir wurde extra gesagt, dass das Feld dynamisch sein soll.

Kannst du spezielle Bücher zu Navision empfehlen?