![]() |
Datenbank: FireBird • Version: 1.5 • Zugriff über: IBX-Komponenten
ADODataSet als ClientDataSet verwenden
Hallo zusammen,
ich versuche gerade ein TADODataSet als ClientDataSet zu verwenden. Ich möchte die Daten, sowie die Struktur einer Query übernehmen. Dabei ist meine Ausgangskomponente eine TIBQuery (was sich aber auf ein TDataSet reduzieren lässt). Die Struktur habe ich durch folgenden Code übernommen:
Delphi-Quellcode:
Nun habe ich die Frage, wie ich die Werte aus dem DataSet, sprich die Datensätze übernehmen kann. Gibt es hier eine ähnliche Möglichkeit wie beim ClientDataSet über einen Provider alle Daten auf einmal zu übernehmen, oder muss ich Datensatz für Datensatz übernehmen?
// Struktur erstellen
AClientDataSet.Active := False; AClientDataSet.FieldDefs.Clear; AClientDataSet.FieldDefs.Assign(ADataSet.FieldDefs); // DataSet erstellen und öffnen AClientDataSet.CreateDataSet; AClientDataSet.Active := True; Merci, Hans. |
Re: ADODataSet als ClientDataSet verwenden
Nun ja, im Endeffekt werden die Datensätze ja eh sequentiell übernommen. Ob Du das nun machst, oder eine Methode das übernimmt, ist dann wurscht.
|
Re: ADODataSet als ClientDataSet verwenden
So hab's ich auch implementiert, ich dachte nur es müsste eine elegantere Lösung geben, analog zum Midas-ClientDataSet.
Hier meine Implementierung:
Delphi-Quellcode:
Hans.ADataSet.First; while not ADataSet.Eof do begin AClientDataSet.Append; // Feldwerte übernehmen for i := 0 to ADataSet.Fields.Count - 1 do AClientDataSet.Fields[i].Value := ADataSet.Fields[i].Value; AClientDataSet.Post; ADataSet.Next; end; |
Re: ADODataSet als ClientDataSet verwenden
Du könntest das noch in einer Transaktion kapseln. Dann geht es schneller. Falls auf der Ziel-DB noch andere arbeiten, solltest Du z.B. alle 100-1000 Datensätze ein 'Commit' durchführen.
|
Re: ADODataSet als ClientDataSet verwenden
Ich benutze mein ADODataSet rein als ClientDataSet, sprich als temporäre Memory-Table, d.h. dieses wird nicht an eine DB gebunden. Ich denke, dann bringt mit auch die Transaktion in diesem Fall nichts.
Merci, Hans. |
Re: ADODataSet als ClientDataSet verwenden
Nee, dann natürlich nicht. Aber wieso dann eine TADODataset und kein TClientDataset? :gruebel:
|
Re: ADODataSet als ClientDataSet verwenden
Weil ich da den großen Vorteil habe, dass ich mich nicht mit der MidasLib, Midas.dll, usw. rumschlagen muss. Damit hatte ich des öfteren schon Schwierigkeiten.
Und das TADODataSet funktioniert hervorragend für diese Zwecke. Hans. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz