Автор: 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;
| |