Копирование записи в пределах одной и той же таблицы

Необходимы два TTable, связанные с одной таблицей. Когда Table1 позиционируется в копируемой строке, с помощью Table2 вы можете выполнить операцию добавления записи. Пример: {только для демонстрации идеи, пример может быть нерабочим}

procedure TForm1.Button1Click(Sender: TObject);
var

i: Cardinal ;
srcStream: TBlobStream ;
begin
try
with Table1 do
begin
CheckBrowseMode ;
if EOF or BOF then raise Exception.Create('Разместите курсор на правильной позиции');
end ;
with Table2 do
begin
Append ;
for i := 0 to Table1.FieldCount - 1 do
if Table1.Fields[i].DataType < ftBytes then
FieldByName(Table1.Fields[i].FieldName).Assign(Table1.Fields[i])
else
try
srcStream := nil ;
srcStream := TBlobStream.Create(TBlobField(Table1.Fields[i]), bmRead) ;
TBlobField(FieldByName(Table1.Fields[i].FieldName)).LoadFromStream(
                    srcStream) ;
finally
if Assigned(srcStream) then srcStream.Free ;
end ;
Post ;
end ;
except
on E: EDBEngineError do MessageDlg(E.Message, mtError, [mbOk], 0) ;
on E: Exception do MessageDlg(E.Message, mtError, [mbOk], 0) ;
end ;
end;

 
« Предыдущая статья   Следующая статья »