VBS读取WINCC变量归档-归档数据库连接
今天介绍一下WINCC归档数据库方面的内容:
博途WINCC微信群:15961872327
博途WINCC微信群:15961872327
3、连接变量归档数据库
3.1 ADO Connection 对象
3.1.1简介
ADO Connection 对象用于创建一个到达某个数据源的开放连接。通过此连接,您可以对一个数据库进行访问和操作。
如果需要多次访问某个数据库,您应当使用 Connection 对象来建立一个连接。您也可以经由一个 Command 或 Recordset 对象传递一个连接字符串来创建某个连接。不过,此类连接仅仅适合一次具体的简单的查询。
以下属性、方法、事件、集合资料来自http://www.w3school.com.cn,由于W3School里面的资料好像主要针对网页开发的,可能部分属性(方法等)不适合VBS,能测试的,我尽量测试一下,不能测试,可能我也不会的就不再测试,请见谅。
3.1.2属性
属性
描述
Attributes
设置或返回 Connection 对象的属性。
CommandTimeout
指示在终止尝试和产生错误之前执行命令期间需等待的时间。
ConnectionString
设置或返回用于建立连接数据源的细节信息。
ConnectionTimeout
指示在终止尝试和产生错误前建立连接期间所等待的时间。
CursorLocation
设置或返回游标服务的位置。
DefaultDatabase
指示 Connection 对象的默认数据库。
IsolationLevel
指示 Connection 对象的隔离级别。
Mode
设置或返回 provider 的访问权限。
Provider
设置或返回 Connection 对象提供者的名称。
State
返回一个描述连接是打开还是关闭的值。
Version
返回 ADO 的版本号。
表格1
使用State属性可以查看数据源连接的状态。返回值如下:
常数
值
描述
adStateClosed
0
对象已关闭。
adStateOpen
1
对象已打开。
adStateConnecting
2
对象正在连接。
adStateExecuting
4
对象正在执行命令。
adStateFetching
8
正在检索对象的行。
表格2
唉悲剧了,从网上看到使用State属性可以看到数据库连接是不是已经打开,可是我不管怎么测试,只要用了open方法,该属性就等于1,应该是使用WinCCOLEDBProvider的原因,等待以后再测试连接SQL的吧….

图5
图中看出只设置了Provider属性,其他的都是空,State属性值竟然也等于1,跳过…..
ADO Connection测试如下:

图6
测试图可以看出State属性目前等于1,就是连接已经打开
3.1.3方法
方法
描述
BeginTrans
开始一个新事务。
Cancel
取消一次执行。
Close
关闭一个连接。
CommitTrans
保存任何更改并结束当前事务。
Execute
执行查询、SQL 语句、存储过程或 provider 具体文本。
Open
打开一个连接。
OpenSchema
从 provider 返回有关数据源的 schema 信息。
RollbackTrans
取消当前事务中所作的任何更改并结束事务。
表格3
一般用到的方法OpenClose Execute这三个,其他的的具体作用我也不是很了解了。
3.1.4事件
这个功能临时也用不到,只做参考
事件
描述
BeginTransComplete
在 BeginTrans 操作之后被触发。
CommitTransComplete
在 CommitTrans 操作之后被触发。
ConnectComplete
在一个连接开始后被触发。
Disconnect
在一个连接结束之后被触发。
ExecuteComplete
在一条命令执行完毕后被触发。
InfoMessage
假如在一个 ConnectionEvent 操作过程中警告发生,则触发该事件。
RollbackTransComplete
在 RollbackTrans 操作之后被触发。
WillConnect
在一个连接开始之前被触发。
WillExecute
在一条命令被执行之前被触发
表格4
3.1.5集合
集合
描述
Errors
包含 Connection 对象的所有 Error 对象。
Properties
包含 Connection 对象的所有 Property 对象
表格5
该集合的使用方法暂时不会…
3.2 数据库连接方法
3.2.1创建对象
Dim conn
Set conn =CreateObject("ADODB.Connection")
3.2.2 设置ConnectionString属性
ConnectionString 属性可设置或返回用于建立到数据源的连接的信息。
ConnectionString 属性w3school和手册上的不太一样,以手册为准,其实通过图6也能看出来他完整的参数:
参数
描述
Provider
用于连接的提供者的名称。
Catalog
WinCC 数据库的名称
如果使用 WinCC RT 数据库,则将采用以“R”为结尾的数据库名称 <Datenbankname_R>。也可使用数据库“CC_ExternalBrowsing”。如果已经通过 WinCC 归档连接器将换出的 WinCC 归档连接到 SQL Server,请使用它们的符号名称。
注释
对于透明访问,为“Catalog”输入 WinCC 项目名称;例如:“Catalog=WinCC_Project_Name”。
注释
如果通过“CC_ExternalBrowsing”访问消息归档或换出的归档,则该访问可能需要数分钟的时间。
可以通过脚本直接读取@DatasourceNameRT变量的值来设置该属性
Data Source
服务器名称
本地:“.\WinCC”或者“<计算机名称>\WinCC”
远程:“<计算机名称>\WinCC”
注释
为中央归档服务器输入透明访问,如果是冗余服务器,则通过 OLE DB 提供程序为“Data Source”输入以下内容:<符号计算机名称>::\WinCC。
注释
使用归档变量名称可在中央归档服务器 CAS 上直接访问归档变量。 中央归档服务器 CAS 将 CAS-ID 而不是归档变量 ID 作为 ID 返回: <符号计算机名称>\\<Achive_Var_Name>
在脚本里面可以直接读取变量@Servename
表格6
注释:您不能同时使用 Provider 和 File Name 参数。
在WinCCV7.4:使用 WinCC 系统手册 49页也有相关介绍
3.2 连接归档数据库
脚本参考手册里面的脚本,完整脚本如下:

图7
这一步连接数据库的脚本还是比较简单的,而且上方的脚本可以直接拿来就用