将记录从一个表复制到另一个表不起作用

时间:2013-03-17 21:03:08

标签: delphi delphi-5 bde tdataset

我正在使用BDE和平面表。 我有两个相同的表,tblOnetblTwo 我试图将数据从一个表复制到另一个表。不是整个数据库,只使用一个特定的记录:

function Tdm.CopyRecord(var tblFrom,tblTo : TTable) : Boolean;
var
  i : Integer;
begin
  Result:=False;
  try
    tblTo.Insert;
    for i:=1 to tblFrom.FieldCount-1 do
    begin
      if tblFrom.Fields[i].FieldName = tblTo.Fields[i].FieldName then
        tblTo.Fields[i].Value:=tblFrom.Fields[i].Value;
    end;
    tblTo.Post;
    Result:=True;
  finally
  end;
end;

if CopyRecord(tblOne,tblTwo) then...

单步执行此所有值对于From Table来说是“Null”。

发布后,我在tblTo添加了空白记录。所有的价值观都不足为奇。 :)

我在复制数据时出错了?它没有进入复制功能。

我已经在这里工作了几个小时而无法使其发挥作用。我可能看起来很简单。我添加了“var”参数,看看是否有任何区别但是没有。

哦,顺便说一句,我从“1”而不是“0”开始循环,因为两个文件中的第一个字段是AutoInc

1 个答案:

答案 0 :(得分:4)

我将如何做到这一点:

function CopyRecord(tblFrom, tblTo: TTable; const StartIndex: Integer=0): Boolean;
var
  i: Integer;
  FieldFrom, FieldTo: TField;
begin
  Result := False;
  for i := StartIndex to tblFrom.FieldCount - 1 do
  begin
    FieldFrom := tblFrom.Fields[i];
    FieldTo := tblTo.FindField(FieldFrom.FieldName);
    if Assigned(FieldTo) then
    begin
      FieldTo.Value := FieldFrom.Value;
      Result := True;
    end;
  end;
end;

我不会在tblTo.Insert方法中使用tblTo.Post / CopyRecord 。而是在外面使用它,例如:

tblTwo.Append;
if CopyRecord(tblOne, tblTwo, 1) then
  tblTwo.Post
else
  tblTwo.Cancel;

这也可以在Edit模式下重复使用。