![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Задача такая есть база в MS Access нашел исходник который копирует запись:
Код:
var
i: Cardinal;
srcStream: TBlobStream;
begin
try
with datamodule4.ADOTable1 do
begin
CheckBrowseMode;
if EOF or BOF then
raise Exception.Create('Разместите курсор на правильной строке');
end;
with datamodule4.ADOTable2 do
begin
Append;
for i := 0 to datamodule4.ADOTable1.FieldCount - 1 do
if datamodule4.ADOTable1.Fields[i].DataType < ftBytes then
FieldByName(datamodule4.ADOTable1.Fields[i].FieldName).Assign(datamodule4.ADOTable1.Fields[i])
else
try
srcStream := nil;
srcStream := TBlobStream.Create(TBlobField(datamodule4.ADOTable1.Fields[i]), bmRead);
TBlobField(FieldByName(datamodule4.ADOTable1.Fields[i].FieldName)).LoadFromStream(srcStream);
finally
if Assigned(srcStream) then
srcStream.Free;
end;
Post;
datamodule4.ADOtable1.Active:=false;
datamodule4.ADOtable1.Active:=true;
end;
except
on E: EDBEngineError do
MessageDlg(E.Message, mtError, [mbOk], 0);
on E: Exception do
MessageDlg(E.Message, mtError, [mbOk], 0);
end;
end;выводит ошибку: First chance exception at $7C81EB33. Exception class EInvalidCast with message 'Invalid class typecast'. Process Project1.exe (2712) в чем моя ошибка подскажите пожалуйста... |
|
#2
|
||||
|
||||
|
Ну что не кто не может помочь что-ли....????
|
|
#3
|
||||
|
||||
|
А вы уверены, что у вас точно blob поле попадает в ваше условие?
Не нравится мне такая запись: Код:
if datamodule4.ADOTable1.Fields[i].DataType < ftBytes then
...
else |
|
#4
|
||||
|
||||
|
хм незнаю этот исход работает с простым table1 а с ADO не хочет...
Может вы подскажите другой метод копирования? |
|
#5
|
||||
|
||||
|
Самое очевидное воспозоваться запросом на вставку записи.
Код:
insert into UserTable from select * from UserTable where id=10 |
|
#6
|
||||
|
||||
|
Я использую ADOTable а не ADOQuery
Попытлся с помощью ADOTable Код:
procedure TForm3.ToolButton19Click(Sender: TObject); var s,d,f,g,h,j: string; a:integer; begin s:= datamodule4.ADOTable1.Fields.Fields[1].AsString; d:= datamodule4.ADOTable1.Fields.Fields[2].AsString; f:= datamodule4.ADOTable1.Fields.Fields[3].AsString; g:= datamodule4.ADOTable1.Fields.Fields[4].AsString; h:= datamodule4.ADOTable1.Fields.Fields[5].AsString; j:= datamodule4.ADOTable1.Fields.Fields[6].AsString; datamodule4.ADOTable1.Last; a:= (datamodule4.ADOTable1.Fields.Fields[0].AsInteger + 1); datamodule4.ADOTable1.Active:=false; datamodule4.ADOTable2.Active:=true; datamodule4.ADOTable2.Insert; datamodule4.ADOTable2.Fields.Fields[0].AsInteger:=a; datamodule4.ADOTable2.Fields.Fields[1].AsString:=s; datamodule4.ADOTable2.Fields.Fields[2].AsString:=d; datamodule4.ADOTable2.Fields.Fields[3].AsString:=f; datamodule4.ADOTable2.Fields.Fields[4].AsString:=g; datamodule4.ADOTable2.Fields.Fields[5].AsString:=h; datamodule4.ADOTable2.Fields.Fields[6].AsString:=j; datamodule4.ADOTable2.Post; datamodule4.ADOTable2.Active:=false; datamodule4.ADOTable1.Active:=true; datamodule4.ADOtable1.Active:=false; datamodule4.ADOtable1.Active:=true; |