"Каким образом мне копировать запись в пределах одного и того
же 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; |
OAmiry/Borland |