Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
Delphi 12 Athens
|
AW: FireDac CopyDataSet kopiert nicht den PK
4. Aug 2015, 14:08
So sollte es sowohl mit Integer als auch BigInt gehen (auch ohne coStructure):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
fld: TField;
begin
fld := FDQuery2.FieldByName('KONTAKTID');
PrepareAutoIncField(fld);
FDQuery2.CopyDataSet(FDQuery1, [coRestart, coAppend, coEdit]);
RestoreAutoIncField(fld);
FDQuery2.refresh;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
fld: TField;
begin
fld := FDQuery4.FieldByName('KONTAKTID');
PrepareAutoIncField(fld);
FDQuery4.CopyDataSet(FDQuery3, [coRestart, coAppend, coEdit]);
RestoreAutoIncField(fld);
FDQuery4.refresh;
end;
procedure TForm1.PrepareAutoIncField(AField: TField);
begin
if AField is TFDAutoIncField then begin
(AField as TFDAutoIncField).IdentityInsert := true;
end
else begin
AField.AutoGenerateValue := TAutoRefreshFlag.arNone;
AField.ProviderFlags := [pfInUpdate, pfInWhere, pfInKey];
end;
end;
procedure TForm1.RestoreAutoIncField(AField: TField);
begin
if AField is TFDAutoIncField then begin
(AField as TFDAutoIncField).IdentityInsert := false;
end
else begin
AField.AutoGenerateValue := TAutoRefreshFlag.arAutoInc;
AField.ProviderFlags := [pfInWhere, pfInKey];
end;
end;
|
|
Zitat
|