Hallo!
ich haben hier regelmäßig Probleme mit dem
normalen TClientDataSet und bekomme die Fehlermeldung:
Code:
Insufficient memory for this operation
Funktion: Dbclient.TCustomClientDataSet.InternalCheck (Zeile 0)
Adresse: [5112E08F]
Aufruf-Stack:
[5112E08A] Datasnap.Dbclient.TCustomClientDataSet.InternalCheck
[5113374A] Datasnap.Dbclient.TCustomClientDataSet.InternalPost
[511D4A5C] Data.Db.TDataSet.Post
Daraufhin habe ich das Dataset durch zwei unterschiedliche Komponenten testweise ersetzt:
- TFDMemTable (Firedac)
- kbmMemTable (Dritthersteller)
Bei einer Stichprobe funktionieren beide Komponenten ohne
Exception und beinhalten nach dem Auffüllen der Daten den gleichen Inhalt.
Geschwindigkeit der Ausführung und Speicherverbrauch sind ähnlich.
Wir nutzen (an dieser Stelle) das Dataset unabhängig von der Datenbank: erst erstellen wir Felddefinition mit (gängigen) Datentypen (Zahlen, Strings, große Memo-Felder)
und füllen dann die Werte im Programm. Sonst ist bei uns noch überall DbExpress im Einsatz (z.B. auch zur Datenbankverbindung), hier in diesem Fall würde aber (ohne große Umbauten) auch
scheinbar das Firedac Dataset funktionieren.
Hat hier jemand Erfahrungswerte oder einen Tipp, welche dieser Komponenten für diesen Zweck sinnvoller wäre? Oder lässt sich die Fehlermeldung im bestehenden Dataset
irgendwie vermeiden (ohne natürlich Felder wegzulassen)?