Копирование записи в пределах одной и той же таблицы
|
Необходимы два 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; |