Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.021 Beiträge
 
Delphi 12 Athens
 
#9

AW: FireDac CopyDataSet kopiert nicht den PK

  Alt 4. Aug 2015, 13: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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat