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

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: OAmiry (Borland)

«Каким образом мне копировать запись в пределах одного и того же TTable? То есть, если я вижу текущую запись на экране и хочу ее скопировать в ту же таблицу с изменением индекса поля(ей), то какие действия мне необходимо предпринять?»

Необходимы два 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;

{/codecitation}

Добавить комментарий