数据库直接存取并修改word的脚本

上传人:kms****20 文档编号:41104682 上传时间:2018-05-28 格式:DOC 页数:7 大小:30.50KB
返回 下载 相关 举报
数据库直接存取并修改word的脚本_第1页
第1页 / 共7页
数据库直接存取并修改word的脚本_第2页
第2页 / 共7页
数据库直接存取并修改word的脚本_第3页
第3页 / 共7页
数据库直接存取并修改word的脚本_第4页
第4页 / 共7页
数据库直接存取并修改word的脚本_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《数据库直接存取并修改word的脚本》由会员分享,可在线阅读,更多相关《数据库直接存取并修改word的脚本(7页珍藏版)》请在金锄头文库上搜索。

1、数据库直接存取并修改数据库直接存取并修改 wordword 的脚本的脚本/*数据库直接存取并修改 word 的脚本(word2000 版本,97 和 2002xp 没试)*/*注:里面的 sql 语句不能照搬哟,要自己修正。思路:共 3 段代码,存入时将 word 文件分段导入,导出时亦分段导出到硬盘上的一个临时文件,再用 ole 打开。再提示用户存回数据库。方法比较笨,多多包涵,刚刚完成的,比较乱,没有封装成用户对象,还用了些全局变量(为了生成临时文件)大家觉得有用的话请支持一下,随后我会完善,也希望高手多提宝贵意见,给些更好的实现方法,比如 API、VBA 之类的。如果用控件或者 VBA

2、在 word 里直接定义用户菜单就最完美了:)另外有兴趣的朋友帮忙测试一下,我测了一个 4 兆的,速度打开和存入的速度还可以接受。下一个目的:读取 word 里的标签数据和程序直接交换数据。/按钮一:读取 word 到数据库int li_i, li_j, li_looplong ll_FLengthblob lb_word, lb_tempstring sFileName, sFile/选择要导入的文件GetFileOpenName(“选择文件“,sFileName, sFile)/检查文件长度,如果超过 32765 则分段读取ll_FLength = FileLength(sFileName

3、)IF ll_FLength 32765 THENIF Mod(ll_FLength, 32765) = 0 THENli_loop = ll_FLength/32765ELSEli_loop = (ll_FLength/32765) + 1END IFELSEli_loop = 1END IFli_i = fileopen(sFileName,StreamMode!, Read!, LockRead!)if li_i 0 thenst_1.text = “文件导入中.“SetPointer(HourGlass!)if li_loop = 1 thenfileread(li_i, lb_wor

4、d)elsefor li_j = 1 to li_loopll_FLength = fileread(li_i, lb_temp)lb_word = lb_word + lb_tempnextend iffileclose(li_i)updateblob pstinfo set gwsms = :lb_word where id = :il_PstId;elsemessagebox(警告!,不能读取文件!)end ifif sqlca.sqlcode = 0 thencommit;st_1.text = SetPointer(Arrow!)messagebox(success!,success

5、!)elserollback;messagebox(failed!,failed!)SetPointer(Arrow!)end if/按钮二:直接打开数据库 word 并修改blob blb_tmp, blb_wordOLEObject ole_object ole_object = CREATE OLEObject integer li_ret, li_loop, li_ilong ll_FLengthib_wordflag = true /ib_wordflag 为真表示 word 已被打开,需要保存./取出从数据库 word 文档大文本文件SELECTBLOB gwsms INTO :b

6、lb_tmpFROM pstinfoWHERE id = :il_PstId;/判断文件长度,如超长则分段处理ll_FLength = len(blb_tmp)st_1.text = string(ll_FLength)IF ll_FLength 32765 THENIF Mod(ll_FLength, 32765) = 0 THENli_loop = ll_FLength/32765ELSEli_loop = (ll_FLength/32765) + 1END IFELSEli_loop = 1END IF/写入应用程序目录下的 word 临时文件if sqlca.sqlcode = 0 t

7、heninteger li_FileNumli_FileNum = FileOpen(gs_path + “model.doc“,StreamMode!, Write!, LockRead!, Append!)st_1.text = 文件读取中.SetPointer(HourGlass!)for li_i = 1 to li_loopblb_word = blobmid(blb_tmp,(li_i - 1)*32765+1,32765)FileWrite(li_FileNum, blb_word)nextFileClose(li_FileNum)end ifli_ret = ole_objec

8、t.ConnectToObject(“Word.application“) if li_ret 0 then MessageBox(“OLE 错误“,“OLE 无法连接! 错误号:“+String(li_ret) end if end ifole_object.Visible = trueole_object.documents.open(gs_path + “model.doc“)SetPointer(Arrow!)ole_object.DisconnectObject()destroy ole_object/按钮 2 的 losefocus 事件里的代码,目的是提示用户保存修改后的 wor

9、d,和按钮 1 实现的功能基本一样。int li_i,li_FileNum, li_j,li_looplong ll_flengthblob lb_word, lb_tempstring sFileName, sFile/如果 ib_wordflag 文 false,则说明文件已被保存,则不在触发保存事件。if ib_wordflag = false then returnli_i = messagebox(提示,您确信要保存岗位说明书吗?,Information!,OKCancel!,1)if li_i = 1 thensFileName = gs_path + “model.doc“/检查

10、文件长度,如果超过 32765 则分段读取ll_FLength = FileLength(sFileName)IF ll_FLength 32765 THENIF Mod(ll_FLength, 32765) = 0 THENli_loop = ll_FLength/32765ELSEli_loop = (ll_FLength/32765) + 1END IFELSEli_loop = 1END IFli_i = fileopen(sFileName,StreamMode!, Read!, LockRead!)if li_i 0 thenst_1.text = “文件导入中.“SetPoint

11、er(HourGlass!)if li_loop = 1 thenfileread(li_i, lb_word)elsefor li_j = 1 to li_loopll_FLength = fileread(li_i, lb_temp)lb_word = lb_word + lb_tempnextend iffileclose(li_i)updateblob pstinfo set gwsms = :lb_word where id = :il_PstId;elsemessagebox(警告!,不能读取文件!)end ifif sqlca.sqlcode = 0 thencommit;st_

12、1.text = SetPointer(Arrow!)messagebox(success!,success!)elserollback;messagebox(failed!,failed!)SetPointer(Arrow!)end ifend ifib_wordflag = false/清空应用程序目录下的 word 临时文件li_FileNum = FileOpen(gs_path + “model.doc“,StreamMode!, Write!, Shared!, Replace!)if FileWrite(li_FileNum, “) = -1 thenmessagebox(failed!,文件写入失败!)end ifFileClose(li_FileNum)/*/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号