在delphi如何利用OleContainer控件中对有图象的word文档进行编辑并可将其存入数据库,还可以再取出来在进行编辑?(200分)

  • 主题发起人 主题发起人 bigcorn
  • 开始时间 开始时间
B

bigcorn

Unregistered / Unconfirmed
GUEST, unregistred user!
在我的delphi程序中,我使用了OleContainer控件嵌入了一个word文档,当word文档是纯的文本
或是只有图象时,都可以在数据库中进行正常读取,但是如果在word文档中是图文形式的则
在数据库中存取不正常,取出后只能显示图象。我想是不是因为在word文档中嵌入了图象以后
则已经把word文档当作两个Ole对象,而在存取的时候只能存取一个对象,究竟该如何解决
希望大家能指点迷经。在下感激不尽。
我编程的开发环境是delphi4.0和SQL7.0 是使用的midas的三层结构
存取该word文档的字段类型是image
源程序如下
取出部分
var
sql:string;
str:TMemoryStream;
begin
sql:='select ZLPJ_BH,ZLPJ_BG from tbZLPJ where ZLPJ_BH='''+SPBH+'''';
zbClientDataSet.Close;
zbClientDataSet.Provider.DataQuest(sql);
zbClientDataSet.Open;
zbClientDataSet.Edit;
str:=TMemoryStream.Create();
TBlobField(zbClientDataSet.fieldbyname('ZLPJ_BG')).SaveToStream(str);
str.position:=0;
OleContainer2.LoadfromStream(str);
str.Free;
end;

存储部分
var
sql:string;
str:TMemoryStream;
begin
sql:='select ZLPJ_BH,ZLPJ_BG from tbZLPJ where ZLPJ_BH='''+SPBH+'''';
zbClientDataSet.Close;
zbClientDataSet.Provider.DataQuest(sql);
zbClientDataSet.Open;
zbClientDataSet.Edit;
str:=TMemoryStream.Create();
OleContainer1.SaveToStream(str);
str.Position:=0;
TBlobField(zbClientDataSet.fieldbyname('ZLPJ_BG')).LoadFromStream(str);
zbClientDataSet.Post;
zbClientDataSet.ApplyUpdates(0);
str.Free;
end;
 
别忘了告诉我
 
把TMemoryStream换成TOleStream试试
 
这仅仅是因为你的BDE别名的blob size设置得太小了,
您设置大一些就行了,如10000
(单位为k,一定要大于文件大小!!!)
可在程序中动态设置
还有问题和我联系
h@sun.net.cn
 
wangxd的方法我试了一下,但是不行,系统要报错。
请问一下thtfsyh,我存储word文档的字段类型是image,它在SQL server 中实际上只是存储
的只是一个指针,那要如何才能改变其大小?
 
可能的确是字段的长度不够,当我的文档长度不长时,一切正常,一旦文档达到数百k就要
报一些莫名其妙的错误?请教thtfsyh如何在sql server中改变image字段的大小,它只是存储
的一个地址。请你能详细的给我介绍一下,我现在真的是十万火急。先谢过你了。
 
>这仅仅是因为你的BDE别名的blob size设置得太小了,
bde就是borland database engine,就是宝蓝数据库引擎了
在delphi安装的时候,都安装了的。
您可以启动
C:/Program Files/Borland/Delphi4/Bin/dbexplor.exe
点击您连接您的数据库的数据库别名,
然后在右边的详细信息(difinition)中的第三行blob size
设置一下,保存就行了。
不知我讲清楚了么?
 
我已经按你的方法设置blob size为900,但是存储小文件可以,当我存储了一个含有图形
的大小为200多k的word文档,就不行了,存储进去的时候不报错,但是取出来的时候就报
“docfile 已被损坏”的信息,我就不知是怎么回事了,望指教。
 
sql server iamge型字段 最大存储长度?
 
在这里感谢thtfsyh等各位仁兄,我的问题已经顺利解决了,问题还是出在bde的blob size
属性设置上,但是因为我的开发环境是delphi4和sql server2000,可能是delphi4的所带的
bde5.01的blob和sql server2000的image字段的兼容性的问题,后来我把sql server2000
卸了,重装了sql server7,一切就万事大吉了,存储大文件也没有问题了。
 
后退
顶部