以下函式能讓你複製一筆記錄:

(*
 * 從資料表 Source 拷貝一筆記錄至 Destination
 * Destination 必須為 Edit 或 Insert 狀態
 * 複製每個欄位時會自動偵測目的資料表中是否存在該欄位
 * SkipFields 參數用來指定不要複製的欄位 (例如: PrimaryKey 欄位)
 *
 * Example: DbCopyRecord(Table1, Table2, 'CUST_NO;CREA_DATE');
 *)
procedure DbCopyRecord(Source: TBDEDataSet; Destination: TTable; 
  const SkipFields: String);
var
  i: integer;
  FldName: string;
  slSkipFields: TStrings;
begin
  if not (Destination.State in dsEditModes) then
    raise Exception.Create('資料集不是編輯狀態!');

  slSkipFields := TStringList.Create;
  try
    StrTokenToStrings(UpperCase(SkipFields), ';', slSkipFields);

    for i := 0 to Source.FieldCount-1 do
    begin
      FldName := Source.Fields[i].FieldName;     
      if slSkipFields.IndexOf(UpperCase(FldName)) >= 0 then
        continue;
      // 忽略目的資料集中沒有的欄位
      if Destination.FindField(FldName) = nil then
        continue;
      // 忽略唯讀的欄位
      if Destination.FieldByName(FldName).ReadOnly then
        continue;
      Destination.FieldbyName(FldName).Value := Source.Fields[i].Value;
    end;
  finally
    slSkipFields.Clear;
    slSkipFields.Free;
  end;
end;

    Source: geocities.com/huanlin_tsai/faq

               ( geocities.com/huanlin_tsai)