基于VB与SQL Server数据库的试验管理软件系统的开发研究

2014-11-25 03:05解建侠徐乐党兴华
安徽建筑 2014年2期
关键词:窗体试验室表单

解建侠,徐乐,党兴华

(1.安徽建筑大学电信学院,安徽 合肥 230601;2.安徽省建筑科学研究设计院,安徽 合肥 230001)

0 前 言

随着计算机技术和通信技术的不断发展,办公自动化已成为大势所趋。通过调研,笔者发现多数混凝土企业的信息化程度偏低,劳动强度大,生产效率低,试验人员迫切要求建立一个轻松、有效、准确的试验管理系统。针对上述需求,笔者用Visual Basic 6.0、SQL Server 2000和Crystal Reports 9编制了一套混凝土试验室试验管理软件系统,使用该系统能够提高工作效率,降低出错率,提高数据安全。

1 功能模块

1.1 登陆模块

根据不同的用户权限赋予用户不同的业务操作权限,成功登陆后,只有管理员才能使用相关的管理类菜单。

1.2 业务模块

能够实现试验委托、试验记录和试验报告过程,以上三个过程中,对于不符合要求的表单填写,程序在保存时会进行识别,提示用户做相应的修改,把有效的信息存入数据库。

1.3 查找及批量打印模块

对于写入数据库的试验委托、记录或者报告,支持用户以编号、日期、类别、委托单位、工程名称等关键字或各个关键字的组合进行模糊批量查询,查询结果可实现预览、批量打印输出。

1.4 数据库模块

该模块只有管理员有权限使用,主要包括本地数据库的备份(导出)、还原(导入)、数据库的上传部分。

1.5 管理模块

该模块只有管理员有权限使用,主要包括密码修改、用户管理、试验室名称、试验编号方式、工程管理、价格管理、设备管理等部分。软件的功能与结构见图1。

图1 软件用例图

图2

2 关键技术分析

2.1 SQL Server数据库方面

①使用Power Designer创建数据库。作为数据库建模工具,它能够迅速高效地建立数据库、表、视图等,还能把数据库的生成过程导出为SQL脚本语言,便于快速移植。

②数据库中查询使用视图技术。项目中,所有委托单、记录单、报告单和配置参数的查询都是通过调用视图实现的。由于其预编译性,因此能够获得很高的执行效率,相较于传统的直接传递SQL查询语句,降低了网络数据的传输量;还能够简化查询语句的书写,增加数据库的安全性。

③表中记录的增、删、改等固定操作使用存储过程技术。存储过程是一系列已经预编绎过的SQL语句,因此运行速度很快,而且运行比较稳定;同时,调用时只需传递很简单的命令和参数即可,减少了网络流量;执行结束后,可以返回单个或多个结果集以及返回值,这样,运算放在服务器端进行,减少了客户机的压力。项目中,在设计对数据库表单修改、保存等操作时大量使用了该技术。

2.2 Visual Basic编程方面

①使用ADO对象类型访问数据库。ADO对DAO进行了扩展,具有更多的属性、方法和事件;同时,在VB中不能直接访问OLEDB,但ADO封装实际上可以实现OLEDB的所有功能;ADO比ODBC具有更高的效率、更好的可扩展性和灵活性。因此,本项目主要采取的是ADO方法,使用ADO对象模型访问数据库。另外,少数只查找不涉及编辑的表单,直接使用ADOData控件访问数据库,更加简单快捷。

②使用标准模块(BAS)。对项目中需要频繁使用的,如:连接数据库、断开与数据库的连接、执行数据库操作语句、执行数据库查询语句、加载下拉列表框内容、清空表单、加载表单按钮状态等操作,将其制作成公用过程(Public Sub)或者公用函数(Public Function),统一放入标准模块中,实现代码复用,增强了程序的条理性。

③使用类模块(CLS)。笔者创建了“用户”这个类,赋予它“用户名”、“密码”、“用户类型”三个基本属性,以及“清空属性”、“删除用户”、“增加用户”、“修改密码”、“查询用户信息”、“查询用户是否存在”、“修改用户信息”、“获取用户权限”等十几种方法。其中很多种方法都包含着操作数据库的复杂语句,这样封装复杂代码,方便了复用,实现了面向对象和程序的结构化,便于后期维护或代码移植。

