我用Tgraphic.field(adodataset1.fieldbyname('blob')).loadfromfile('c:\1.bmp');
tgraphic.field(adodataset1.fieldbyname('blob')).saveasfile('c:\2.bmp');
结果1.bmp和2.bmp文件大小一样但2.bmp就是大不开而且通过记事本打开看它们的ascii码一样,2.bmp就是大不开.
我看了delphi ado的书说,在adodb.pas中有一个错误,我改了adodb.pas但不知怎么编译.
还有请各位大虾帮我看看我想开发c/s架构的程序,adodataset1的
coursorlocation用client-side coursor还是 server-side coursor好
tgraphic.field(adodataset1.fieldbyname('blob')).saveasfile('c:\2.bmp');
结果1.bmp和2.bmp文件大小一样但2.bmp就是大不开而且通过记事本打开看它们的ascii码一样,2.bmp就是大不开.
我看了delphi ado的书说,在adodb.pas中有一个错误,我改了adodb.pas但不知怎么编译.
还有请各位大虾帮我看看我想开发c/s架构的程序,adodataset1的
coursorlocation用client-side coursor还是 server-side coursor好
用OLE代碼如下:(樓主本人的)//Save Paper
procedure TfrmResPaper.bbnSavePaperClick(Sender: TObject);
var
Query:TADOQuery;
Stream:TADOBlobStream;
begin
if not ((OlePaper.State=osLoaded) and
(DMResPaper.State=dsBrowse) and (DMResPaper.RecordCount>0)) then Exit;
Query:=TADOQuery.Create(nil);
with Query do
begin
Connection:=Pubconn;
SQL.Clear;
SQL.Add('SELECT ID,RES_NO,PAPER FROM B_PAPER WHERE ID='+DMResPaper.FieldByName('ID').AsString
+' AND RES_NO='''+DMResPaper.FieldByName('RES_NO').AsString+'''');
Open;
Edit;
Stream:=TADOBlobStream.Create(TBlobField(FieldByName('PAPER')),bmReadWrite);
try
try
OlePaper.SaveToStream(Stream);
finally
Stream.Free;
end;
Post;
EpsDLG('圖紙保存成功!');
except
EpsDLG('圖紙保存失敗!');
end;
Query.Free;
end;
end;//Load Paper
procedure TfrmResPaper.dgMainDblClick(Sender: TObject);
var
Query:TADOQuery;
Stream:TADOBlobStream;
begin
inherited;
if not ((DMResPaper.State=dsBrowse) and (DMResPaper.RecordCount>0)) then Exit;
Query:=TADOQuery.Create(nil);
with Query do
begin
Connection:=Pubconn;
SQL.Clear;
SQL.Add('SELECT ID,RES_NO,PAPER FROM B_PAPER WHERE ID='+DMResPaper.FieldByName('ID').AsString
+' AND RES_NO='''+DMResPaper.FieldByName('RES_NO').AsString+''' AND PAPER IS NOT NULL');
Open;
if RecordCount=0 then
OlePaper.DestroyObject
else
begin
Stream:=TADOBlobStream.Create(TBlobField(FieldByName('PAPER')),bmRead);
try
OlePaper.LoadFromStream(Stream);
finally
Stream.Free;
end;
end;
Query.Free;
end;
end;
以上是成功代碼