Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#8

AW: "Invalid BLOB handle in record buffer." bei 2. Durchlaufen der Datensätze

  Alt 5. Dez 2023, 17:04
BLOBS TO CACHE bezieht sich auf Blobfelder und nicht auf Datensätze.

99 Datensätze mit jeweils 6 Blobspalten / VarCharspalten ist bereits mehr als 512 Blobs im Cache.

Zuviel geht hier nicht in die Millionen oder zumindest Tausende, sondern in den Bereich von ein paar Dutzend. Genaugenommen eher fast schon lächerlich wenig.

Womit kommt denn Crystal Reports zurecht? Alles was "irgendwie" von TDataSet abgeleitet ist, was bei TTable, TQuery, TADOTable, TADOQuery, ... der Fall ist? Dann sollte es auch mit 'ner Memorytable funktionieren, unter Delphi 7 z. B. TClientDataSet.

Zitat:
Wie oben bereits erwähnt - wenn ich das Tail.Last() im OnOpen-Handler (oder auch im HeadAfterScroll) weglasse, passiert der Fehler nicht.
Wenn ich es mache, kommt der Fehler früher oder später bei Schleifen über die Detail-Datensätze oder einfach beim Scrollen im Grid, das die Detail-Datensätze darstellt...
Last holt sofort alle Sätze, deshalb passiert der Fehler sofort. Ohne Last passiert er beim Scrollen im Grid (oder in 'ner Schleife per Next) sobald die 512 Blobs überschritten sind.

Berechne mal die maximal vorkommende Anzahl von Datensätzen, multipliziere das mit der Anzahl der VarCharspalten (Alle!, unabhängig von der Größe). Die Summe nimmst Du dann mal 1,5 und trägst den Wert bei BLOBS TO CACHE ein. Ist das noch im zulässigen Bereich (wo ist der definiert?) oder klappt das dann damit oder treten andere Seiteneffekte auf? Oder dauert es zumindest länger bis der Fehler auftritt?

Die ADO-Komponenten funktionieren eigentlich (fast) wie die BDE-Komponenten. Eine Umstellung sollte hier recht einfach durchzuführen sein. Ein paar Attribute haben ähnliche Namen, aber grundsätzliche Probleme sollte es nicht geben.

Geändert von Delphi.Narium ( 6. Dez 2023 um 00:39 Uhr) Grund: Schreibfehler
  Mit Zitat antworten Zitat