[Gelöst] Lesen von Datensätzen anderer Tabelle über Record

5. März 2009 15:13

Hallo Kollegen,

ihr wißt bestimmt gleich eine Antwort auf meine Frage, so wie ich euch kenne.

Ich habe eine neue Tabelle erstellt mit einer neuen Form. In der Form greife ich selbstverständlich auf die Felder der neuen Tabelle zu,
möchte aber noch Datensätze aus einer anderen Tabelle auslesen. So bin ich vorgegangen (aber irgendwas fehlt noch, denke ich):

Ich habe in der Form eine neue Variable vom Typ Record angelegt und ein Feld über den Record (also die andere Tabelle) in der Form hinterlegt.

Das Feld bleibt jedoch immer leer, obwohl da auf jeden Fall zu dem Datensatz was drin steht. Ich frage mich, wie ich die Verknüpfung zwischen beiden Tabellen setzen muß.
Ich habe ein eindeutiges Feld, dass es auch in der anderen Tabelle gibt. Dieses Feld heißt in beiden Tabellen gleich und bildet gleichzeitig den Schlüssel.

Vielen Dank im voraus für Eure Hilfe.

Gruß
Phil
Zuletzt geändert von Phil am 30. März 2009 13:42, insgesamt 1-mal geändert.

Re: Lesen von Datensätzen einer anderen Tabelle über Record

5. März 2009 15:29

Phil hat geschrieben:Ich habe ein eindeutiges Feld, dass es auch in der anderen Tabelle gibt. Dieses Feld heißt in beiden Tabellen gleich und bildet gleichzeitig den Schlüssel.

Im OnAfterGetRecord-Trigger der Form muss ein GET auf die andere Tabelle mit diesem Primärschlüsselwert erfolgen.

Auf Feldwerte aus anderen Tabellen kann allerdings dann nicht wie üblich mit F7 gefiltert werden.

Siehe auch hier.

Re: Lesen von Datensätzen einer anderen Tabelle über Record

5. März 2009 16:12

Hallo Kowa,

danke für deine Antwort.

Ich habe in OnAfterGetRecord bereits ein GET schon gehabt. So sah es bei mir aus: if LotInfo.GET("Lot No.") Then;

Allerdings funktioniert das nicht. Die angezeigten Felder der anderen Tabelle über den Record werden nicht angezeigt,
obwohl der Schlüssel wie erwähnt der gleiche ist. Der Schlüssel ist die "Lot No.".

Darüber hinaus gibt es noch weitere Schlüssel, aber ich denke, diese spielen in diesem Fall keine Rolle, oder?
Ich verstehe das irgendwie garnicht.

In anderen Fällen funktioniert der Zugriff auf andere Tabellen über GET, aber in diesem Fall nicht.

Vielleich habt ihr noch eine Idee (?)

Grüße
Phil

Re: Lesen von Datensätzen einer anderen Tabelle über Record

5. März 2009 16:34

Durch das IF vor dem GET wird nur versucht den Datensatz zu finden, offensichtlich nicht erfolgreich.
"Lot No." muss in diesem Fall das einzige Primärschlüsselfeld in der LotInfo - Tabelle sein.
Die anderen Schlüssel sind für den GET nicht relevant.
Falls die andere Tabelle die 6505 Lot No. Information ist, die hat z.B. einen dreifeldrigen Primärschlüssel, wo alle Werte im GET mitgegeben werden müssen.
Lass das IF mal weg , dann muss ja eine Fehlermeldung kommen, die vermutlich weiterhift.

Re: Lesen von Datensätzen einer anderen Tabelle über Record

5. März 2009 17:54

Hallo Kai,

es handelt sich in der Tat um die Tabelle 6505 Lot No. Information und mit meinem GET erscheint beim Öffnen der Form diese Fehlermeldung:

Die Chargennr. - Information existiert nicht.
Identifizierende Felder und Werte:
Artikelnr.='C000670',Variantencode='', Chargennr.=''

Heißt das, mein Primärschlüssel in der neuen Tabelle ist falsch?
Der Schlüssel lautet: Lot Type,Lot No.

Grüße
Phil

Re: Lesen von Datensätzen einer anderen Tabelle über Record

5. März 2009 19:24

So klappt das in diesem Fall natürlich nicht, weil nur einer von drei Werten als Parameter vorhanden ist und der steht auch noch an der falschen Stelle. So wird hier die Chargennr. als Artikelnr. übergeben.

In diesem Fall muss der GET dann so ausssehen.
Code:
IF LotInfo.GET("Item No.","Variant Code","Lot No.") THEN;


"Item No." und "Variant Code" müssen dabei natürlich bekannt sein, also entweder in deiner neuen Tabelle vorhanden sein oder wenn nicht, vor der GET Ausführung aus anderen Tabellen geholt worden sein. "Item No." ist dabei zwingend notwendig, "Variant Code" natürlich nur wenn auch Varianten vorhanden sind. Sonst diesen leer lassen, aber "Lot No." muss auch dann an die dritte Stelle.