Einzelnen Beitrag anzeigen

SusiT

Registriert seit: 15. Mai 2014
29 Beiträge
 
#4

AW: Dataset ADOQuery in ein Clientdataset kopieren

  Alt 6. Okt 2023, 21:00
Nach ewigen probieren bin ich zu einer Variante gelangt die anscheinend funktioniert. Es ist mir allerdings ein totales Rätsel warum das so ist.
Delphi-Quellcode:
procedure TDataModule1.CopyDataSetToCDS(Source: TDataSet; var Dest: TClientDataSet; CloseSource: boolean);
var dsProvider: TDataSetProvider;
  I: Integer;
  a: Boolean;
begin
{GetText in der Source funktioniert nicht}
{Filter in der Source funktioniert}
dsProvider:=TDataSetProvider.Create(self);
try
 dsProvider.DataSet:=Source;

 a := Dest.Data = dsProvider.Data;

 Dest.SetProvider(dsProvider);
 Dest.Open;

finally FreeAndNil(dsProvider); end;
if CloseSource then Source.Close;
end;
end.
Wenn exakt an der Stelle oben im Code

 a := Dest.Data = dsProvider.Data; eingefügt wird, dann erhalte ich auch wie erwartet an folgender Stelle den Wert 17

a := cds1.RecordCount; Allerdings, die zugefügte Codezeile ergibt keinen Sinn.
Dest.Data ist an der Stelle immer null, a wird immer False.
trotzdem passiert irgendwas, dass dazu führt, dass im cds aufeinmal alle Daten drin sind.

Ich könnte auch

Delphi-Quellcode:
 if Dest.Data = dsProvider.Data then
 begin
 end;
ergänzen, das hat den selben positiven Effekt.

Ein Timingproblem scheint es nicht zu sein. Ich habe an der Stelle das Programm durch eine Schleife im Ablauf verzögert. Das hat nichts gebracht.

Tja, da weiß ich nicht weiter. Vermutlich fehlt irgendein Schritt mit dem Dest oder dem Provider, der durch die eingefügte Zeile im Hintergrund ausgelöst wird.

Viele Grüße und gute Nacht
  Mit Zitat antworten Zitat