[Gelöst] Problem mit Subform

14. Februar 2009 20:08

Hallo,

ich möchte eine Form erstellen, die mir eine Artikel anzeigt und in einer Subform die zugehörigen Zubehörteile. In der Subform sollen neue Teile durch Lookup in der Item Tabelle ausgewählt und zugeordnet werden können. Da die Subform, meines Wissens nach, leider keine Kenntnis von der ID des Artikels der Mainform hat, möchte ich in einer eigenen Tabelle (ID, Wert) unter ID=1 in Feld "Wert" die aktuelle ID des in der Mainform verwendeten Datensatzes speichern. Wie schreibe ich am einfachsten einen Wert in eine Tabelle? Ich habe es über den OnAftergetRecord Trigger versucht, erhalte aber nur die Fehlermeldung das vor dem Starten einer Transaktion ein Einfügen nicht möglich ist.

Weiss jemand eine Lösung?
Zuletzt geändert von ZimmerS am 15. Februar 2009 19:10, insgesamt 1-mal geändert.

Re: Problem mit Subform

14. Februar 2009 21:55

In einer Main-/SubForm sollte die SubForm (bzw. dessen Tabelle) immer den vollständigen Primärschlüssel der "Main-Tabelle" enthalten.
Da die SubForm somit in deinem Fall logischerweise auf die Artikelnr. gefiltert werden sollte, füllt NAV das Feld "Item No." deiner SubForm automatisch aus.
Somit ist dir in der Tabelle der zugehörige Hauptartikel bekannt.

Für weitere Informationen müsstest du uns jedoch verraten, ob du wirklich von einer Form oder von einer Page (oder sogar beidem) redest, da sich die Art der Umsetzung hier sehr stark unterscheidet.

Re: Problem mit Subform

14. Februar 2009 22:47

Hallo,

vielen Dank für die schnelle Antwort. Es handelt sich derzeit nur um ein Problem mit Forms.

Ich habe vereinfacht in der Subform-Tabelle die Felder "No.", "Item No. 1", "Item No. 2", wobei "Item No. 1" der Hauptartikel ist, und unter "Item No. 2" der Zuhörartikel verlinkt ist.

Wenn ich einen neuen Artikel anlege ist in der Tabelle "Item Assignment", in der ich die Zuordnung mache noch kein Eintrag vorhanden. Die Subform ist also noch leer. In der Subform wird "Item No. 1" nicht angezeigt, da diese Information an der Stelle überflüssig ist, da der Artikel ja in der Main Form angezeigt wird. Wenn ich jetzt einen neuen Artikel "Item No. 2" auswähle wird die Tabelle zwar ausgefüllt, aber "Item No. 1" bleibt leer.

Wie spreche ich jetzt "Item No." aus der Main Form an, um dies meinem Feld "Item No. 1" per Skript zuweisen zu können?

Re: Problem mit Subform

15. Februar 2009 14:30

Es ist zwar richtig, dass für den Anwender die Information des Hauptartikels in der SubForm-Zeile überflüssig ist, aber woher soll Dynamics NAV wissen, dass dieser Datensatz zu dem Hauptartikel gehört?
Genau aus diesem Grund sollte deine SubForm-Tabelle folgenden Primärschlüssel haben:
1. "Item No." -> Dein Hauptartikel
2. "Component Item No." -> Deine Komponentenartikel

In der SubForm brauchst du die "Item No." nicht einblenden, jedoch sollte das SubForm-Control (auf der MainForm) über das Property SubFormLink ein Filter auf die "Item No." gesetzt sein. ("Item No."=FIELD("No."))
Da die "Item No." Bestandteil des Primärschlüssels deiner SubForm-Tabelle ist, wird das Feld automatisch durch NAV mit dem Filterwert gefüllt und somit eine Verbindung zwischen der SubForm-Tabelle und der MainForm-Tabelle erstellt.

Re: Problem mit Subform

15. Februar 2009 16:51

ZimmerS hat geschrieben:Wie spreche ich jetzt "Item No." aus der Main Form an, um dies meinem Feld "Item No. 1" per Skript zuweisen zu können?

Lass Navision Standard für dich arbeiten, wie Timo beschrieben hat. Du brauchst keine zusätzliche Entwicklungen machen. Die richtig verknüpften Main und Subform werden sich 'verstehen' bzw. die SubForm wird von der MainForm gesteuert. Mach die Sache nicht komplizierter, als es notwendig ist. Beim Bedarf guck mal, wie es in Navision Standard funktioniert. Nimm ein beliebiges Formular mit einem SubFormular und bilde das nach.

Gruß, Michael

Re: [Gelöst] Problem mit Subform

15. Februar 2009 19:12

Hallo,

ich hatte ursprünglich den Primary Key auf eine ID gesetzt. Nach der Korrektur des Primary Keys auf "Item No. 1" und "Item No. 2" in der Tabelle funktioniert es einwandfrei.

Viele Dank für die tolle Hilfe.

Steffen