| 作者 | 主题 |
|---|---|
|
iZhouSai 侠士 经验值:1429 发帖数:40 精华帖:8 |
楼主
主题:关于WINCC访问远程数据的采集和写入本地自建数据库
第一步保证远程的数据库能在本地的SQL程序中打开。 可以参照此博客的步骤进行配置 http://www.cnblogs.com/yougmi/p/4616273.html 然后就是代码区了! '//////////////////////////////////////////////////////////////////////////////////// '2016-12-9 '采集远程数据库上面的电度 '只要配置好远程的SQL访问设置(允许远程访问) '//////////////////////////////////////////////////////////////////////////////////// '实现方案! '建立连接筛选出需要用到的列 '读取数据 '送到本地数据库中 '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ '远程数据库变量 On Error Resume Next 'Remote Dim rStrCn,rCn,rSql,rConn,rRS,rCom '本地数据库变量 'local Dim lStrCn,lCn,is_lSql,lConn,lRS,lCom Dim n,i Dim Ana(1,14) Dim riqi Dim DateTime '从WINCC访问sql2005数据库步骤: '1) 创建一个到数据库的 ADO 连接 '2) 打开数据库连接 '3) 创建ADO记录集 '4) 从记录集提取你想要的数据,在表格显示出来 '5) 关闭记录集 '6) 关闭连接 '查询语句rSql rSql = "SELECT pON, ReaValue FROM Ana WHERE pON BETWEEN 135 AND 149 ORDER BY pON " '创建一个ADO连接远程数据库并且读出需要数据 rStrCn = "Provider=SQLOLEDB.1;Persist Security Info=false;User ID=sa;Password=123456;Initial Catalog=EasyOnline;Data Source=192.168.0.109,1433WINCC" '创建ADO连接对象,对数据库操作 Set rConn = CreateObject("ADODB.Connection") rConn.ConnectionString = rStrCn rConn.CursorLocation = 3 rConn.Open '打开数据库连接 '使用命令文本查询 '读取数据库的数据,那么其中的数据必须首先被载入一个记录集中。ADO连接创立后,就可以创建一个ADO记录集了。 Set rRS = CreateObject("ADODB.Recordset") '创建一个ADO.Command对象。该查询用于取回数据,此数据将以一个 RecordSet 对象返回。这意味着被取回的数据能够被 RecordSet 对象的属性、集合、方法或事件进行操作 Set rCom = CreateObject("ADODB.Command") '返回一个 Command 对象的类型 rCom.CommandType = 1 '返回包含了定义连接或 Connection 对象的字符串 Set rCom.ActiveConnection = rConn '设置或返回包含提供者(provider)命令的字符串 rCom.CommandText = rSql '执行 CommandText 属性定义的Sq1定义查询、SQL 语句或存储过程 Set rRs = rCom.Execute n = rRs.RecordCount
i = 0 rRs.MoveFirst Do While Not rRs.EOF '取第一条记录的值。ADO Field 对象包含有关 Recordset 对象中某一列的信息。Recordset 中的每一列对应一个 Field 对象 Ana(0,i) = CStr(rRs.Fields(0).Value) Ana(1,i) = CStr(rRs.Fields(1).Value) i = i +1 rRs.MoveNext Loop rRs.close'退出程序前,关闭与数据库,记录集的连接 rConn.close rCom.close '添加到本地数据库 riqi=Now lStrCn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=Electric_energy_meter;Data Source=.wincc" Set lCn=CreateObject("ADODB.connection") lCn.connectionString = lStrCn lCn.Open '执行INSERT INTO语句进行数据库的行添加 is_lSql = "insert into meter("& _ "Time,"& _ "jinxian1,"& _ "dianronggui1,"& _ "dianronggui2,"& _ "dianronggui3,"& _ "jiegouPL1,"& _ "jiegouPL2,"& _ "jiegouPL3,"& _ "tuzhuangdasha,"& _ "zhonghelou,"& _ "cangkuyuliu,"& _ "jiegouzhaoming,"& _ "beiyong,"& _ "biandianfangAL2,"& _ "weixiubanPL8"& _ ") Values("& _ " '"& riqi &"',"& _ " '"& Ana(1,0) &"',"& _ " '"& Ana(1,1) &"',"& _ " '"& Ana(1,2) &"',"& _ " '"& Ana(1,3) &"',"& _ " '"& Ana(1,4) &"',"& _ " '"& Ana(1,5) &"',"& _ " '"& Ana(1,6) &"',"& _ " '"& Ana(1,7) &"',"& _ " '"& Ana(1,8) &"',"& _ " '"& Ana(1,9) &"',"& _ " '"& Ana(1,10) &"',"& _ " '"& Ana(1,11) &"',"& _ " '"& Ana(1,12) &"',"& _ " '"& Ana(1,13) &"'"& _ ")" lCn.Execute is_lSql lCn.Close
我的梦想
世界和平;上帝:???
改变小企业行业现状;工控大佬:???
|
|
RENHQ 版主 经验值:74837 发帖数:13657 精华帖:61 |
1楼
主题:回复:关于WINCC访问远程数据的采集和写入本地自建数据库
Q群:https://jq.qq.com/?k=9BDuEgf6
|