Einzelnen Beitrag anzeigen

Neuromancer

Registriert seit: 8. Aug 2003
62 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Objekt klonen (hier: TClientDataSet)

  Alt 23. Mai 2005, 15:17
Hallo,

die Lösung mag ein wenig weit hergeholt sein, aber wie wäre es mit einem Umstieg auf ADO?

Das ADODataSet kann (fast) alles, was das CDS auch kann, mit ganz wenigen Ausnahmen: ADT-Felder, Array-Felder und Nested Datasets, wobei ein Nested DataSet mit ca. 10 Zeilen Code sehr schnell nachprogrammiert werden kann.

Warum mein Vorschlag? Das ADODataSet besitzt eine Methode namens "Clone". Aus der Hilfe:

Zitat:
Mit Clone können Sie dem Recordset-Objekt der aufrufenden ADO-Datenmenge eine exakte Kopie des Recordset einer anderen TCustomADODataSet
-Komponente zuweisen. Verläuft die Operation erfolgreich, sind beide Recordsets identisch. Tritt ein Fehler auf, wird das Recordset-Objekt auf nil (Delphi) odr NULL (C++) gesetzt und eine EADOError-Exception ausgelöst.
Im Übrigen habe ich mit ADO weit bessere Erfahrungen als mit MyBase gemacht. Spätestens ab 20.000 Records fängt CDS nämlich an, kräftig zu lamen.
Mal abgesehen, dass, sobald MyBase mit BLObs arbeitet, es zu der lästigen Fehlermeldung "Im Datensatzpuffer befindet sich ein ungültiges BLOb-Handle" kommen kann, dessen Ursache ich bis heute noch nicht herausgefunden habe.

Und bevor jetzt hier in Massen die Augen gerollt werden: Nein, ADO muss nicht unbedingt an eine Connection sprich einen DB-Server geknüpft werden. Es kann durchaus - wie CDS auch - für sich alleine stehen. Alle Eigenschaften, mit der sonst immer so nett für für MyBase geworben wird, beherrscht ADO auch, und meiner Meinung nach sogar besser, umfangreicher und performanter (Speichern auf Platte, Speichern als XML-Datei usw.). Nur wissen das leider die wenigsten..

Und: Nein, ich arbeite nicht bei Microsoft...

Gruß
  Mit Zitat antworten Zitat