Ăśbergabe von Werten in Subform

Bild Microsoft Dynamics NAV 1.xx und 2.xx
(ehem. Navision Financials)

Ăśbergabe von Werten in Subform

Beitragvon JDA88 » 6. November 2006 14:28

Hallo Leute!

Hab ein Problem mit einer Aufgabe meines Arbeitgebers, fĂĽr euch wird das wahrscheinlich ein Leichtes sein, mir dabei zu helfen :oops:

Also ich habe eine Form und eine Subform. In der Form gibt es 2 Felder aus einer Tabelle, deren Wert, sofern man denn einen einträgt, in den selben Feldern der Subform erscheinen soll (es handelt sich um 2 Tabellen, Kopf und Zeile, welche beide die besagten 2 Felder enthalten). Habe es schon in den Properties unter SubFormLink probiert und da die beiden Felder angegeben aus Form und Subform, aber so recht will das noch nicht laufen :-(

Danke im Vorraus
JDA88
Benutzeravatar
JDA88
 
Beiträge: 33
Registriert: 13. Oktober 2006 12:03
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon rotsch » 6. November 2006 14:36

Es gibt keine Properties, die ein Übertragen von Werten aus einer Form auf die Subform übernehmen. Die Ausnahme bilden da die Felder, die im SubFormLink eingetragen sind und welche die Verbindung der Tabellen Form/SubForm definieren. In der Regel sind das Felder im Primärschlüssel der SubForm-Tabelle.

Wenn du andere Felder auf die Records im SubForm schreiben willst, sobald sich das entsprechende Feld im Form ändert, musst du das programmieren (z.B. auf dem OnValidate-Trigger des betroffenen Form-Feldes. Der Code gehört aber auf die Tabelle, nicht aufs Form)

Beispiel:
Code: Alles auswählen
SubFormRec.SETRANGE(Feld, FormRec.Feld);

IF SubFormRec.FIND('-') THEN REPEAT
   SubFormRec.Feld := irgendwas;
   SubFormRec.MODIFY;
UNTIL SubFormRec.NEXT = 0;
Gruss und besten Dank, Roger
Benutzeravatar
rotsch
Microsoft Partner
Microsoft Partner
 
Beiträge: 1703
Registriert: 8. März 2006 14:44
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: Ab Version 1.3 bis Aktuell

Beitragvon JDA88 » 6. November 2006 15:45

Also verstehe ich das richtig? Der Code kommt in das Feld der Table die in der (Haupt-)Form dargestellt wird?
Benutzeravatar
JDA88
 
Beiträge: 33
Registriert: 13. Oktober 2006 12:03
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon rotsch » 6. November 2006 16:01

Ja, du musst den Code auf dem Feld hinterlegen, das geändert wird durch den Benutzer und welches dann auf die Records im SubForm geschrieben werden soll.
Gruss und besten Dank, Roger
Benutzeravatar
rotsch
Microsoft Partner
Microsoft Partner
 
Beiträge: 1703
Registriert: 8. März 2006 14:44
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: Ab Version 1.3 bis Aktuell

Beitragvon JDA88 » 6. November 2006 16:31

Funktioniert noch nicht so ganz, so sieht der Quelltext zur Zeit aus:


gRecKundendienstzeile.SETRANGE("Feld", gRecKundendienstkopf."Feld");
IF gRecKundendienstzeile.FIND('-') THEN REPEAT
gRecKundendienstzeile."Feld" := gRecKundendienstkopf."Feld";
gRecKundendienstzeile.MODIFY;
UNTIL gRecKundendienstzeile.NEXT = 0;


Soweit richtig? Er zeigt in den Feldern der Subform aber nichts an!
Benutzeravatar
JDA88
 
Beiträge: 33
Registriert: 13. Oktober 2006 12:03
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon rotsch » 6. November 2006 16:36

JDA88 hat geschrieben:Soweit richtig? Er zeigt in den Feldern der Subform aber nichts an!


Ja, soweit richtig.

Was ist, wenn du auf der Hauptform blätterst? Siehts du dann die Werte? Und wenn die die Tabelle mit den Zeilen im ObjectDesigner anschaust, sind die Records gefüllt?
Gruss und besten Dank, Roger
Benutzeravatar
rotsch
Microsoft Partner
Microsoft Partner
 
Beiträge: 1703
Registriert: 8. März 2006 14:44
Bezug zu Microsoft Dynamics: Freiberufler
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: Ab Version 1.3 bis Aktuell

Beitragvon Michael Schumacher » 7. November 2006 05:39

DIe Abgrenzung der Zeile ist nicht ganz richtig.
so ist es besser:

Angenommen, der Kundendienstkopf hat nur "Nr." als Primärschlüssel und die KundendienstZeile die Felder "Nr." und "Zeilennr." dann:

Code: Alles auswählen
gRecKundendienstzeile.SETRANGE("Nr.", gRecKundendienstkopf."Nr.");
IF gRecKundendienstzeile.FIND('-') THEN REPEAT
gRecKundendienstzeile."Feld" := gRecKundendienstkopf."Feld";
gRecKundendienstzeile.MODIFY;
UNTIL gRecKundendienstzeile.NEXT = 0;

Wenn es mehrere Schlüsselfelder gibt, musst du den Setrange für alle Zeilenfelder machen, die im Kopf als Primär-Schlüssel definiert sind wie z.B. bei Salesheader und Salesline (Verkaufskopf und Verkaufszeile)
dort musst du z.B.
zeile.setrange(dokumenttyp,kopf.dokumenttyp);
zeile.setrange("dokumentennr.",kopf."nr.");
verwenden.
mfg
Michael Schumacher


Frage beantwortet? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Hmmm, ach heut' ist Backup-Tag, also alles schnell nach /dev/nul sichern!
Benutzeravatar
Michael Schumacher
Ehrenmitglied
 
Beiträge: 1762
Registriert: 1. August 2005 11:12
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 3.x, 4.x, 5.x


ZurĂĽck zu NAV 2.xx

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast