技术论坛

 WINCC中使用ADO对象连接数据库 例子 常用属性 方法

返回主题列表
作者 主题
柳叶飘飘
侠圣

经验值:2634
发帖数:95
精华帖:7
楼主    2017-01-09 22:03:53
主题:WINCC中使用ADO对象连接数据库 例子 常用属性 方法 精华帖 

本人搬自自己的新浪博客 这里给大家分享一下


在WINCC中连接数据库可以使用ADO控件进行连接数据库,但是通常都不是用的ADO控件进行连接数据库,以下讲讲winccZ中使用ADO对象连接查询数据库。以下以报警记录为例。

一、了解ADO对象

    1.1ADO对象操作数据库是微软提供的一种接口。

    1.2对ADO对象的访问使用CreateObject函数(详情请参看CreateObject函数资料)

      ADO组件的前缀是ADODB,所以访问的时候必须为ADODB.XX(X代表对象)

      eg:

         dim conn,oRs,oCom

         Set conn = CreateObject("ADODB.Connection")   'Connection对象

         Set oRs = CreateObject("ADODB.Recordset")     'ADODB.Recordset对象

         Set oCom = CreateObject("ADODB.Command")      'ADODB.Command命令对象



二、对象

    2.1 Connection 对象

     2.1.1  open 方法

      语法

      connection.Open ConnectionString,UserID,Password,OpengOptions

      说明

      ConnectionString:可选参数,字符串,包含连接信息

      UserID:可选参数,字符串,包含建立连接时候用的用户名

      Password:可选参数,字符串,包含建立连接时候用密码

      OpenOptions:可选参数,连接打开方式

   eg1:(连接数据库代码方法1,仅连接部分代码)

      Dim conn

      Dim tagDSNName

      Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")

      Set conn = CreateObject("ADODB.Connection")

      conn.ConnectionString = "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"

      conn.CursorLocation = 3

      conn.Open

  eg2:(连接数据代码方法2,连接部分代码)

      Dim conn

      Dim tagDSNName

      Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")

      Set conn = CreateObject("ADODB.Connection")

      conn.CursorLocation = 3

      conn.Open  "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"

 

     2.1.2  close方法

     connection.close

  eg:

      Dim conn

      Dim tagDSNName

      Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")

      Set conn = CreateObject("ADODB.Connection")

      conn.CursorLocation = 3

      conn.Open  "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"

     '这里写上对数据库查询,修改等操作

      conn.close

    2.1.3 execute方法

      语法

    Cn.Execute strCommand,[IngRowsAffected[,IngOptions]]

     说明

     strCommand:可以是查询语句、表名、存储过程名等

     IngRowsAffected:可选参数,返回Insert、Update 、Delete查询语句后所影响的数目

     IngOptiongs: 参数可以如下

       adCmdUnkown:Command类型未定,由数据源提供者去判断Command语法

       AdCmdFile:Command是和对象类型相应的文件名称

       adCmdStoredProc:Command是存储过程名称

       adCmdTable:Command是能产生内部SELECT*FROM TableName查询的表名称

       adCmdTableDirect:Command是能直接从表中获取行内容的表名称

       adCmdText:Command是一条SQL语句

   eg:

      Dim conn,oCom,oRs

      Dim tagDSNName

      Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")

      Set conn = CreateObject("ADODB.Connection")

      conn.CursorLocation = 3

      conn.Open  "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"

      Set oCom = CreateObject("ADODB.Command")

      Set oRs = CreateObject("ADODB.Recordset")

      oCom.CommandType=1

      Set oCom.ActiveConnection = conn

      oCom.CommandText ="ALARMVIEW:Select * FROM AlgViewCHT "

      Set oRs = oCom.Execute

      '以上4句还可以写成  Set oRs=conn.Execute("ALARMVIEW:Select * FROM AlgViewCHT ")

       

      conn.close

  2.2 Recordset对象

     Recordset 常用属性

        RecordsetCount:返回当前记录的数目

        BOF:表示当前记录位于该对象第一个记录之前

        EOF:表示当前记录位于该对象最后一个记录之后。

        movefirst:移动到第一条

        movenext:移动到下一条

        movelast:移动到最后一条

    eg:

      Dim conn,oCom,oRs

      Dim m

      Dim tagDSNName

      Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")

      Set conn = CreateObject("ADODB.Connection")

      conn.CursorLocation = 3

      conn.Open  "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"

      Set oRs = CreateObject("ADODB.Recordset")

      Set oRs=conn.Execute("ALARMVIEW:Select * FROM AlgViewCHT ")

      m = oRs.RecordCount

      msgbox "报警行数"&m

      conn.close

   2.2.1 Open方法

      语法

      recordset.Open Source,ActiveConnection,CursorType,LockType,Options

      说明

      Source:可选参数,变体型,计算Command对象的变量名、SQL语句、表名、存储过程调用或持久的                    Recordst文件名

      ActiveConnection:可选参数,变体型,计算有效Connection对象变量名或字符串,包含                           ConnectionString参数

      CursorType:可选参数,用于确定数据提供者打开Recordset时应该使用游标类型,类型如下

             adOpenForwardOnly:打开仅向前类型游标(默认类型)

             adOpenKeyset:打开键集类型游标

             adOpenDynamic:打开动态类型游标

             adOpenStatic:打开静态类型游标

               注:具体解释请参考百度结果,这里我们主要讲解应用方面的东西。

       LockType:可选参数,确定数据提供者打开Recordset时应该使用的锁定(并发)类型的LockTypeEnum                值,类型如下

             adLockReadOnly:只读,默认值

             adLockPessinistic:保守式锁定,提供者完成确保成功编辑记录所需的工作,通常通过在编辑时                                候锁定数据源的记录来完成。

             adLockOptimistic:开放式锁定,提供者试用开放式锁定,只在调用Update方法时才锁定记录。

             adLockBatchOptimistic:开放式批更新,用于批更新模式

       Optiongs:可选参数,长整型,用于指示数据提供者如何计算Source参数,或从以前保存的Recordset                 中恢复Recordset(以下省略参数类型讲解)

   eg:

         Dim conn,oRs,oCom

         Dim m,i

         Dim tagDSNName

         Set tagDSNName = HMIRuntime.Tags("@DatasourceNameRT")

         Set conn = CreateObject("ADODB.Connection")

         conn.CursorLocation = 3

         conn.Open "Provider=WinCCOLEDBProvider.1;Catalog="&tagDSNName.Read&";Data Source=.\WinCC"

         Set oRs = CreateObject("ADODB.Recordset")

         oRs.open "ALARMVIEW:Select * FROM AlgViewCHT ",conn

         m = oRs.RecordCount

         MsgBox "报警行数"&m

         oRs.Close

         conn.Close

   2.3 Command对象

      2.3.1 对象属性说明

         ActiveConnection:使打开的数据库连接与Command对象关联

         CommandText:可执行的命令文本,如SQL语句

         CommandType:指定命令类型以优化性能

         CommandTimeout:设置提供者等待命令行的秒数

以下摘自西门子连通性文档

过程值记录集结构


报警



过程值归档:

Set oRs = CreateObject("ADODB.Recordset")

Set oCom = CreateObject("ADODB.Command")

oCom.CommandType = 1

Set oCom.ActiveConnection = conn

oCom.CommandText = "TAG:R,'PVArchive\Tag1','0000-00-00 00:10:00.000','0000-00-00 00:00:00.000'"

报警消息归档:

Set oRs = CreateObject("ADODB.Recordset")

Set oCom = CreateObject("ADODB.Command")

oCom.CommandType = 1

Set oCom.ActiveConnection = conn

oCom.CommandText = "ALARMVIEW:Select * FROM AlgViewEnu"

用户归档

Set oRs = CreateObject("ADODB.Recordset")

Set oCom = CreateObject("ADODB.Command")

oCom.CommandType = 1

Set oCom.ActiveConnection = conn

oCom.CommandText = "SELECT * FROM UA#Test"

关于数据集可参考《ConnectivityPackInfoSystem_zh-CHS》文档其中非常详细

  如果需要了解更多的方法,属性,请查阅ADODB手册上面非常的详细,本文并非专门讲解ADODB对象的文章而是重点在讲WINCC中如何使用方法,欢迎交流学习 。

柳叶亲月夜

QQ:275578306


努力赚钱 养家糊口
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。