基于Webaccess平台的SQL server数据库的应用
2013-11-24张天开王显静孙亦霖
魏 凯,张天开,王显静,孙亦霖
(青岛理工大学 自动化学院,山东 青岛 266033)
某空调通风试验台以Webaccess作为软件平台,用于采集测点数据、执行算法并输出控制信号。但在空调通风试验台的项目中,风速、压力和温度总共有140个采集点,如果采用Webaccess内部点,无法进行存储。因为这些点的数据要被实时地保存。为此,本文介绍了基于Webaccess平台、采用SQL sever作为本工程节点的数据保存数据库,同时也考虑了可以方便其他局域网的应用程序访问本机上的数据,以作为分析的依据。
在本系统中,应用程序访问SQL数据库通过ODBC或ADO两种方式。ODBC是微软开发的数据库编程接口,应用程序可以通过ODBC访问来自不同数据库管理系统的数据。在Windows系统中,包含有ODBC接口的管理程序,如果要使用ODBC数据源,必须首先创建和配置数据源。ODBC管理器根据数据源提供的数据库的位置、数据库的类型和ODBC驱动程序,建立与数据库的连接,应用程序对数据库的操作通过ODBC完成。ADO是微软提供的一种面向各种数据源的高级接口,开发人员只需编写访问数据库的代码而不用去关心如何去实现,即只要关心和数据库的连接;ADO通过OLE DB访问和操作数据库服务器中的数据,通过ADO可以连接数据库,并且指定访问数据源的命令,最后执行命令。
在本系统中,连接一个本地 SQLserver,并在这个服务器中建立了一个shuju数据库,这个数据库含有10个数据表,分别为:1个存储修正值的表,3个实时的数据保存数据表,3个数据坐标直接读取表和3个历史坐标存储总表。Webaccess在采集数据之后,存入数据库,数据库再把数据分享到局域网。整个系统的数据流向图如图1所示。
图1 整个系统的数据流向
1 通过ODBC访问数据库
在Windows系统中,采用Webaccess作为软件平台,其本身支持对数据库的读写,但需要在Windows的ODBC管理器中添加ODBC数据源。在Windows XP系统的控制面板的管理工具中,数据源管理器中添加SQL server驱动、命名、选择服务器,然后添加数据库 shuju,测试连接即完成。每次在脚本中执行SQL语句、进行操作数据库之前,必先连接数据源。下面介绍如何连接shuju数据库、读写存储温度的数据表TDATATABLE和存储矫正值的数据表xiuzheng。
(1)在xiuzheng数据表中存储了在Webaccess中对每个点的传感器数据的矫正值,每当每个点的数据存储到数据库之前,必须读取xiuzheng表中的矫正值,加到读入的数据值上。其代码如下:
(2)将读到的传感器测量的点的数值加上矫正值存储到TDATATABLE。其代码如下:
2 通过ADO接口连接到数据库
(1)在Webaccess中局部点存储了坐标值,只有当局部点文件被加载时才能把这些点赋值。本文采用在Webaccess的总体脚本中添加VB辅助程序、运行总体脚本时在VB程序中给这些局部点赋值。
在VB辅助程序中,VB控件作为第三方控件在Webaccess平台中实现与数据库的连接。由于嵌入到Webaccess中的控件是通过bwocxrun.exe与Webaccess通信,因此要把bwocx.ocx引用到VB中。在VB中新建ActiveX控件—>工程—>部件 bwocxrun ActiveX Control modole—>接口向导—>hWnd—>映射到 UserControl—>数据类型为string—>在空白处添加ocx控件。
在VB控件中建立与SQL数据库的连接,本系统采用ADO连接数据库,而在VB中采用ADO接口。主要有两种方式:一是采用ADOdata控件连接数据库,二是采用ADO对象与数据库连接。在采用第二种方式时还有两种方式:分别是ADO对象和ODBC数据源连接或者ADO对象和指定的OLE DB提供者连接数据库。本文采用ADO对象和指定的OLE DB连接方式。以下是与TXYZTABLE的连接:
(2)在本系统中,由于如果改变测点额定坐标,将会使以前的坐标信息全部丢失。为了存储过去的历史坐标,系统建立了一个历史坐标数据表。利用Delphi编写了一个辅助程序将当前的测点坐标存储到数据库中,当测量点修改后,可以运行该程序将改动的坐标存储到历史坐标数据库中。当在使用以前的测量点时,也可以在程序中选择以前存储的历史坐标加载到测量点的局部点。
使用Delphi编写试验坐标处理程序时,其程序采用ADO数据库访问接口进行连接数据库,采用ODBC驱动程序连接数据源。图2为该程序的界面。
图2 Delphi试验坐标处理程序的界面
在编写程序时,需要在新建的窗体上添加ADOConnection和ADOQUERY控件。其中这ADOConnection的 connectionstring 属 性 为 ”Provider=MSDASQL.1;Persist SecurityInfo=False;UserID=sa;DataSource=shuju”,并为ADOQUERY添加connection属性为ADOConnection的name[4]。
在MPXYZTABLE中,每一条记录的第一个字段表示第几条实验记录。下面是以压力历史坐标表演示将数据编号读出,并将选择的编号的数据记录读取到坐标数据表的示例:
下面是把历史坐标中选择的编号相应的记录输出到全局变量中,然后把这些变量再写入到坐标表中的代码:
以上就是在Webaccess中SQL数据库的调用和操作。在实际的应用中只要掌握简单的查询语句,就可以对数据库进行操作。
[1]研华(中国)公司自动化事业群.Advantech WebAccess产品使用手册[S].2009.
[2]陈艳峰,高文姬,邵蕴秋,等.Visul Basic 数据库项目案例导航[M].北京:清华大学出版社,2004.
[3]刘德生,张天开.基于VB的WebAccess组态功能扩展[J].微型机与应用,2011,30(12):29.
[4]郑阿奇.Delphi实用教程 [M].北京:电子工业出版社,2006.