Autor Beitrag
Arnd
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Fr 26.07.02 10:42 
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:

ausblenden 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?
MrSpock
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 262



BeitragVerfasst: Fr 26.07.02 12:46 
Hallo Arnd,

OnCalcFields wird ja aufgerufen, um den Wert eines Feldes des aktuellen Datensatzes zu berechnen. Dabei darfst du nicht versuchen, die aktuelle Position in der Tabelle durch die Last - Anweisung zu ändern. Wenn es nötig ist in der Tabelle zu scrollen, musst du eine weitere Instanz anlegen, in der du dann blättern kannst.

_________________
Live long and prosper
MrSpock \\//