Option Explicit
Function action
Dim Cnn
Dim Rst
Dim strCnn
Dim M101
Dim IS_LACK
strCnn="DSN=myoracle;UID=platform;PWD=123456;DBQ=172.16.1.27:1521/MIDDB"
Set Cnn = CreateObject("ADODB.Connection")
cnn.ConnectionString = strCnn
Cnn.Open
Set Rst =CreateObject("ADODB.Recordset")
Rst.open "SELECT CUT_FLUID_TYPE,IS_LACK FROM LIQUID_SHORT where IS_LACK = 1 AND FLAG = 1 ",Cnn,2,2
HMIRuntime.Tags("CUT_FLUID_TYPE").Write Rst("CUT_FLUID_TYPE")
HMIRuntime.Tags("IS_LACK").Write Rst("IS_LACK")
Rst.close
Set Rst=Nothing
cnn.close
Set cnn=Nothing
Set IS_LACK = HMIRuntime.Tags("IS_LACK")
Set M101 = HMIRuntime.Tags("M101"
M101.Read
IS_LACK.Read
M101.Value = IS_LACK.Value
M101.Write
End Function
这段代码 把数据从数据库中读出来并写到PLC中已经没问题, 现在我的问题是 数据表中的FLAG 这个值 当我这行读完后我要把这个值改为2, 修改数据表值的代码为 UPDATE LIQUID_SHORT Set FLAG = 2 这里有2个问题要问 1:这句代码我要加在上面代码的哪个位置 ,我加在CNN2,2后面 编译直接报错。2:我要改的FLAG 只改我刚刚读的那一行即可,应该改为 UPDATE LIQUID_SHORT Set FLAG = 2 where 行=刚才那行 这个要怎么写
问题补充:
加到Rst.close前面 会报错,
另外有ID ID为字符串格式,我在脚本内建 内部变量DIM aaa 让这个aaa等于刚才我读的那一行怎么写,还有 我要更新数据是 直接加条件 UPDATE LIQUID_SHORT Set FLAG = 2 where SN=aaa 这样写执行不下去
图片说明:
最佳答案
和我用的这个方法不一样啊
1、应该加到Rst.close前面,写完PLC了在进行更新
2、表格里面有没有ID一列,用来标识每一行的唯一的标识符,如有的话,就加上where ID = 刚才读的那行的ID
补充:
我用过的操作数据库方式和你不同
给你几个文档参考一下:
WinCC数据开放性
https://support.industry.siemens.com/cs/cn/zh/view/78682604
在WinCC中如何使用VBS读取报警记录数据到EXCEL
https://support.industry.siemens.com/cs/cn/zh/view/77938393
在WinCC中如何使用VBS读取变量归档数据到EXCEL
https://support.industry.siemens.com/cs/cn/zh/view/77940055
通过VBS脚本在ListView控件中显示WinCC的变量记录
https://support.industry.siemens.com/cs/cn/zh/view/74932765
WinCC、Excel、VBA、脚本、连通性软件包
https://support.industry.siemens.com/cs/cn/zh/view/71676391
WinCC数据报表实现方法介绍
https://support.industry.siemens.com/cs/cn/zh/view/78668993
还有不明白的,可以在论坛发帖子
再补充,我以为你会用,看起来不是很会,在后面加入应该这样加啊
Rst.open "UPDATE LIQUID_SHORT Set FLAG = 2 ",Cnn,2,2
这个sql语句不一定对哈,直接复制您的,自己测试
提问者对于答案的评价:
非常感谢,我后来也是 不停的先 关闭表 再打开表这样操作,写变量为 " & V1 & " 要加双引号和 &
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc138934.html