wincc连数据库读写数据操作

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  这样写执行不下去

图片说明:

wincc连数据库读写数据操作    wincc连数据库读写数据操作   

最佳答案

和我用的这个方法不一样啊
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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2017年6月1日
下一篇 2017年6月1日

相关推荐

  • PM-QUALITY

    使用PM-QUALITY需要安装那些有关软件 钻石用户推荐最佳答案 https://www.ad.siemens.com.cn/service/elearning/series/1…

    SIMATIC WinCC 2021年7月5日
  • wincc连接ACESS

    1:连接过程(最好有注释)2:wincc’写数据库过程(最好有注释)3:wincc读数据库过程(最好有注释) 钻石用户推荐最佳答案 参考:VBS连接数据库操作http://www.…

    SIMATIC WinCC 2021年7月5日
  • picture tree的使用

    我想知道在piture tree中排列了画面名称后,如何在运行系统中调用这些画面 最佳答案 画面树管理,可以看看下面链接中的第6章节   &…

    SIMATIC WinCC 2019年6月11日
  • 肯请给位老师帮忙,有关C 脚本 和VBS脚本动作的问题 收藏

    各位高手,在下知道如何用一个按钮触发VBS脚本来启动一个视频文件,但是我想用一个外部变量例如PLC的一个数字量输入点 来触发视频文件,问是否可行,可行的话 请高…

    2017年11月4日
  • WINCC的C脚本如何自动运行?

    我编写了1个C语言脚本ALL,通过检测一个int型的变量a(a一直在变)的值来修改数值B的数值,例如b=a+1(不要问我为什么不在PLC里做,我只是以此为例)。这个脚本ALL应该怎…

    2017年8月24日
  • wincc与vb应用程序数据交换

    请问,wincc与vb应用程序如何进行数据交换?(例如:我用vb编了一个串口通讯程序读写一台仪器数据,用wincc如何获取程序读到的数据,程序如何获得wincc的数据。)还有,wi…

    SIMATIC WinCC 2019年6月11日
  • flexible 棒图显示问题

    tag是0-160的整数 但是要在棒图里显示成0-1.60 怎么弄 最佳答案 在屏里是很难转换的的,最好就是在plc转换成实数。 如果你要不嫌麻烦可以…

    SIMATIC WinCC 2019年6月11日
  • WINCC如何通过CP5512实现与300通讯?

    请问WINCC如何通过CP5512实现与300通讯?最好详细些。 问题补充:USB编程电缆可否实现? 最佳答案 其实你可以参考CP5611和S7-300通讯例子去做,CP5512是…

    SIMATIC WinCC 2021年7月5日
  • 西门子wincc问题

    wincc在项目管理器中点击退出激活按钮,导致step7中程序发生动作,就是某个会导致停机的报警在程序中出现,导致停机,这是为什么啊,点击取消激活应该不能影响到下位机程序运行的啊?…

    SIMATIC WinCC 2021年7月5日
  • Wincc flexible 做备份的时候报警

    错误信息:the connected device type does not match the …

    SIMATIC WinCC 2017年11月4日