2,497
社区成员
发帖
与我相关
我的任务
分享
procedure Tfrm_NetCRMAdd.btnOpenDocClick(Sender: TObject);
var
MemSize: integer;
Buffer: PChar;
Myfile: TFileStream;
Stream: TBlobStream;
begin
OpenDialog1.Filter :=
'文档(*.doc,*.docx,*.xls,*.xlsx,*.pdf)|*.doc;*.docx;*.xls;*.xlsx;*.pdf';
{ 从对话窗选择文件 } // ,*.docx,*.xls,*.xlsx,*.pdf
if OpenDialog1.Execute then
begin
Myfile := TFileStream.Create(OpenDialog1.FileName, fmOpenRead);
with aqNetCRM do { ‘aqNetCRM’为含BLOB字段的表名: TADOQuery }
begin
if Not(State in [DsEdit, DsInsert]) then
Edit;
Stream := TBlobStream.Create(FieldByName('Documents') as TBlobField,
bmWrite); { ‘Documents’为BLOB字段名,但是MSSQL没有BLOB类型,改为image类型 }
//在此提示错误:invalid class typecast
MemSize := Myfile.Size;
Inc(MemSize);
{ Make room for the buffer's null terminator. }
Buffer := AllocMem(MemSize); { Allocate the memory. }
try
Stream.Seek(0, soFromBeginning);
{ Seek 0 bytes from the stream's end point }
Myfile.Read(Buffer^, MemSize);
Stream.Write(Buffer^, MemSize);
finally
Myfile.Free;
Stream.Free;
end;
try
Post;
except
on E: EDatabaseError do
{
if HandelException(E) <>0 then
//HandelException(E) 提示未定义,注释这一段
exit
else
}
raise ;
end;
end;
Doc_Ole.CreateObjectFromFile(OpenDialog1.FileName, False);
Doc_Ole.Run; { Doc_ole为ToleContainer构件名 }
end;
end;