中国电建集团昆明勘测设计研究院有限公司云南昆明650051
摘要:ADO(ActiveXDataObject)控件是一个用于存取数据源的COM组件,它提供了编程语言和统一数据访问方式OLEDB的一个中间层,使用ADO控件可以快速地创建一个到数据库的连接。本文就根据某水电站外部变形监测项目的实际情况和需求,利用VB中ADO控件实现了对该项目EXCEL监测数据库的管理。
关键词:VB,ADO控件,EXCEL数据库,管理
在水电站的外部变形监测中,常常涉及到大量监测数据的管理。一般利用EXCEL或者ACCESS数据库来实现对这些数据的管理,但在实际操作的过程中,却会遇到诸多难题。例如,每天的监测数据如何录入数据库。若采用手工录入,则几百个监测点的数据要在一天之内录入,对工程人员来说难以完成,并且容易出错。而若是采用专业的软件,则价格较为昂贵,对于小项目而言,难以承受。为此,本文提出,可以利用VB中的ADO控件实现对EXCEL数据库的管理。
1.ADO控件的介绍
VB数据访问模型经历了DAO(DatabaseAccessObject)、RDO(RemoteDataObject)到ADO(ActiveXDataObject)三个重要阶段[1]。数据访问模型通过设置对象属性以及附加到对象的方法,传递VB对数据库的访问请求,再由数据库管理系统处理这些请求,实现对数据库真正的操作。VB中的ADO对象模型是以OLEDB为基础的最新的数据访问模型,它的特点是结构简单,可访问的数据源丰富,访问的速度快,效率高,是未来数据访问技术的主流。
ADO(ActiveXDataObject)对象模型由三个成员组成,它们分别是:Connection、Command和Recordset。其中,Connection用来连接数据源,Command是从数据源获取所需数据的命令信息,Recordset是所获取的一组记录组成的记录集[2]。而为了在VB程序中使用ADO对象,必须先为VB的工程引用ADO对象库,即在工程的“引用”菜单项里选取“MicrosoftActiveXDataObject2.6Library”选项。ADO数据控件是ADO对象模型的可视化操作控件[3],是一个ActiveX控件,在VB中名称为ADODC的控件,但使用前应在工程的“部件”菜单项里选取“MicrosoftADODataControl6.0(OLEDB)”选项,将该控件添加到工具箱中[4]。
2.VB的ADO控件实现对EXCEL数据库管理的实例
在某水电站外部变形监测工程中,以1135m高程以上的左右岸坝肩边坡监测为例,观测频率为每周观测2次,每期观测的总点数为47个,其中,左岸23个点,编号为TP1L到TP23L,右岸24个点,编号为TP1R到TP24R。观测方法为以平面控制网点为工作基点,按二等边角网观测技术要求观测,水平角观测9个测回,天顶距观测9个测回,边长观测4个测回[5]。之后平差计算可以得到监测点每期的三维坐标,经比较可以得出每个点的变化量。每天平差计算后将当天所观测的监测点的坐标复制到一个EXCEL文件中,形成原始数据的EXCEL文件,格式见表1。
若采用手工输入每个监测点的三维坐标,则对于1135m高程以上的左右岸坝肩边坡监测的EXCEL数据库而言,工作量较大,并且效率不高,容易出错。所以,利用程序最基本的思想来解决这个问题,即将人工反复的劳动程序化,自动化,以节约人力资源,提高工作效率,并大大降低出错的概率,借此实现对EXCEL数据库的简单管理[6]。
首先,在VB中建立工程。定义两个数据库连接Connection对象变量及两个数据库记录集对象变量,代码如下:
DimadoConnection1AsNewADODB.Connection
DimadoRecordset1AsNewADODB.Recordset
DimadoConnection2AsNewADODB.Connection
DimadoRecordset2AsNewADODB.Recordset
用adoConnection1连接原始数据的EXCEL文件,CommonDialog1.FileName为原始数据的EXCEL文件名。
CommonDialog1.Filter="Excelfile(*.xls)|*.xls"
CommonDialog1.ShowOpen
adoConnection1.Open"Provider=Microsoft.Jet.OLEDB.4.0;PersistSecurityInfo=False;
DataSource="&CommonDialog1.FileName&";ExtendedProperties
='Excel8.0;HDR=Yes'"
用adoRecordset1取得原始数据的SHEET表的内容,sheetname1为SHEET表的表名。
sheetname1="原始数据"
adoRecordset1.Open"select*from["+sheetname1+"$]",adoConnection1,adOpenKeyset,adLockOptimistic
用pointname1()数组取得当天原始数据文件中的点号,并用pointname2()数组储存所有监测点的点号。
c=adoRecordset1.RecordCount’当天原始数据文件中的记录数
adoRecordset1.MoveFirst
Forb=0Toc-1
pointname1(b)=adoRecordset1(1)’取得原始数据文件中的点号
adoRecordset1.MoveNext
Next
pointname2(0)="TP1L"
......
pointname2(46)="TP24R"
同理,用以下代码实现与EXCEL数据库的连接,CommonDialog2.FileName为EXCEL数据库的文件名。
CommonDialog2.Filter="Excelfile(*.xls)|*.xls"
CommonDialog2.ShowOpen
adoConnection2.Open"Provider=Microsoft.Jet.OLEDB.4.0;PersistSecurityInfo=False;
DataSource="&CommonDialog2.FileName&";ExtendedProperties
='Excel8.0;HDR=Yes'"
用adoRecordset2取得EXCEL数据库的SHEET表的内容,sheetname2为SHEET表的表名。又为了使当天的原始数据录入数据库相应的SHEET表中,程序的主要代码如下:
Fori=0To46
adoRecordset1.MoveFirst
Forj=0Toc-1
Ifpointname1(j)=pointname2(i)Then
sheetname2=pointname2(i)
adoRecordset2.Open"select*from["+sheetname2+"$]",adoConnection2,adOpenKeyset,adLockOptimistic
adoRecordset2.Fields(0)=adoRecordset1.Fields(0)
......
adoRecordset2.Fields(4)=adoRecordset1.Fields(4)
Else
adoRecordset1.MoveNext
EndIf
Next
Next
上述代码可以实现将原始数据中的点号,日期,三维坐标输入EXCEL数据库中对应的SHEET表中,而为了计算当期位移量和累计位移量,可以利用ADO控件的MovePrevious方法实现,在此,不予赘述。而计算出累计位移量以后,就可以利用累计位移量画出时间~位移量过程曲线图,直观的表现出监测点的变化情况[7],监测点TP4L的时间~位移量过程曲线图见图1。
图1TP4L时间~位移量过程曲线图
总而言之,通过定义两个数据库连接Connection对象变量,分别去连接两个要操作的EXCEL文件,又利用两个数据库记录集Recordset对象变量,去取得要操作的记录集内容,之后就可以通过一定的算法和函数,达到预期的目的[8~9]。
3.结语
通过以上的介绍和分析可知,利用VB中的ADO控件可以实现对各种类型的EXCEL数据库的管理,并且在VB中实现了数据库的操作功能后,又可以生成EXE文件,方便数据库管理员在平时使用,实现了将人工反复的劳动程序化、自动化,节约了人力资源,提高了生产效率,并且大大降低了数据处理过程中出错的概率,保证了成果的质量。而在各行业实际工作中的诸多应用也表明,采用ADO控件可以有效的解决数据库连接的问题,具有很高的利用价值。
参考文献:
[1]王萍,聂伟强.VisualBasic6.0程序设计基础教程[M].北京:电子工业出版社,2012:1–305.
[2]董国芃.ADO控件在VB中的应用[J].哈尔滨职业技术学院学报,2009,6:122–123.
[3]周桂云.VisualBasic中ADO控件使用的探讨[J].黑龙江科技信息,2008,7:75–76.
[4]李德录,王昱,杨小萍,等.VB下基于ADO的数据库访问技术[J].工业仪表与自动化装置,2011,4:12–15.
[5]DL/T5173-2012,水电水利工程施工测量规范[S].北京:中国电力出版社,2012.
[6]白爱民.EXCEL数据库的应用[J].环境科学导刊,2011,30(5):98–100.
[7]钞小林.EXCEL数据库表的数据采集录入技巧[J].信息工程,2016,6:15.
[8]董平.VB语言环境下数据库访问技术的分析与应用[J].电子技术与软件工程,2014,4:212-213.
[9]张建莉.VisualBasic中利用ADO技术访问数据库分析[J].农业网络信息,2013,11:42-43.