Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: FireDac CopyDataSet kopiert nicht den PK

  Alt 4. Aug 2015, 15:44
Hallo Uwe,

ich konnte jetzt nachstellen das die Ursache wie du schon sagtest nicht CopyDataSet ist sondern FireDac und dessen Query.
Ich habe in meinem Code nachgeschaut wo ich CopyDataSet verwende.
Es ist immer so das ich ein DataSet über einen DataSnap Server bekomme
und diesen in einer MemTable oder direkt verarbeite. Ich schreibe
also nie über die Query in die DB. Deshalb hat es bis jetzt funktioniert.
Dass die Query mein übergebener PK einfach ignoriert war mir nicht
klar. Ich habe all die Jahre IBO verwendet und da ist es nicht so.
Wenn ich ein PK(AutoInc) Feld ein Wert übergebe, wird dieser auch zur
Datenbank transportiert, ansonsten feuert er selbst den Generator
unmittelbar vor dem Schrieben in die DB.

Das war jetzt für mich eine sehr sehr wichtige Lehrstunde.
Tausend Dank nochmals Uwe.



Delphi-Quellcode:
function TForm1.MyCopyDataSet(Qu,Zi:TFDQuery):Boolean;
var n:Integer;
begin
  Qu.First;
  while not Qu.Eof do
  begin
    Zi.Insert;
    for n:=0 to Qu.FieldCount-1 do
    begin
      Zi.FieldByName(Qu.Fields[n].FieldName).value := Qu.Fields[n].value;
    end;
    Zi.Post;
    Qu.next;
  end;
  result:=true;
end;
  Mit Zitat antworten Zitat