请问如何将Word文档读入字段中,并从字段中取出刚才的WORD文档?
SQL中字段设成Image,在查询分析器中用Insert Into命令将Word文档插入Image字段中,在PB中用SELECT选择出来出现乱码?如何将WORD文档读出?如果用PB写入IMAGE字段又如何写入?与SQL一样的吗? 问题点数:50、回复次数:12Top
1 楼lzheng2001(1加1)回复于 2005-11-07 15:47:12 得分 0
查询分析器中用Insert Into命令将Word文档插入Image字段中
==========================
能否把语句贴出来?
Top
2 楼Karey(宇宙星云)回复于 2005-11-07 15:56:46 得分 0
insert into test cFile values('E:\1.doc')
不知这样写是否正确?Top
3 楼lzheng2001(1加1)回复于 2005-11-07 16:13:16 得分 0
insert into test cFile values('E:\1.doc')
===================
这句不能把WORD文档保存到SQL SERVER的image字段中的, 为什么你能select 出千乱码来?
Top
4 楼lzheng2001(1加1)回复于 2005-11-07 16:16:00 得分 50
算了吧,我看楼主是乱来的.
给你一个例子参考吧
例子
long ll_handle,ll_index
string ls_data,ls_filename,ls_name
integer li_value
ll_index=lv_info.selectedindex()
lv_info.getitem(ll_index,llvi_current)
ls_data=string(llvi_current.data)
li_value=GetFileOpenName("图片选择",&
+ ls_filename,ls_name,"BMP", &
+ "BMP Files (*.BMP),*.BMP," &
+ "JPG Files (*.JPG),*.JPG," &
+ "GIF Files (*.GIF),*.GIF," &
+ "JPEG Files (*.JPEG),*.JPEG")
if li_value=1 then
integer li_filenum,li_loops,li_i
long ll_filelen,ll_bytes,ll_new_bytes
blob lb_out,lb_total
ll_filelen=FileLength(ls_filename)
li_filenum=FileOpen(ls_filename,STREAMMODE!,READ!,SHARED!)
if ll_filelen>32766 then
if mod(ll_filelen,32766)=0 then
li_loops=ll_filelen/32766
else
li_loops=ll_filelen/32766 + 1
end if
else
li_loops=1
end if
for li_i=1 to li_loops
ll_bytes=fileread(li_filenum,lb_out)
lb_total=lb_total + lb_out
ll_new_bytes=ll_new_bytes + ll_bytes
fileseek(li_filenum,ll_new_bytes,FROMBEGINNING!)
next
fileclose(li_filenum)
sqlca.autocommit=true
updateblob sct_sb_dymc set image=:lb_total where bdsbh=:is_bdsbh and dybh=:ls_data;
sqlca.autocommit=false
if sqlca.sqlnrows>0 then
messagebox("提示信息","图片导入成功")
else
messagebox("提示信息","图片导入失败")
end if
end if
Top
5 楼Karey(宇宙星云)回复于 2005-11-07 16:16:24 得分 0
那应该如何将WORD文档保存到IMAGE字段中?
以下就是我用SELECT查询出来的数据
0x453A5C50726F6772616D5CBBB7B1A35C68626A73786D5F6578655CBBB7BEB3D3B0CFECB1A8B8E6B1ED2E646F63
Top
6 楼lzheng2001(1加1)回复于 2005-11-07 16:16:50 得分 0
你把选择图片文件改成WORD文档就行了Top
7 楼Karey(宇宙星云)回复于 2005-11-07 16:36:36 得分 0
其实,我真的对这方面的知识缺乏...
那如何将WORD文档拿出来看?Top
8 楼Karey(宇宙星云)回复于 2005-11-07 17:23:47 得分 0
如何用WORD将刚才存入的WORD文档读出来?是否有OLE控件读出?可不可以直接打开WORD来看?Top
9 楼lzheng2001(1加1)回复于 2005-11-07 18:34:43 得分 0
取数据用
selectblob 帮助上有例子.
再用filewrite把blob写到临时文件上,然后调用WORD打开就可以了.
Top
10 楼Karey(宇宙星云)回复于 2005-11-07 23:22:44 得分 0
请问什么情况会出现文件导入失败的错误?如何避免?Top
11 楼Karey(宇宙星云)回复于 2005-11-08 08:48:04 得分 0
急~~~,SOS!
用了以下代码实现写到临时文件上,可惜的是写是写进去了,但打开时出现"文档的名称或路径无效"的错误.
String ls_Doc, ls_path
Blob tt,lblb_temp
Int li_FileNum,li_len,li_loops,i
Long ll_Read
ls_Doc = "spzl.Doc"
ls_path = GetCurrentDirectory() + "\Doc\" + ls_Doc
messagebox("",ls_Path)
IF FileExists(ls_Doc) THEN FileDelete(ls_path)
li_FileNum = FileOpen(ls_path,StreamMode!,Write!,LockWrite!,Replace!)
IF li_FileNum < 1 THEN
MessageBox('错误','写入文件'+ls_path+'出错!',stopsign!)
FileClose(li_filenum)
RETURN
END IF
SELECTBLOB cFileName
INTO :tt
FROM test ;
li_len = Len(tt)
//如果文件大于32765,判断需要多少次读取
IF li_len > 32765 THEN
IF Mod(li_len, 32765) = 0 THEN
li_loops = li_len/32765
ELSE
li_loops = (li_len/32765) + 1
END IF
ELSE
li_loops = 1
END IF
ll_Read = 1
for i=1 to li_loops
lblb_temp = BlobMid(tt,ll_Read,32765)
FileWrite(li_FileNum, lblb_temp)
ll_Read += 32765
next
Fileclose(li_FileNum)
messagebox("","文件导出成功!")
Top
12 楼Karey(宇宙星云)回复于 2005-11-08 10:23:18 得分 0
反复试过,原来超过31.2K时存入不成功,请问如何解决该问题?我写的代码有截取存储的,为何还是如此?Top
相关问题
- 如何用VB向word文档中加字段。
- ADO如何存取Access 2000中的OLE字段(Word文档)
- 如何在Blob字段(存放word文档)中进行检索?
- 列举将ACCESS的OLE字段(存的是WORD文档),写入WORD文档的方法,UP者有分!
- 关于Delphi中用Word文档作为字段记录的问题。
- 可不可以将WORD文档存SQL SERVER 的image类型的字段?
- 可不可以将WORD文档存到SQL SERVER 的image类型的字段?
- 规整的word文档,怎么将其按字段导入数据库中?
- 如何用VB将本地WORD文档放入ACCESS数据库OLE字段中?
- 如何在自己程序中读入和写出WORD文档(*.DOC)和PowerPoint文档(*.ppt)




