在这里学了很多东西,这个脚本搞不定,希望万版主和各路高手帮我看看那里出错了,,谢谢!!!
输入变量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