Einlesen und Sortieren von Datenmenge > max. Array-Größe

  • Ich habe eine *.dbf Datei mit Kundendaten, deren erste Spalte die Kundennummer enthält aber leider nicht nach dieser sortiert vorliegt.


    Ich lese nun die Datensätze in ein Array ein und sortiere dieses über Sortierroutine (Quicksort) nach Kundennummer (für weitere Verarbeitung wichtig!). Soweit so gut.


    Jetzt bekomme ich einen "Overflow" beim Einlesen der Daten, da die max. Anzahl Datensätze die ein Array verarbeiten kann (> 32.000) überschritten wird.


    Habe versucht anstatt des Arrays mit Liste zu arbeiten. Diese kann alle Datensätze aufnehmen, aber die Verarbeitung (Sortierung) ist extrem langsam und nicht zumutbar.


    Hat jemand eine Idee wie ich die Daten performanter Einlesen und sortieren könnte bzw. wie ich die Daten eventuell schon in der dbf.-Datei mit Notesmitteln perfomant sortieren könnte?


    Vielen Dank im Voraus!


    Ralle

  • Du könntest für jeden Datensatz ein Dokument in einer separaten DB mit nur einer Ansicht erstellen. Diese Ansicht ist sortiert nach dem gewünschten Kriterium und möglichst einfach aufgebaut.


    Dann die Ansicht refreshen und die ViewEntries der Reihe nach auslesen.


    Ein Versuch ist es Wert.


    Gruss, Bernd

  • wie wäre es, wenn du eine verkettete Liste benutzt.


    z.B.

    Code
    type daten
    nummer as integer
    text as string
    end type 
    
    
    type datensatz
    next as variant
    daten as daten
    end type


    Ob das syntaktisch jetzt so richtig ist, kann ich grade nicht sagen ich suche noch, wo ich das schon mal gemacht habe. Aber theoretisch kann man es sicher schon mal als Denkansatz benutzen.


    Man kann nun eine Kette aufbauen, in der alle Datensätze gespeichert sind. Wenn man noch eine schöne Klasse darum baut, dann sortiert sich das ganze schon beim Anlegen automatisch.

    • Offizieller Beitrag

    der Arrayindex ist Integer und der kann auch negativ sein, d.h. Dein Array kann von -32768 bis +32768 gehen.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein