Копирование записи из одной таблицы в другую не работает
Я использую 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...
Для этого все значения являются "нулевыми" для таблицы "Из таблицы".
После публикации я получаю пустую запись в tblTo
, Не удивительно, что все ценности нулевые.:)
Где я ошибаюсь при копировании данных? Это не делает его в функцию копирования.
Я был в этом в течение нескольких часов и не могу заставить его работать. Наверное, что-то простое я пропускаю. Я добавил параметр "var", чтобы увидеть, если это имеет какое-то значение, но это не так.
Кстати, я начинаю цикл с "1", а не с "0", так как первое поле в обоих файлах AutoInc
,
1 ответ
Вот как я бы это сделал:
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
Режим.