我正在使用BDE和平面表。
我有两个相同的表,tblOne
和tblTwo
我试图将数据从一个表复制到另一个表。不是整个数据库,只使用一个特定的记录:
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
。
答案 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
模式下重复使用。