关于数据库更新的脚本问题

在这里学了很多东西,这个脚本搞不定,希望万版主和各路高手帮我看看那里出错了,,谢谢!!!
 输入变量B的值,如果查数据库有相同的值,就把变量A的值送入字段AUA中
 Dim riqi
 Dim strcn,cn
 Dim rs
 Dim strSQL
 Dim a
 set a=HMIRuntime("a")
 Dim b
 set b=HMIRuntime("b")
 b.read

 strcn="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名;Data Source=.\wincc"
 strsql="select * form 表名 where b like '"&bua&"%'"    'bua为表的一个字段名
 set cn=CreateObject("ADODB.Connection")
 set rs=CreateObject("ADODB.Recordset")
 cn.open strcn
 rs.open strsql,cn,1,1

 a.read
 if rs.eof then
 rs.field("aua")=a  'aua为表的一个字段名,就是这段不会
 rs.update
 end if

 rs.close
 cn.close
 set rs=nothing
 set cn=nothing

 数据库连接和SQL语句试过没问题,就是不明白怎样才能更新查询出来的数据,rs.field("aua")=a  那个a换成a.value也不行,还有就是rs.open strsql,cn,1,1这句不明白,那两个1我看有的用13,有的用33,到底是有什么区别?

问题补充:
rs.fields("aua")=a这差了个S
 还有我的WINCC版本是6.0 sp3

最佳答案

前面一个1表示游标的类型,后面1个表示记录集的锁定类型
 如果你要修改内容的话,也就是用到update的话,那么就用3 3打开就可以了。1 1的话只能查询,不能更新的。
 可以参考下面描述
 RS.OPEN SQL,CONN,A,B 
 参数A为设定游标的类型,其取值为: 
 0 仅向前游标,只能向前浏览记录,不支持分页、Recordset、BookMark 
 1 键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark 
 2 动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览。 
 3 静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动 

 
 参数B为记录集的锁定类型,其取值为: 
 1 锁定类型,默认的,只读,不能作任何修改 
 2 当编辑时立即锁定记录,最安全的方式 
 3 只有在调用Update方法时才锁定记录集,而在此前的其他操作仍可对当前记录进行更改、插入和删除等 
 4 当编辑时记录不会被锁定,而更改、插入和删除是在批处理方式下完成的 

 打开数据记录集方法其实不止一种,但是我们用的最多的就是 
 rs.open sql,1,1的方法,可是后面的数字参数很多人不解其意,下面我们来介绍一下。 
 其实open方法后面有多个参数 
 CursorType LockType CommandType 
 比如 rs.open sql,1,1 
 也可以写成 
 rs.cursorType = 1 
 rs.LockType = 1 
 rs.open sql 
 其中CursorType代表从一个表或者一个SQL查询结果返回的记录。 
 这个参数有四个值分别是: 
 adOpenForwardOnly 表示只允许在记录集内的记录间往前移动。这个是缺省值。 
 adOpenKeyset 反映由其它用户所做的对记录的改变或者删除动作,但并不反映由其它用户做作的添加新记录的动作。 
 adOpenDynamic 反映由其它用户所做的对记录的改变或者删除动作,包括添加的新记录 
 adOpenStatic 不反映其它用户对记录所做的修改,添加,删除动作。 
 这四个值VBSCRIPT预定义位 
 adOpenForwardOnly = 0 
 adOpenKeyset = 1 
 adOpenDynamic = 2 
 adOpenStatic = 3 

 lockType 表示当打开记录集时,数据提供者用于锁定数据库的类型: 
 adLockReadOnly 数据不能改变,这是缺省值! 
 adLockPessimistic 数据提供者在开始编辑数据的时候锁定记录 
 adLockOptimistic 仅当调用update方法时,数据提供者锁定记录 
 adLockBatchOptimistic 用于批处理修改 
 他们的常量值定义分别是: 
 adLockReadOnly = 1 
 adLockPessimistic = 2 
 adLockOptimistic = 3 
 adLockBatchOptimistic = 4 
 

提问者对于答案的评价:
对对对,,就是这样,已经好了,非常感谢

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc273356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2019年6月11日 上午9:53
下一篇 2019年6月11日 上午9:53

相关推荐

  • Wincc Pro V13 VS Wincc Flexible V13

    Wincc Pro V13和Wincc Flexible V13有什么区别?安装Wincc Pro V13时选择那个密匙…

    SIMATIC WinCC 2017年6月7日
  • wincc中 TimeStepBase和TimeStepFactor属性组合10秒内数据的问题

    TimeStepBase定义表格中所显示时间戳的精度。通过将系数与时间单位相乘来计算精度。 例如,输入系数“3”和时间单位“1s”将在同一行中显示 3&nbsp…

    SIMATIC WinCC 2018年3月6日
  • WINCC7.0在取消激活时卡死

    在WINCC6.2下编辑运行完好后的项目在WINCC7.0中已经做好移值,能够运行,但是运行后无法输入登录用户名和密码,取消激活时在脚本服务器处卡死动不,请问是何原因,如何解决?谢…

    SIMATIC WinCC 2019年6月11日
  • 复选框最简单的用法?

    我想在复选框 有对号的时候把M10.1置1,在复选框没有对号的时候把M10.1置0. 这得怎么组态呢?我的意思是,那个复选框,在用鼠标左键点击的时候,框里会出对…

    SIMATIC WinCC 2019年6月11日
  • 求教Excel做报表的问题

    各位高手,我在学习WINCC的EXCEL报表, 各位高手,我在学习WINCC的EXCEL报表,在WINCC的脚本里做,感到没有反应,就先在VB6.0中作,但是会提示错误:…

    SIMATIC WinCC 2021年7月5日
  • wincc里的历史趋势怎样能把显示时间加长

    我现在WINCC里的历史趋势图只能显示7天的历史记录,我想让其能显示时间长一些,比如显示一个月,应该怎样做? 问题补充:楼下可以详细说明吗,比如你说的记录的点数和周期的具体位置在哪…

    SIMATIC WinCC 2019年6月11日
  • wincc7.4新报警标识位

    wincc7.4中配置了报警变量,任何一个报警触发报警状态,产生新报警。怎么可以检测到新报警标识,标识有报警正处于报警状态,提醒操作人员查看?除了报警控件之外 最佳答案 你可以利用…

    SIMATIC WinCC 2021年7月5日
  • WinCC支持MODBUS协议通讯吗?

    WinCC支持MODBUS协议通讯吗?怎样设置啊 最佳答案 你应该用PLC通过Modbus协议读写主(从)站数据,将读写的数据放到DB块里,再通过WinCC读写DB就可以了! 提问…

    SIMATIC WinCC 2019年6月11日
  • 如何在WINCC中加入故障复位按钮

    想在WINCC中加入个按钮能够用鼠标点击进行以报警的故障复位 最佳答案 我也刚做了一个。 程序在PLC中实现,报警输出变量进行互锁,在触发条件后加入报警复位。 …

    SIMATIC WinCC 2019年6月11日
  • wincc故障组态

    WINCC故障组态,我看见故障组态里有个用户名选项,但是加进去以后,怎么才能显示用户名,我想故障发生后,确认和复位要能查询到是谁干的。不知道怎么做 问题补充:谁来帮帮我 …

    SIMATIC WinCC 2019年6月11日