在delphi中如何将数据库中的blob字段(内容是word文档)写进word中?在这里先谢谢了!!

wyxl 2003-04-08 02:43:45
在delphi中如何将数据库中的blob字段(内容是word文档)写进word中?在这里先谢谢了!!
...全文
103 25 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
tankkxx 2003-06-21
  • 打赏
  • 举报
回复
对于Olecontainer中使用word文件不是很麻烦,只要通过createobjectfromfile方法就可以了
shyspring 2003-06-19
  • 打赏
  • 举报
回复
顶一下。
luchunhua 2003-06-19
  • 打赏
  • 举报
回复
关注
AaronChengBJ 2003-06-18
  • 打赏
  • 举报
回复
首先,文件创建能够证明流操作是正确的,因为你可以用word打开。

但是当word打开错误的时候, 此文件被锁定了,因此一在第二次创建文件的时候会失败。

错误原因:
可以确定错误产生于打开word调入文档。
我在上面的函数中使用的office2000类型库。不知道你的delphi安装的office类型库的版本。如果是其他的版本,请你根据实际的参数来调整一下。
另外在Twordapplication的onbeforedocumentclose中加上wordapplicatoin1.disconnected;
shyspring 2003-06-18
  • 打赏
  • 举报
回复
minercxy(Codewhy) :
实在不好意思,解决不了,问题如下:
1.第一运行,文件可以创建但是打不开,当然,直接用Word是可以打开的,且内容正确。
2.第二次运新,运行至TFileStream.Create(FileName,FmCreate)时提示,can't create file,
而此时DeleteFile函数失效,文件被锁定。

不知道你的程序运行时有没有这些问题?怎么解决的?谢谢大虾,如果解决,另开贴百分相送。
shyspring 2003-06-18
  • 打赏
  • 举报
回复
minercxy(Codewhy):
代码照着你的抄的,传上来不好意思,:)。

foxyy8888(斧头) :
怎么用?


windwather() :
不怕你笑话,偶是菜鸟,本来很想用Olecontainer,但就是不懂这个控件怎么用,要是愿意解答,也另开百分贴相送,谢之谢之!

windwather 2003-06-18
  • 打赏
  • 举报
回复
用ole
tankkxx 2003-06-18
  • 打赏
  • 举报
回复
使用ado连接,然后用adoblobfield的loadfrom可以将word文件存到数据库中,用saveto可以将数据库中的文件存到指定的地方,已制定的文件名和类型。
这类方法很多,直接用string也可以,不过要用到指针操作。最简单的是用ado,也有几种方法,其中一种可以将blob字段强制转换为adoblobfield。
AaronChengBJ 2003-06-18
  • 打赏
  • 举报
回复
唉!头疼,我用了很长时间了,而且很就多没有问题。而且功能比这个还要复杂。包括域合并。再不行你就传代码吧
OO_is_just_P 2003-06-18
  • 打赏
  • 举报
回复
临时文件最简单
shyspring 2003-06-18
  • 打赏
  • 举报
回复
哈哈,解决一个问题,文件可以创建,而且可以用Word打开,但就是用程序打开时提示,路径或文件名有误,偶仔细检查了,实在是无误,不懂什么地方有问题,偶再看看,还有,偶的Delphi环境与你的是一样的。
AaronChengBJ 2003-06-17
  • 打赏
  • 举报
回复
我在
http://expert.csdn.net/Expert/topic/1881/1881120.xml?temp=.6545069
中同样撰写了将文件保存到数据库的函数啊
FileToDatabase

顺便说一句,我上面的例子使用了组件面板Server页上的Twordapplication,因为我觉得前期绑定好调试。
wzd801027 2003-06-17
  • 打赏
  • 举报
回复
请问你是如何将word文档中的内容保存到数据库中的,包括文档格式??
wzd801027 2003-06-17
  • 打赏
  • 举报
回复
我也遇到了同样的问题??我采用的数据库是oracle
AaronChengBJ 2003-06-17
  • 打赏
  • 举报
回复
ok,
下面是一个作为一个新的文档的例子:
首先定义我在
http://expert.csdn.net/Expert/topic/1881/1881120.xml?temp=.6545069
中定义的函数
DatabaseTofile
然后使用下面的过程:
procedure Tfrm_c_sjbg.BitBtn1Click(Sender: TObject);
var template,newtemplate,documenttype,visible:olevariant;
confirmconversions,readonly,
addtorecentfiles,passwordcocument,
passwordtemplate,revert,writepassworddocument,
writepasswordtemplate,format,encoding:olevariant;
begin
newtemplate:=false;
documenttype:=1;
visible:=false;

//这里是DatabaseToFile读出的文件位置
path:=extractfilepath(application.ExeName)+'template\';
template:=path+'temp.doc';


clientdataset1.active:=false;

//这里是你的文件在数据库中的存储位置
clientdataset1.CommandText:='select * from documents where id=1';
clientdataset1.active:=true;

//database to file, 'contents'是保存二进制数据的字段名称
databasetofile(clientdataset1,template,'contents');

wordapplication1.Documents.Add(template,newtemplate,documenttype,visible);
wordapplication1.Visible:=true;
wordapplication1.Activate;
wordapplication1.ActiveWindow.View.Type_:=wdprintview;
end;
shyspring 2003-06-17
  • 打赏
  • 举报
回复
minercxy(Codewhy):
大虾,随便哪种,能实现就行,如果可以选择的话:越简单越好!
shyspring 2003-06-17
  • 打赏
  • 举报
回复
minercxy(Codewhy) :

基本可以实现,还有一点小问题,偶先试试能不能自己解决。解决不了再来问大虾。先行谢过!
AaronChengBJ 2003-06-17
  • 打赏
  • 举报
回复
你自己调试吧,我这里oracle环境也没有。我是在sql server环境下做
AaronChengBJ 2003-06-17
  • 打赏
  • 举报
回复
不知道,oracle不熟,也没有测试过。
wzd801027 2003-06-17
  • 打赏
  • 举报
回复
to minercxy

我试用了你的 dataBaseToFile 函数
为什么 到
stream.readBuffer();
处出错报 ‘stread read error’
我的数据库字段是oracle 的 blob 类型

加载更多回复(5)

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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