Hallo MrSpock,
gestern abend kurz vorm Einschlafen kam ich auf die Lösung:
Normalerweise wird das Feld ID_Link im BeforePost-Ereignis der Tabelle mit dem ID-Wert des übergeordneten Kundendatensatzes besetzt (sozusagen handgemachte Relationalität). Da in diesem speziellen Fall zu diesem Zeitpunkt die Kundentabelle geschlossen ist, ist der Wert, der in ID_Link geschrieben wird, eben 0.
Also wird zuerst die FieldByName...-Anweisung aus dem obigen Code ausgeführt und dann die aus der BeforePost-Routine.
Zur Lösung muss nur zum Zeitpunkt des Abspeicherns des Datensatzes im obigen Beispiel die Kundentabelle geöffnet sein und der Datensatzzeiger auf dem passenden Kundendatensatz stehen, den Rest erledigt die BeforePost-Routine.
Tja, das ist, denke ich, einer der Haken bei
OOP á la Delphi: In jeder Ecke kann ein Stück Code liegen, dass man längst vergessen hat, weil es ja seit längerem funktioniert, das aber dann zu undurchsichtigen Ereignissen führt.
Wie dokumentiert man eigentlich solchen Code?
Viele Grüsse
Frank