[Gelöst] Feldauswahl soll weitere Felder automatisch füllen

27. November 2015 17:01

Hallo, ich hab das Thema bereits in einem anderen Thread kurz angesprochen (war aber ein anderes Problem). Ich habe eine Tabelle mit einem Feld ItemNo.. Dieses Feld bekommt über ein LookUp (Relation auf ItemTable Tabelle) die Nummer des Items. Was ich jetzt erreichen möchte ist, das wenn ich diese Nummer auswähle, automatisch weitere Felder wie z.B. Model gefüllt werden. Die Model Bezeichnung soll aus dem LookUp Select erfolgen. Folgenden Code habe ich auf dem Feld ItemNo. - OnValidate() implementiert:

Globale Variable: itemTableModel (Record) (Subtype = ItemTable)

Code:
IF itemTableModel.GET(itemTableModel."No.") THEN BEGIN
  Model := itemTableModel.Model;
END
ELSE BEGIN
  MESSAGE('GET = False');

END;


Leider ist die GET Funktion immer false. Bin mir nicht sicher ob mein Code überhaupt so funktionieren kann bzw. wo der Fehler liegt. In der ItemTable ist auch ein Wert vorhanden. Als Primärkey in der Tabelle ItemTable ist auch das Feld No. eingetragen.
Zuletzt geändert von cid am 2. Dezember 2015 21:30, insgesamt 1-mal geändert.

Re: Feldauswahl soll weitere Felder automatisch füllen

27. November 2015 18:11

Du machst das GET mit einem Wert aus der gleichen Tabelle...

Es müsste heißen:
IF Tabelle2.GET(Tabelle1."No.") THEN ...

Das Übergeben der Felder kann man dann so machen wie du das vorgesehen hast. Man könnte aber auch FlowFields verwenden.
Zuletzt geändert von enh am 27. November 2015 18:13, insgesamt 1-mal geändert.

Re: Feldauswahl soll weitere Felder automatisch füllen

30. November 2015 17:49

Danke für die Antwort. Ich habe deine Lösung auch gleich ausprobiert. Habe das wie folgt abgeändert:

Code:
IF GET(itemTableModel."No") THEN BEGIN
  Model := itemTableModel.Model;
END
ELSE BEGIN
  MESSAGE('GET = False');

END;


Ich verstehe noch nicht ganz, wann das GET ein true ergibt? Ich habe das so verstanden, das sobald ich einen Wert auswähle und weiterspringe, die IF Bedingung überprüft wird und sich den Wert aus Tabelle "itemTableModel."No." holt. Wird dieser Wert mit dem ausgewähltem Wert verglichen?

Bezüglich der Flowfields, hättest du dazu ein Beispiel für mich?

Vielen Dank

Re: Feldauswahl soll weitere Felder automatisch füllen

1. Dezember 2015 00:11

cid hat geschrieben:Ich verstehe noch nicht ganz, wann das GET ein true ergibt? Ich habe das so verstanden, das sobald ich einen Wert auswähle und weiterspringe, die IF Bedingung überprüft wird und sich den Wert aus Tabelle "itemTableModel."No." holt. Wird dieser Wert mit dem ausgewähltem Wert verglichen?


GET ist dann TRUE wenn es in der Tabelle in der du prüfst den Eintrag den du suchst gibt.

if Tabelle2.get(Tabelle1.No) then...
-> mit dem Feld "No" des Datensatzes aus Tabelle 1 suchen wir in Tabelle2, dort wird "No" im Primärschlüssel gesucht, der passenderweise nur aus einem Feld bestehen sollte (sonst müsstest du filtern und FIND statt GET verwenden).

cid hat geschrieben:Bezüglich der Flowfields, hättest du dazu ein Beispiel für mich?


zu den FlowFields...

enh hat geschrieben:Das Feld aus der zweiten Tabelle ist dort nicht im Primärschlüssel, wenn ich das richtig verstanden habe. Das ist dann das Problem.

Beispiel:
Tabelle1
Felder: Feld1, Feld2, Feld3
Feld2 TableRelation Tabelle2.Feld2

Tabelle2
Felder: Feld1, Feld2,Feld3
Primärschlüssel: Feld2

Feld3 in Tabelle1 könnte dann ein FlowField sein mit CalcFormula = Lookup(Tabelle2.Feld3 WHERE (Feld2=FIELD(Feld2)))

Beispielhaft kann man das z. B. in Tabelle 17 bei Feld 76 nachschauen:
Lookup("G/L Account".Name WHERE (No.=FIELD(G/L Account No.)))

Re: Feldauswahl soll weitere Felder automatisch füllen

2. Dezember 2015 21:30

Habe das Problem mit FIND lösen können. Danke für den Hinweis!
Die grundlegenden Informationen habe ich mir aus dem folgenden Thread geholt: http://www.msdynamics.de/viewtopic.php?t=8341