基于VB 6.0的检测报告生成系统的设计与实现
2022-02-03林晋立
林晋立
(广东产品质量监督检验研究院,广州 510330)
0 引言
在产品检测机构中,出具检测报告是检验员的日常工作。目前,检验员较多采用人工输入的方式将信息录入Word 文档并出具检测报告,报告内包含样品名称、规格型号、送检单位、样品图片等数据库信息,手动录入这些信息效率低下,且错误率高。若能使其自动生成于Word 文档的指定位置,辅助人工录入的方式,将极大提高工作效率。Visual Basic 具有图形用户界面GUI 及大量内置控件,使用Basic 语言编程,通过ADO、DAO 与数据库连接,无需复杂编程便可轻松高效地设计出应用程序[1]。
效率是产品检测机构的立身之本,为提高检验员出具报告的速度与准确度,本文基于Visual Basic(VB)6.0 平台设计了检测报告自动生成系统。
1 设计原理与方案选择
在检测报告中实现数据的自动录入需要用到编程软件,VB6.0 可便捷地连接Word、Excel等Office 办公套件并实现数据的导入与导出[2-3]。因此,可供考虑的检测报告自动生成方式有以下三种:①Excel表格数据直接写入;②VB读取Excel 数据写入Word;③VB 读取Access 数据库写入Word。
1.1 Excel表格数据直接写入
Excel 表格数据直接写入的方式是指:把存在于Excel 工作表1 中的数据作为数据库,Excel工作表2 作为需要生成的检测报告模板,使用VLOOKUP、MATCH 等查询检索函数便捷地将表1 所需数据写入表2 特定位置。这样只需在表2 中确定检索条件,就能调取表1 数据,生成相应的检测报告。
采用直接写入的方式需要对Excel 表2 的行高、列宽进行处理,使表2 模板格式与Word 相同,移植模板的步骤较为繁琐,适用于使用少量模板的情况。对检测工作实际而言,不同的检测样品所使用的报告模板均不相同,在Excel中处理起来十分复杂,因此不适合使用这种方式。
1.2 VB读取Excel数据写入Word文档
VB 读取Excel 数据写入Word 文档的方式是利用VB 软件平台分别与Excel 和Word 建立连接,先从Excel 中读取所需数据并显示于软件界面,再将这些数据保存到Word 文档的指定位置,信息传递路径为:Excel-VB-Word。
VB 可以通过引用对象库的方式调用Excel和Word进行读写操作,对于不同的Word检测报告模板,只需在程序中加载不同的模板路径即可,操作便利。但由于Excel 涉及到工作簿、工作表和单元格等属性,在VB中编程较为复杂。
1.3 VB读取Access数据库写入Word文档
VB 读取Access 数据库写入Word 文档的方式与调用Excel 类似,利用Access-VB-Word 的信息传递,将Access 数据库中相应数据通过VB保存到Word 文档的指定位置。Access 可根据表中的主键进行搜寻,配合其余字段即可获取数据库的全体数据,在VB中编程较为简单。
对比上述三种方案,结合检测报告出具实际,选择第三种方案,即通过VB 读取Access 数据库写入Word文档的报告自动生成方式。
2 软件代码与界面设计
本文以排烟防火阀门检测样品为实例,详细说明检测报告自动生成系统的软件代码与界面设计。建立防火阀门样品数据库,如图1 所示,检测报告模板如图2(a)所示。
图1 样品数据库示例图
图2 检测报告示例图
由图1 与图2(a)可知,数据库中形如检测单号、样品名称、规格型号等信息均为检测报告中需要录入的数据。
2.1 VB读取Access数据库代码
在VB 6.0 中连接Access 数据库,需要在菜单栏的“工程→引用”中添加Microsoft ActiveX Data Objects 6.1 Library,即Microsoft ActiveX 数据对象库6.1版本,也称为ADO库,版本号跟随操作系统。
连接Access 数据库并调用数据的VB 代码如下:
在上述代码中,“+App.Path+”表示相对路径,“+App.Path+‘检测样品数据库.accdb’”表示将检测样品数据库文件与执行软件放在同一文件夹内,可使执行软件连接并读取数据库。
2.2 VB写入Word文档代码
与连接Access 相同,VB6.0 连接Word 文档,需要在菜单栏的“工程→引用”中添加Micro⁃soft Word 15.0 Object Library,即Microsoft Word 15.0 对象库,版本号跟随操作系统。此外,向Word 文档写入数据前,需要确定数据显示的位置,可在Word 菜单栏的“插入→书签”中添加书签并设置书签名来实现。由图2(a)模板示例可知,出具此份检测报告需要输入的信息有:检测单号、产品名称、型号规格、生产企业、检测性质、随机号、检测数据和样品图片,多数信息已通过2.1 节的代码显示在TextBox 控件中,将这些信息写入检测报告模板并保存的代码如下:
上述代码中,P1~P8 是在Word 文档内设置的书签名,分别对应需要写入的数据Text1.Text~Text8.Text。数据自动跟随报告模板中的原有格式,无需通过编程设置。除了使用“.ActiveDocument.Bookmarks(‘书签名’).Range.Text=Text1.Text”语句向书签写入数据外,还可以在菜单栏的“开发工具→旧式工具”中添加文本域窗体控件,该控件和书签一样起到定位的作用,向文本域控件写入数据的代码为“.ActiveDocument.FormFields(‘文本域名’).Result=Text1.Text”。利用此方式写入的每个数据都是单独的整体,导出后可以修改数据格式,但无法逐字编辑。
在Word 书签位置插入图片的方法与写入数据略有不同,还需对图片大小进行设置,具体代码如下:
图片的尺寸可在控件Text10 和Text11 中自行设定,“Path”为图片路径,可使用Common⁃Dialog 控件将其具体路径加载至控件Text9 中,代码如下:
将数据库文件、检测报告Word 模板与VB工程放在同一文件夹下,在VB6.0 窗体中添加CommandButton、TextBox 和CommonDialog 控件,并在相应的CommandButton 控件中编写上述代码,运行程序便能获得数据自动生成的检测报告,如图2(b)所示。软件的代码编写与操作流程实例详见:https://list.youku.com/albumlist/show/id_68855948。
2.3 界面设计
除了编写程序代码,设计软件界面也十分重要。根据防火阀门检测报告中的相关信息,设计软件界面如图3所示。
图3 检测报告生成系统界面图
“查询”按钮下的程序代码为2.1 节中连接Access 数据库并读取数据的VB 代码,输入检测单号并点击“查询”按钮,样品信息逐一显示在相应位置;点击“打开”按钮弹出对话框,选中需要载入的图片,TextBox 中出现图片的具体路径;输入检测数据,设置图片的宽度和高度,点击“生成报告”按钮,执行2.2 节中VB写入Word 文档的代码,将数据和图片写入新建的检测报告模板中;点击“报告另存为”按钮,可自行设置报告的文件名及存储路径;记事板提供存储功能,在其中编辑信息并点击保存按钮后关闭软件,待下次启动时,信息仍将显示在记事板中。
3 报告生成系统的测试与分析
检测报告自动生成系统经过调试,能够稳定运行并生成报告。安排六位检验员分别使用此系统出具一份相同的检测报告,并对其出具报告的时间进行测试与分析。在六位检验员中,甲、乙、丙为熟手,对报告出具流程十分熟悉;检验员丁、戊、己为生手,未曾出具该样品的检测报告,测试数据如表1所示。表中,T1为人工录入用时;T2为系统操作用时。
表1 6位检验员出具报告用时测试
由表1数据可知,使用人工录入方式出具一份相同的报告,熟手所用的平均时间比生手快7.0 min;使用自动生成系统出具检测报告,熟手与生手用时相差不大;自动生成系统为生手检验员提供了更大的便利。
六位检验员使用人工录入方式出具一份报告的平均时间为13.4 min,使用系统操作的时间为5.7 min,效率比约为3∶7;采用检测报告生成系统出具报告的效率比采用人工录入方式高约135%。
4 结语
本文基于VB 6.0 编程软件设计了检测报告的自动生成系统,对系统代码的编写与界面设计作了详细介绍。系统通过VB 调用Access 数据库信息,并将数据和图片保存到Word 文档中,以Access-VB-Word 的数据传递方式自动生成检测报告。对六位检验员出具报告的时间进行测试,结果显示采用自动生成系统出具报告的效率相比人工录入方式高约135%,系统准确、高效,具有一定的应用价值。除了出具检测报告外,在日常办公中处理具有固定模板的Word 文档,均可通过Access-VB-Word 方式快速插入数据与图片,根据不同的模板与内容设计代码和界面即可。