Aslo ich kann mich Performance nur anschlie0en: Am Besten die Dokumente nach Kto sortieren. Dann haben wir nur noch ein klassisches Problem der Datenverarbeitung vor uns: den bei allen Azubis so beliebten "Gruppenwechsel". = "Erzeuge ein Doc anhand der Kontonummer und schreibe solange Daten in dieses Dok, bis sich die Kto.-Nr ändert."
ein GetDocumentByKey über die Kontonummer dürfte bei ungeortneten Daten aber auch ganz gut machen, da sich ja die anzahl der Dokumente drastisch reduziert.
Ein anderer Ansatz wäre aber auch, wie es in der klassischen Datenverarbeitung üblich war, eine sog. "Schnelldrehertabelle"
Dabei geht man folgendermaßen vor.
Die Tabelle ist ein Array mit sagen wir einmal dim 10.
Der erste Datensatz wird gelesen und ein Dok anhand der Kto.-Nr erzeugt ; das Dol bleibt aber im Speicher
Nächster Datensatz lesen und anhand der Tabellöe prüfen, ob es bereits ein Dok mit der Nr. gibt.
Wenn nicht, neues Dok erzeugen; wenn ja, Daten in geöffnetes Dok schreiben.
Das geht dann solange, bis das Arrax voll ist, also 10 geöffnete Dokumente da sind.
Kommt jetzt ein Dokument, das in der Tabelle nicht vorhanden ist, wird das Dokument, das zu diesem Zeitpunkt die wenigsten "Treffer" hatte geschlossen.
Damit erhälst du dann eine Art Top 10 der Kto.-Nr. und du hast die Dokumente, die vile treffer haben immer im Speicher.
Ist ein Dok nicht in der Tabelle, muß natürlich auch gesucht werden, ob das Dok nicht schon gespeichert wurde.
Hab ich mal als Prüfungsaufgabe bei der IHK Essen 1995 gestellt ( COBOL ); spannende Ergebnisse
Ulrich