2024年3月19日发(作者:)
第
6
卷第年
8
月
电脑知识
23
期
and
(2010)
与技术
ComputerKnowledgeTechnology
Vol.6,No.23,August2010,pp.6407-6408
ISSN1009-3044
E-mail:jslt@
电脑知识
与技术
ComputerKnowledgeandTechnology
Tel:+86-551-569
浅析利用VB6.0将Access数据表转换为Word文档
陈军民
(江西外语外贸职业学院,江西南昌
330099
)
摘要:将
Access
数据表转换为
Word
文档,是我们在日常工作过程中经常会碰到的一类问题。该文通过一个实例
,
首先介绍利用
Office
自带功能的各种方法,以及这些方法所存在的诸多局限;然后详细阐述利用
VB6.0
编程方法,突破这些局限,转换为用户所需
要的
Word
文档格式。
关键字:
VB6.0
;
Access
;
Word
;办公自动化
中图分类号:
TP311
文献标识码:
A
文章编号:
1009-3044(2010)23-6407-02
AnalysisUsingVB6.0theAccessDataTableConvertaWordDocument
CHENJun-min
(JiangxiCollegeofForeignStudies,Nanchang330099,China)
Abstract:TheAccessdatatableConvertaWorddocument,isourdailywork,
thispaper,anexample,firstintroducedtheuseofOfficecomeswithfeaturesavarietyofways,andthesemethodshavemanylimitationsex-
ist;thenelaboratedusingVB6.0programmingmethods,tobreakthroughtheselimitations,convertuserneedsWorddocumentformat.
Keywords:VB6.0;Access;Word;Office
我们在日常办公过程中
,
经常会碰到这样的情况
,
某种软件的后台
Access
数据库中含有一些有用的数据信息
,
这些数据信息只
有通过某种特定的软件才能打开使用
,
但我们在办公过程中经常使用的软件是
Word,
那我们就会很自然地想到能否将专属于
Access
的数据信息转换成用户所需要的
Word
文档格式。如本文所讨论的“全国计算机等级考试”上机模拟系统,它的后台是一个
Access
数
据库(以下简称:“等考系统”后台数据库),存储考试题库,这些题目信息只有通过其软件打开。而我们现在想将其转换为
Word
文
档,打印装订成册,提供给学生复习。
1
利用
Office
自带转换功能,及存在的诸多局限
Access
和
Word
同属于
Office
家族
,
它们之间提供了多种数据转换功能,主要有以下三种方式。
1)
利用剪贴板
在
Access
中,打开要转换的表,选择一组记录进行“复制”,将所选内容复制到剪贴板中;随后打开
Word
,单击工具栏上的“粘
贴”或“选择性粘贴”,就可将剪贴板中的数据粘贴为
Word
文档中的表格或普通文本。
2)
导出为
RTF
文件
在
Access
中,打开要转换的数据表,执行“文件
/
导出”命令,将“保存类型”指定为“
RTF
格式”,即可以转换为一个
Word
文档。
3)
直接插入数据库
在
Word
文档中,选择“视图
/
工具栏
/
数据库”。在“数据库”工具栏中单击“插入数据库”按钮。然后“获取数据”、“打开数据源”、
“选择
Access
数据库”,即可以将一个
Access
数据库插入到
Word
文档中。
上述各种自带功能的转换方法,尽管提供了各种较为灵活的方式,如选择字段转换,选择条件转换,选择转换后的样式等。但根
据实际应用,总感觉有很多局限,主要体现在以下两点:
1)Office
自带转换功能无法转换
Access
中的
OLE
类型,即长二进制类型。如在“等考系统”后台数据库中,题干中的图片,是用
字段
(
TOPIC_INTE_IMG
)存储,它是一种
OLE
类型。要将其转换到
Word
文档中,并将它放在相应的位置,
Office
自带转换功能无法
实现。
2)
各个字段的值在转换之后,不能根据用户的要求在
Word
文档中进行自由排列,不能一次性成批地进行字体大小和颜色等方
面的修改,不能根据用户的需要在字段之间插入其它文本。如在“等考系统”后台数据库中,答案分析(
TOPIC_ANS
)字段在题干文本
(
TOPIC_INE
)字段的前面,但转换成
Word
文档后,我们希望重新排列它们的位置,将题干放在答案分析的前面,且希望它们有不同
的字体和颜色,题目与题目之间加一条分隔线。利用
Office
自带转换功能,无法一次性成批地实现这些要求,往往在转换之后,还要
经过大量的
Word
后期排版工作。
要突破这些局限,真正按照用户的需求进行转换,可以利用
VB6.0
编程的方法实现。
2VB6.0
实现转换的基本思想
Access
作为一个关系数据库系统,一个数据库文件可能包含一个或多个数据表,在每个数据表中按照字段的类型存储数据。如
在“等考系统”后台数据库中,
TOPIC
数据表的主要字段有:
TYPE
(题型)、
TOPIC_INTE
(题干文本)、
TOPIC_INTE_IMG
(题干图片)、
TOPIC_ANS
(答案分析)等,其中字段
TOPIC_INTE_IMG
,是
OLE
类型,存储的是图片。而程序员想要灵活地操纵这些数据,比较好的
收稿日期:
2010-05-15
作者简介:陈军民(
1968-
),男,江西宜春人,江西外语外贸职业学院信息管理系讲师,高级工程师,研究方向为高职计算机教育。
本栏目责任编辑:代影
数据库与信息管理
6407
ComputerKnowledgeandTechnology
电脑知识
与技术
第
6
卷第
23
期
(2010
年
8
月
)
一种方法,就是利用
Microsoft
公司的
ADO
对象连接
Access
数据库,然后用
SQL
语句打开数据表,分别读取数据表的文本类型字段
和图片类型字段(这两种字段的读取方式差异较大),最后再将它们写入到
Word
文档中。
要将从数据表中读取的值写入到
Word
文档中,首先必须引用
Word
对象库
,
如
Word2003
的对象库
MicrosoftWord11.0Object
Library
,然后新建一个
Word
文档对象,对文本类型和图片类型数据分别写入(这两种类型数据的写入,差异也较大),同时利用
Word
对象库中提供的对象进行
Word
排版。
3VB6.0
实现转换的主要过程
1)
引用
ADO
对象库和
Word
对象库
在
VB6.0
“工程
/
引用”对话框中,勾选
MicrosoftActivexDataObject2.5Libray
和
MicrosoftWord11.0ObjectLibrary
两个对象
库。第一个是
ADO2.5
对象库,因为要操作图片,其版本必须在
2.5
以上。第二个是
Word2003
的对象库,它的对应版本是
11.0
。
2)
利用
ADO
对象连接
Access
数据库
*tion
‘新建数据库连接对象
*DimConnstrAsString
‘定义数据库连接字符串变量
*Connstr="Provider=.4.0;DataSource="&&";PersistSecurityInfo=False"
‘给数据库连接字符串变量赋值,其中
是“等考系统”后台数据
库的文件名
*nnstr
‘打开数据库连接
3)
用
SQL
语句打开数据表
*set
‘新建数据表记录集对象
*"select*fromTOPIC",Conn,adOpenKeyset,adLockOptimistic
‘用
SQL
语句打开
数据库中
TOPIC
数据表
4)
建立
Word
文档对象并打开
*SetobjWord=CreateObject("ation")
‘新建
Word
对象
*e=True
‘使
Word
对象可见
*SetobjDoc=()
‘在
Word
对象中创建
Word
文档
5)
转换文本字段并设置样式
*=12
‘设置字体大小为
12
号字
*inText=Rs("TOPIC_INTE").Value
‘读取题干文本字段的值
*xtinText
‘将题干文本部分插入到
Word
文档中
有关其它文本字段的转换,参照此方法进行。在转换的同时,可以设置相关文本属性,突破了
Office
自带转换功能的局限。并可
以根据用户的要求插入相应文本,如在题目与题目之间插入一个分隔线,可用以下语句:
xt"***************************************
”
6)OLE
图片字段的转换
OLE
图片字段的转换不同于文本字段,它的读取首先要新建一个
ADO
流对象(
Stream
)
,
设置类型(
Type
)为
OLE
图片(二进制文
件)并打开。在流对象(
Stream
)中有一个非常重要的方法
GetChunk
,它可以根据数据的实际大小(
ActualSize
)读出
OLE
字段,然后写
入到流对象中。相关语句如下:
*
‘新建流对象
*=1
‘设置流对象类型为
OLE
图片(二进制文件)
*
‘打开流对象
*s("TOPIC_INTE_IMG").GetChunk(Rs("TOPIC_INTE_IMG").
ActualSize)
‘获取题干图片字段(
TOPIC_INTE_IMG
)的实际大小并用
GetChunk
方法取得相应数据,然后写入到流对象中。
此时流对象(
objStream
)中实际存储了一个
OLE
图片,但它不能直接写入到
Word
文档中,而只能存储为一个文件。为此应先建
一个临时图片文件
,
然后利用
ture
命令
,
将这个图片文件插入到
Word
文档中,并设置好相应格
式
,
最后再把临时图片文件
删除。
*fName=&""
‘在当前文件夹中建立临时图片文件
*FilefName,adSaveCreateOverWrite
‘将流对象存储到临时图片文件
中
*tureFileName:=fName,LinkToFile:=False,SaveWithDocument:=True
‘将临时文件
插入到
Word
文档中
*ent=wdAlignParagraphCenter
‘设置图片在
Word
文档中居中显示
*KillfName
‘删除临时图片文件
4
结束语
利用
VB6.0
编程方式,将
Access
数据表转换为
Word
文档,完全可以突破性
Office
自带转换功能的各种局限,按照用户所需要
的
Word
格式进行转换,极大地提高办公效率。
参考文献:
[1]
刘海涛
.Access
中实现读写
OLE
字段及制作
Word
报表
[J].
电脑学习
,2009(2).
[2]
李峰
.
在
Access
与
Office
其它成员之间交流数据
[J].
应用经验
,2005(4).
[3]
付全
.
浅析
Office
成员间的数据交流
[J].
科技资讯
,2008(27).
6408
数据库与信息管理
本栏目责任编辑:代影


发布评论