紫金桥组态软件操作SQL关系数据库的两种方法
前言
在实际工程项目中,有时工程不仅仅需要和实时数据库进行数据交换,有可能还需要和关系数据库进行数据交换,为此提供了多种与关系数据库通讯的方式。如:自由报表,全局函数,绑定表等。当然也有收费的数据转储组件,本节不做讨论。本节主要介绍前两种方式:自由报表,全局函数。
方法一:通过自由报表取操作
自由报表方式与关系数据库进行通讯,首先在数据库中创建“报表关系数据源点”。该点在运行时负责和关系数据库进行联结,并且把从报表发来的命令转交关系数据库执行,并最终将关系数据库返回的结果传递给报表。
1、创建报表关系数据源点
2、创建报表,并关联报表关系数据源点
3、执行SQL语句
函数参考:
SqlSelectCmd(String csCmd)
说明:
设置报表查询的Select语句。报表虽然可以设置初始的Select语句,但是在这里可以更改它。比如Select * from db where UpdateTime > #2006-06-01 00:00:00#
参数:
csCmd: 需要设置的Select语句。
示例:
#Rep.SqlSelectCmd("需要设置的Select语句");//设置报表查询的Select语句。
SqlExeCmdNoRet(String csCmd)
说明:
向“报表关系数据源点”发送不需要返回记录集的SQL命令。
参数:
csCmd: 需要设置的Select语句。
示例:#Rep.SqlExeCmdNoRet("Insert Into db Values('2006-06-26 15:30:23','A1.PV',123)")。
SqlGetError() As String
说明:
返回执行关系数据命令时返回的错误,常常用在报表的返回错误结果触发脚本上。
返回值:
字符型,发生的错误。
示例:
MsgBox(#rep.SqlGetError());//返回执行关系数据命令时返回的错误。
全局函数
全局函数查询方式包括两种方法,第一种是直接使用全局函数的方法;第二种是表模板和绑定表结合的方法。本节介绍第一种,直接使用函数操作关系库。
使用全局函数查询方式,首先要应用SQLConnect函数与指定的数据库建立连接,如果指定的远程数据库不存在,该函数可能要等待几十秒。当在web(包含StartWin)模式下时,缺省是通过实时数据库访问关系库,为了直接访问关系库,需要在使用SQLConnect之前执行语句:“SQLSetHost(“NONE”);”SQLSetHost函数用来设置执行SQL语句的机器,以便SQL脚本在该远程机器上运行。当关系数据库连接使用完后,应该使用SQLDisconnect函数来断开连接。
1、SQLConnect函数连接数据库
2、执行SQL语句
SQLConnect函数里的ODBC串的获取:
1、通过鼠标脚本里的数据源选择功能选择
2、通过报表关系数据源点获得
相关函数:
SQLConnect(Int& ConnectID, String SourceDesc) As Bool
说明:
与指定的数据库建立连接。如果指定的远程数据库不存在,该函数可能要等待几十秒。在web(包含StartWin)模式下缺省是通过DB访问关系库,为了直接访问关系库,需要在使用SQLConnect()之前执行语句:“SQLSetHost("NONE");”。
参数:
ConnectID: 数据源标识,为返回值,该值将用于其它后续SQL函数。
SourceDesc: 数据源描述。数据源描述可以通过脚本中工具条按钮“SQL连接“按钮得到。
返回值:
0为失败,1为成功。
示例:
SQLConnect(ConnectID,"DSN=abc;DBQ=D:\abc.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;");
//与Access数据库文件abc.mdb建立连接
注意:
参数必须为变量,返回函数执行后的数据。数据源使用完后,使用SQLDisconnect来断开连接。
SQLExecute(Int ConnectID, String SqlCommand)
说明:
执行SQL命令。
参数:
ConnectID: 数据源标识,由SQLConnect调用返回。
SqlCommand: 要执行的SQL命令。
返回值:
无。
示例:
SQLExecute(ConnectID,"Select * From Mytab");//使用Connect关联的数据库,执行指定的SQL语句
注意:
该语句不能与其他语句配合使用,如示例中选择的结果不在其他语句操作的数据集中,因此不能显示。
演示视频:演示视频