简单的一段源码改错,可惜我不会,求助! (100分)

  • 主题发起人 主题发起人 top10
  • 开始时间 开始时间
T

top10

Unregistered / Unconfirmed
GUEST, unregistred user!
下面是一段用dbexpress组件 +OleContainer 显示blob字段的源码

var
sFileName : String;
bs : TClientBlobStream;
begin

bs := TClientBlobStream.Create(dm.sqlquery1blobdata, bmRead);

{运行到这里发现类型不匹配.
上面一句中的"sqlquery1blobdata "应该为sqlquery1控件中建立的字段,
现在的问题是:这个sqlquery1.sql语句为"SELECT * FROM 表A WHERE id=:id "
为动态sql语句
我尝试在设计阶段设置永久字段但是失败,请问如何解决?是改上面的语句还是我设置
永久字段有问题?}

try
sFileName := ExtractFilePath(Application.ExeName) + 'tempBlob';
sFileName := sFileName + '.' + dm.SQLQuery2.FieldByName('EXT').AsString;
bs.Seek(soFromBeginning, 0);
bs.SaveToFile(sFileName);
OleContainer1.CreateObjectFromFile(sFileName, False);
finally
bs.Free;
end;
end;
 
dbexpress?没用过,我用的是ADO,提供以下部分代码让你参考
(自己编写的软件自动升级):
var qry:tadoquery;
Stream: TadoblobStream;
begin
//检测新版本
qry:=tadoquery.Create(self);
qry.Connection:=adodb;
qry.Close;
qry.sql.Clear;
qry.SQL.add('select dx,nr from appupdate');
if not sqlexec(qry,'无法读取数据!',0) then abort;
Stream:=TadoblobStream.Create(qry.fieldbyname('nr') as TBlobField, bmRead);
end;
 
to chnplzh: 用你的方法试了一下,
发现报错: TBlobField未声明,
这个需要uses 什么单元?
 
后退
顶部