Für mich schreit deine Aufgabenstellung geradezu nach einem Clientdataset und einem DB-Grid

Clientdatasets sind schnell und einfach zu erzeugen, lassen sich Prima Filtern
Alles, was du brauchst, wäre ein Clientdataset (Selbst erzeugt mit der gewünschten Struktur)
ein DB_Grid und eine Datasource.
Ablauf in etwa so:
1) Clientdataset erzeugen
Delphi-Quelltext
1: 2: 3: 4:
| FCds := TClientDataSet.Create(Self); fcds.FieldDefs.Add('Feldname', Feldtyp, (ggf. Feldlänge bei Strings)); ... CreateDataSet; |
2) Datei einlesen (ins Clientdataset natürlich)
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| (Pseudocode) while Poszeile aus Datei lesen FCDS.Append; FCDS.FieldByname('AUFTRAGSID').asInteger := lAuftragsnummer; ... FCDS.Post; |
3) Datasource mit Dataset verbinden
Delphi-Quelltext
1:
| ds_AuftragPos.dataSet := FCDS; |
4. Grid mit Datasource verbinden
Delphi-Quelltext
1:
| dbGrid1.Datasource := ds_AuftragsPos; |
Fertig.
Wenn du nun den Auftragskopf anzeigst, einfach das Clientdataset auf die Auftragsnummer filtern, fertig ist die Anzeige
Delphi-Quelltext
1: 2:
| FCDS.Filter = Format('AUFTRAGSID = %d', [lAuftragsnummer]; FCDS_Filtered := True; |
Die Auftragsköpfe würde ich natürlich auch in ein ClientDataSet einlesen, so dass man dem Kopf-CDS eine Afterscroll-Methode verpasst, in der die Pos-Filterung aufgerufen wird.
Nur so als meine '2-Cents', weiss ja nicht, wie fit du in Delphi bist bzw. ob deine Aufgabenstellung die verwendung von ClientDataSets zulässt.
Ich habe nichts gegen Fremde. Aber diese Fremden sind nicht von hier! (Methusalix)