AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ADODataSet als ClientDataSet verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

ADODataSet als ClientDataSet verwenden

Ein Thema von TheFrog · begonnen am 5. Aug 2009 · letzter Beitrag vom 5. Aug 2009
Antwort Antwort
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#1

ADODataSet als ClientDataSet verwenden

  Alt 5. Aug 2009, 10:48
Datenbank: FireBird • Version: 1.5 • Zugriff über: IBX-Komponenten
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:
  // Struktur erstellen
  AClientDataSet.Active := False;
  AClientDataSet.FieldDefs.Clear;
  AClientDataSet.FieldDefs.Assign(ADataSet.FieldDefs);

  // DataSet erstellen und öffnen
  AClientDataSet.CreateDataSet;
  AClientDataSet.Active := True;
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?

Merci, Hans.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: ADODataSet als ClientDataSet verwenden

  Alt 5. Aug 2009, 11:36
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: ADODataSet als ClientDataSet verwenden

  Alt 5. Aug 2009, 12:25
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:
    
  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;
Hans.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: ADODataSet als ClientDataSet verwenden

  Alt 5. Aug 2009, 13:31
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: ADODataSet als ClientDataSet verwenden

  Alt 5. Aug 2009, 14:27
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.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: ADODataSet als ClientDataSet verwenden

  Alt 5. Aug 2009, 15:23
Nee, dann natürlich nicht. Aber wieso dann eine TADODataset und kein TClientDataset?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ADODataSet als ClientDataSet verwenden

  Alt 5. Aug 2009, 15:34
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz