VB访问Access数据库的研究

2014-08-07 13:22陶佳琦翁正新
微型电脑应用 2014年10期
关键词:字段控件故障诊断

陶佳琦,翁正新

VB访问Access数据库的研究

陶佳琦,翁正新

介绍了实现此过程的主要步骤和程序代码,以地铁列车故障诊断系统为例,设计了一种VB通过ADO方式访问Access数据库的方法,能对不同数据表中的数据进行多次检索,检索结果能按需求同时显示在VB的数据表格控件中。介绍了实现此过程的主要步骤和程序代码。

VB;Access数据库;地铁列车

0 引言

在设计系统的过程中,数据库的程序设计是至关重要的,在程序运行过程中,更好地访问、检索及显示数据库中数据,能使程序更人性化、用户使用更便捷。地铁列车故障诊断系统数据库通过Access建立,维护人员在使用过程中,诊断系统会对数据库进行多次访问及检索从而给出诊断建议。本文针对地铁列车故障诊断系统,利用VB[1]中的ADO对象访问数据库,通过组合框控件及空的数据表作为数据存储中转点,使多次检索得到的多组数据能同时显示在VB的数据表格控件上,使维护人员能方便快捷地处理列车故障。

1 数据库及ADO对象简介

1.1 数据库的简介

Microsoft Office Access是微软把数据库引擎的图形用户界面和软件开发工具结合在一起的一个数据库管理系统。Access数据库具有存储方式简单,易于维护管理、界面友好,易操作、集成环境,处理多种数据信息等优点[2~3]。地铁列车故障诊断系统数据库,如表1所示:

表1 地铁列车故障诊断系统数据库

案例表列车号;时间;故障类型;故障现象;故障原因;编号存储列车发生过的故障案例 有诊断建议表 故障原因;排查顺序;次数 程序运行中存储检索的数据 无

数据库构建完成后,需在VB中采用合适的方式进行数据访问,VB作为一款强大的编程软件,支持DAO、RDO、ADO等多种访问数据库的方式,比较分析后,本文采用ADO方式对数据库进行访问。

1.2 ADO简介

ADO(ActiveX Data Object)称为ActiveX数据对象,是微软公司开发数据库应用程序面向对象的新接口,ADO数据库接口继承了早期基于ODBC的DAO、RDO所使用的对象模型,并加以改进,包含了较少的对象、更多的属性方法和事件。ADO有 7个对象:Command(命令)对象、Conection(连接)对象、Recorsdet(记录集)对象、Parameter(参数)对象、Field(域)对象、Error(错误)对象和Property(属性)对象,其中Conection对象主要用于应用程序和数据源的连接;Command对象主要有执行命令函数Execute等; Recordset对象主要包括记录集移动函数、记录集打开及关闭函数、创建新记录函数、删除及更新函数等[4~6]。

2 VB访问Access数据库

2.1 设计原理

程序的原理设计如图1所示:

图1 原理设计图

程序首先通过ADO的Connection对象连接诊断系统数据库,随后,通过ADO的Recorsdet对象结合相应的Sql语句,检索数据库得到“故障原因”、“排查顺序”、“次数”字段,通过将数据转存至组合框控件及诊断建议表,最终使数据显示在数据表格控件中。

2.2 具体步骤

A. Connection对象连接数据库

在访问数据库之前需建立与数据源的连接并保持,这一过程通过ADO的Conneciton对象实现,在连接过程中,首先,将Access数据库引擎类型、是否保存安全信息、数据来源等信息赋予字符串str,随后,设定con为新的ADO连接,再将字符串str赋予con的连接字段串属性,最后,通过con的open函数完成数据库的连接,具体代码如下:

1) str = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;

2) Data Source=" & App.Path & "地铁列车故障诊断系统.mdb"

3) Set con = New ADODB.Connection

4) con.ConnectionString = str

5) con.Open

B. Recordset对象检索数据

在ADO数据库编程中,可通过Recordset对象进行检索、添加、修改记录等操作,在本程序中,首先,设定了一个新的记录集rs,然后,通过调用Open()函数打开记录集,执行Sql语句,Open()函数的各项参数依次为sql,con,adOpenDynamic(动态游标), adLockOptimistic(乐观锁定),最后,通过MoveNext(移动到后一条记录)、AddNew(增加新记录)、Update(更新记录集)等常用操作,结合组合框控件、数据表格控件完成数据的检索、转存及显示。

在程序的检索过程中,依次得到了“故障原因”、“排查顺序”、“字段”3个字段并存储在组合框控件中,以“列车触发紧急制动”这一故障现象为例,检索结果,如图2所示:

图2 检索结果

各个字段的检索、显示过程及程序代码如下:

1)“故障原因”字段检索及存储“故障原因”字段的过程如图3所示:

图3 检索及存储“故障原因”字段流程图

程序首先通过调用Open()函数执行Sql语句,检索得到“故障原因”字段,随后,通过Do While循环语句,将“故障原因”字段中的数据存入组合框控件中。

程序代码如下:

01 sql = "select 故障原因 from 故障 where 故障类型

02 in ('" & Combo1.Text & "') and 故障现象 in ('" & Combo2.Text & "') "

03 Set rs = New ADODB.Recordset

04 rs.Open sql, con, adOpenDynamic, adLockOptimistic

05 Do While Not rs.EOF

06 Combo3.AddItem rs("故障原因")

07 rs.MoveNext

08 Loop

09 rs.Close

2)“排查顺序”字段

“排查顺序”字段的检索及存储过程与“故障原因”字段类似,在此不再赘述,仅给出相应的程序代码如下:

01 sql = "select 排查顺序 from 故障 where 故障类型

02 in ('" & Combo1.Text & "') and 故障现象 in ('" & Combo2.Text & "') "

03 rs.Open sql, con, adOpenDynamic, adLockOptimistic

04 Do While Not rs.EOF

05 Combo5.AddItem rs("排查顺序")

06 rs.MoveNext

07 Loop

08 rs.Close

3)“次数”字段

在检索及存储“次数”字段的过程中,由于每一个故障原因都要检索发生过的案例次数,

每次检索均需要重复打开记录集、检索数据、存入组合框、关闭记录集这一过程,因此,在编程中采用For循环语句,通过将相应的组合框项目数作为条件,将各个故障原因的“次数”存入组合框控件中。程序代码如下:

01 For i = 0 To Combo3.ListCount -1

02 sql = "select count(*) from 案例 where 故障原因

03 like '%" & Combo3.List(i) & "%' and 故障现象 = '" & Combo2.Text & "' "

04 rs.Open sql, con, adOpenDynamic, adLockOptimistic

05 Combo4.AddItem (rs(0))

06 rs.Close

07 Next i

C. 诊断建议表转存数据

为了使检索得到的3个字段能同时在数据表格中显示,需要将3个字段的数据同时转存至Access的诊断建议表中,转存结果,如图4所示:

图4 转存结果

转存流程如图5所示:

图5 转存数据流程图

整个过程通过For循环语句完成,利用Open()函数执行相应的Sql语句,通过记录集的增加新记录、更新记录等操作将组合框中数据转存至Access诊断建议表中。

相关代码如下:

01 For i = 0 To Combo3.ListCount - 1

02 sql = " select * from 诊断建议"

03 rs.Open sql, con, adOpenDynamic, adLockOptimistic

04 rs.AddNew

05 rs.MoveLast

06 rs.Fields(0) = Combo3.List(i)

07 rs.Fields(1) = Combo4.List(i)

08 rs.Fields(2) = Combo5.List(i)

09 rs.Update

10 rs.Close

11 Next i

D. 数据表格控件显示数据

在显示数据的过程中,首先设置记录集游标服务的位置为adUseClient(本地游标库提供的客户端的游标)。随后,调用Open()函数打开记录集,执行Sql语句,将诊断建议表中的内容先按“次数”降序、再按“排查顺序”升序。最后,通过将记录集赋予数据表格控件的数据源,完成数据的显示过程。显示结果如图6所示:

图6 显示数据

程序代码如下:

01 sql = " select * from 诊断建议 order by 次数DESC,排查顺序 ASC"

02 rs.CursorLocation = adUseClient

03 rs.Open sql, con, adOpenDynamic, adLockOptimistic

04 Set DataGrid1.DataSource = rs

05 End If

06 End Sub

3 总结

本文中提出的方法能很好地对Access数据库进行访问、检索及显示,使维护人员得到所需的数据,从而对地铁列车故障进行诊断,同时,该方法还有着很好的扩展性,针对不同程序背景,只需通过建立相应数量的组合框控件及空Access数据表,便能很好地对数据库进行多次检索,满足用户的不同需求。VB对数据库的处理有着强大的功能,在今后的系统开发中,应进一步对此加以研究应用,使程序更优化,用户操作更便捷。

[1] 国家863中部软件孵化器.Visual Basic从入门到精通[M].北京:人民邮电出版社,2010

[2] 高勇,符敢为.基于VC+ADO+Access的数据库访问技术在Pro/E环境下的实现[J] .机械设计与制造工程, 2013,42(3):14-17

[3] 董晶晶.基于VB与Access的人事信息管理系统设计[J].科技资讯, 2013(13):18-19

[4] 冯晓星,马晓静.VC基于ADO技术访问Access数据库[J].计算机与网络, 2013(8):54-56

[5] 贾保英.VB环境下ADO数据库开发技术[J].中小企业管理与科技, 2013(24):286-287

[6] 衣文凤,刘玫,王大鹏.Vb+Access在柴油机故障诊断系统界面记忆输入中的程序设计[J]. 科技创新导报, 2009(8):12-12

Study on VB Accessing to Access Database

Tao Jiaqi, Weng Zhengxin
(1.Department of Automation,Shanghai Jiao Tong University, Shanghai200240,China; 2. Rolling Stock Branch of Shanghai Rail Transit maintenance support Co.,Ltd., Shanghai200233, China)

Taking the fault diagnosis system of metro vehicle as an example, a method of VB accessing to Access database by ADO way is designed. This method is applied to retrieval the data from different data table. The retrieval results can be displayed on the VB datagrid control simultaneously according to the demand. The main process and the program code are also introduced.

VB; Access Database; Metro Vehicle

TP391

A

1007-757X(2014)10-0014-03

2014.05.15)

上海市自然科学基金(12ZR1415000)

陶佳琦(1987-), 男,上海,上海交通大学自动化系,硕士研究生,研究方向:故障诊断,上海,200240

翁正新(1966-),男,江苏,上海交通大学自动化系,副教授,博士,研究方向:故障诊断与容错控制,上海,200240

猜你喜欢
字段控件故障诊断
图书馆中文图书编目外包数据质量控制分析
基于包络解调原理的低转速滚动轴承故障诊断
基于.net的用户定义验证控件的应用分析
关于.net控件数组的探讨
数控机床电气系统的故障诊断与维修
因果图定性分析法及其在故障诊断中的应用
CNMARC304字段和314字段责任附注方式解析
无正题名文献著录方法评述
基于LCD和排列熵的滚动轴承故障诊断
关于CNMARC的3--字段改革的必要性与可行性研究