④给窗体设置自定义属性来在窗体间传递参数。窗体间传递参数的方法有:使用全局变量传递参数、使用窗体标准属性传递参数、使用给窗体设置自定义属性传递参数。第一种作用域是全局出现错误将难以发现,同时增加了窗体间的耦合。第二种缺点是不便表达参数的意义。本项目采用第三种,即在窗体的声明部分用Public定义变量来作为窗体的自定义属性,在其他模块中就可以设置这些自定义属性的值。这样,既准确地传递了参数,又设置了有意义的名称。

⑤通过状态函数给表单上的按钮加载状态值(有效或无效)。笔者的方法是:先穷举表单上按钮所有符合业务逻辑的状态组合,建立“窗体状态参数-所有按钮状态”的二维表格,然后在bas模块文件中建立“窗体名称”-“窗体状态标示码”为二元参数的全局型的过程(Public Sub),调用时用“窗体状态标示码”值“查”表,读取相应的窗体按钮状态并加载。这样,简化了按钮间复杂的逻辑关系编程,增强了程序的结构感。

2.3 Crystal Reports报表方面

报表是应用程序中不可缺少的部分,试验室的报表主要体现在需要纸质打印的各类单据,材料试验项目繁多、表格复杂。VB6作为较老的语言,自身的报表功能是其公认弱项。水晶报表(Crystal Report)是业内专业、强大的报表系统,本项目尝试把水晶报表和VB6结合起来作为其报告输出工具,提出了一个解决方法。

考虑到实际业务中单据样式变化不大,因此采用推模式(PULL),把水晶报表rpt文件当成模板,在设计器里设计好报表格式,再组装DataSet就可以生成报表了。Crystal Report9和VB6连接时报表预览窗体的关键代码简述如下:

Dim SandReportReport As New CR_SandReport'SandOrder是建立的报表的名称

DimSandReport_Connection As ADODB.Connection'建立一个ADO连接

DimSandReport_adoRSAsADODB.Recordset

PrivateSub Form_Load()

'创建并绑定ADORecordset对象

Set SandReport_Connection=New ADODB.Connection

Set SandReport_adoRS=New ADODB.Recordset

SandReport_Connection.Open Conn'打开连接,其中conn为系统连接字符串

SandReport_adoRS.Open strSQL,SandReport_Connection,adOpenDynamic,adLockBatchOptimistic

SandReportReport.Database.SetDataSourceSandReport_adoRS'动态设置报表数据源

CR_SandOrder.PaperSize=crPaperA4'设置报表纸张大小为A4

Me.WindowState=2

Screen.MousePointer=vbHourglass

CRViewer91.ReportSource=SandReportReport

CRViewer91.ViewReport'显示报表

Screen.MousePointer=vbDefault

End Sub

3 实 例

以混凝土砂试验委托、试验、报告、查找等主要功能为例,展示一下程序运行效果,见图2。

4 结 语

使用该软件,能把混凝土企业试验室的众多业务整合在一起,条理明晰;避免了试验人员繁琐的计算、复验过程;报表美观大方,同时支持预览、批量打印。实践证明,该软件能够给试验室提供有力的支持和帮助,对于类似的试验室建设,也有着较好的借鉴意义。

[1]史斌星.Visual Basic贯通教程[M].北京:清华大学出版社,2003.

[2]黄增荣.Visual Basic 6.0计算方法开发方法指南[M].上海:复旦大学出版社,2000.

[3]汪黎明,等.安徽省建设工程检测人员培训考核指南[M].郑州:黄河水利出版社,2007.

猜你喜欢
窗体试验室表单
商品混凝土试验室的质量控制管理
电子表单系统应用分析
DB Living Lab试验室ETCS L3演示试验
试谈Access 2007数据库在林业档案管理中的应用
基于图表示和匹配的表单定位与提取
浅谈网页制作中表单的教学
交通工程试验室检测的质量控制研究
高速公路工地试验室溯源管理系统研究
巧设WPS窗体控件让表格填写更规范
动态表单技术在教学管理中的应用*