Hallo, vielleicht könnt ihr mir helfen...
Ich habe folgendes Problem. Ich habe eine Haupttabelle, indiziert nach dem ersten Feld, alphanumerischer, 9 Zeichen langer String.
In den Detailtabellen finden sich mehrere Datensätze zu jedem Datensatz in der Haupttabelle (1:n). Für mich entscheidend ist immer nur der letzte Datensatz der Detailtabelle. Von diesem möchte ich ein bzw. zwei Feld(er)in berechneten Feldern der Haupttabelle darstellen.
Das Problem: Bisher habe ich versucht in der Ereignis-Methode OnCalcFields dies folgendermaßen zu lösen:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| Table2.Last; // Detailtabelle 1 Table3.Last; // Detailtabelle 2 Table1Field1.AsInteger := Table2.Fields[1].AsInteger; Table1Field2.asInteger := Table3.Fields[1].AsInteger; Table1Field3.AsInteger := Table3.Fields[1].AsInteger;
{Ich habe hier meine Bezeichnungen in allgemeine umgewandelt, um keine Verwirrungen zu stiften. Wichtig ist vielleicht noch, dass es sich um Paradox-Tabellen handelt, und keine Workarounds mit ADO, Interbase etc. gebastelt werden sollen.} |
Wenn ich so vorgehe, ergibt sich das Phänomen, dass die berechneten Felder immer den zugehörigen Detaildatensatz des vorhergehenden Hauptdatensatzes ausgeben.
Vielleicht als Beispiel:
Der Haupt-Datensatz mit dem indizierten Feld und Inhalt "A00119466" hat als Datensatz in der ersten Detailtabelle als letzten Datensatz einen Wert
von 4 und in der anderen Detailtabelle die Werte 1 und 7.
Der folgende Hauptdatensatz ("A00127823") sollte in der ersten Detailtabelle den Wert 2 und in der andern Detailtabelle die Werte 3 und 3. In den berechneten Feldern werden mir jedoch zum Datensatz "A00127823" die Werte aus dem vorhergehenden also einmal 4, und dann 1 und 7 berechnet. Dieses Phänomen ist für andere Detailtabellen und für andere Datensätze reproduzierbar.
Die entscheidende Frage:
Was habe ich falsch gemacht?