数据类型不匹配?

kugoo_2006 2008-01-12 11:17:26
var
range:Olevariant;
begin
Range:=OleContainer1.OleObject.Application.Selection.Range;
Range先保存进数据库 image字段
.....
end;
图片可在word指定的位置中插入

从数据库读出Range
var
filename:String;
LinkToFile,SaveWithDocument:boolean;
Range:olevariant;
begin
adoquery1.Close;
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from aa');
adoquery1.Open;
adoquery1.last;
Range:=adoquery1.fieldByName('test').AsVariant;
filename:='C:\word.png';
LinkToFile:=false;
SaveWithDocument:=true;
OleContainer1.OleObject.Application.Selection.InlineShapes.AddPicture(filename, LinkToFile, SaveWithDocument,range);
end;
提示:数据类型不匹配?请问要怎样实现?

...全文
206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouchunyu 2008-01-14
  • 打赏
  • 举报
回复
顶拉
阿三 2008-01-14
  • 打赏
  • 举报
回复
呵,祝贺。
kugoo_2006 2008-01-14
  • 打赏
  • 举报
回复
我已经搞定~
kugoo_2006 2008-01-13
  • 打赏
  • 举报
回复
to zxf_feng 先谢谢你
保存图片我已经完成。我现在是想在WORD中 指定位置显示图片,
我保存了位置 类型是OLEVariant 但是从数据库读取Range值

OleContainer1.OleObject.Application.Selection.InlineShapes.AddPicture(filename, LinkToFile, SaveWithDocument,Range);

就出现不匹配了
wxsan 2008-01-13
  • 打赏
  • 举报
回复
mark!
kugoo_2006 2008-01-12
  • 打赏
  • 举报
回复
写进数据库
adoquery1.FieldByName('test').AsVariant:=Range; //test 是使用image类型
//Range是OleVariant类型 通过GetVariantType 得到的是dispatch

从数据库读出
Range:=adoquery1.FieldByName('test').AsVariant;
Range也是属于OleVariant 类型 但是通过GetVariantType获取到的是OleStr

所以
OleContainer1.OleObject.Application.Selection.InlineShapes.AddPicture(filename, LinkToFile, SaveWithDocument,Range);

就出现不匹配了

请问要怎么转换?
阿三 2008-01-12
  • 打赏
  • 举报
回复
你参照一下,是否满足你的需求
//保存图像
procedure TFrmNewGoods.AddPicture(sgoodscode:String);
var
picstream:tadoblobstream;
bmppic:tbitmap;
jpgpic:tjpegimage;
bmpstream:TMemoryStream;
OpenPicDialog:TOpenPictureDialog;
itype:boolean;
begin
try
OpenPicDialog:=TOpenPictureDialog.Create(nil);
adoquery1.Connection:=DMdataMode.DBConnection;
OpenPicDialog.Filter:='All *.jpg; ¦*.jpg;)';
itype:=false;
adoquery1.SQL.Text:='select goodscode,picture from gds_goodscode with(nolock) where goodscode='+sgoodscode;
adoquery1.open;
adoquery1.Edit;
if OpenPicDialog.Execute then
begin
jpgpic:=tjpegimage.Create;
bmppic:=tbitmap.Create;
bmpstream:=tmemorystream.Create;
jpgpic.LoadFromFile(OpenPicDialog.filename);
bmppic.Assign(jpgpic);
bmppic.SaveToStream(bmpstream);
picstream:=tadoblobstream.Create(tblobfield(adoquery1.Fields[1]),bmWrite);
picstream.LoadFromStream(bmpstream);
picstream.Position:=0;
tblobfield(adoquery1.Fields[1]).loadfromstream(picstream);
itype:=true;
end;
adoquery1.Post;
if itype then
begin
Adoquery1.Edit;
picstream.Free;
jpgpic.Free;
bmppic.Free;
bmpstream.Free;
end;
finally
OpenPicDialog.free;
end;
end;
显示图像
用一个DBImage  关联显示就行

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