再问:真的没有人知道吗?(20分)

  • 主题发起人 主题发起人 askall
  • 开始时间 开始时间
A

askall

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的程序中有如下语句
SQ->SQL->Add("update sdb21 set text=:vtext,graphic=:vgraphic where id='001'");
SQ->Parameters->ParamByName("vtext")->Value=LQ->FieldByName("text")->AsString;
SQ->Parameters->ParamByName("vgraphic")->Value=LQ->FieldByName("graphic")->AsVariant;

其中 SQ 与 LQ 是两个ADOQUERY 控件
SQ 联到一SQLSERVER 数据库上 LQ 联到一ACCESS数据库上,
两个库表中都有 TEXT 和 GRAPHIC 字段

text 是备注型存贮文本,graphic 是OLE 型存贮BMP图片

当我执行 SQ->ExecSQL( ) 时
text字段的内容都能正常传送,但 graphic 字段却传不过去,或者只能传几个字节过去。

请问是什么原因造成,及如何解决?
 
SQ->Parameters->ParamByName("vgraphic")->AsVariant=LQ->FieldByName("graphic")->AsVariant;

 
to delphifaq:
不知老兄试过没有?反正我这边老提示
'AsVariant' is not a member of Tparameter
所以根本编译不过
 
SQ.Parameters.ParamByName("vgraphic").Value=LQ->FieldByName("graphic").value;
试一试!
 
你的graphic字段是二进制的,不能直接在UPDATE语句中用SET赋值。
若用DELPHI/CB,不能象你这样,必须先建立BLOB的字段类型。
然后用TStream对象来传递数据。
 
to hhzh426:
我试过了,虽然编译能够通过,但执行效果却和我提问的一样,不能把整个字段传过去.
to Aloney:
请问如何具体实现,能否给出点代码?
 
必须用sql吗?如果不是可以通过bde可以loadfromstream的。
 
to iie:
我的程序都是基于ADO控件的.
还有我对STREAM操作不熟悉.
 
你这样做一定是回出问题的,还是遵循别人的建议采用流的方法,关于这方面的论坛上有很多很多
 
askall:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部