51Testing软件测试论坛

标题: adodb.recordset对象(rs.open游标说明) [打印本页]

作者: chenchengo2008    时间: 2009-8-26 18:13
标题: adodb.recordset对象(rs.open游标说明)
对adodb.recordset对象中的rs.open游标有些不理解,不知道为什么设置rs.open游标为默认执行select语句是不会出错,但执行update就出错了,根据游标说明设置游标属性也不能解决,请高手指点

游标说明:
RS.OPEN SQL,CONN,A,B
参数A为设定游标的类型,其取值为:
0 仅向前游标,只能向前浏览记录,不支持分页、Recordset、BookMark
1 键集游标,其他用户对记录说做的修改将反映到记录集中,但其他用户增加或删除记录不会反映到记录集中。支持分页、Recordset、BookMark
2 动态游标功能最强,但耗资源也最多。用户对记录说做的修改,增加或删除记录都将反映到记录集中。支持全功能浏览。
3 静态游标,只是数据的一个快照,用户对记录说做的修改,增加或删除记录都不会反映到记录集中。支持向前或向后移动


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

'定义变量
Dim con  
Dim conset
Dim rs
Dim sqlforsel,sqlforupd
Dim names
Dim i
Dim repdate
Dim mileAge,realmileAge,carNum
Dim strCnn
'创建日期
repdate=Date
repdate=datepart("d",mydate)-1
'设置最大里程
mileAge=300
'创建连接对象
Set con=createobject("adodb.connection")
strCnn="rovider=SQLOLEDB.1assword=11111ersist Security Info=False;User ID=sa;Initial Catalog=CarAnyWhere;Data Source=192.168.12.249"
'建立连接
con.open strCnn
'查看连接是否已建立
If  con.state=0 Then
msgbox"failed"
Else   
MsgBox"pass"
End If
carNum="苏EF6431"
' 建立空的记录集
Set rs=createobject("adodb.recordset")
'设置SQL语句
sqlforsel="select * from dbo.RPT_Day where  dataDate='2009-08-"&repdate&" 00:00:00.000' and carNum='"&carNum&"'"
'打开记录集
rs.open sqlforsel,con
rs.MoveFirst
MsgBox rs("id")
realmileAge="149"
sqlforupd="update dbo.RPT_Day set mileAge="&realmileAge&"where id="&rs("id")
'更新记录
rs.open sqlforupd,con
MsgBox rs("id")
' i=0   
Set con=Nothing
作者: chenchengo2008    时间: 2009-8-27 09:25
没人顶,自己顶,没人用adodb。recordset调用数据库吗
作者: hsjzfling    时间: 2009-8-27 10:06
其实你自己也应该知道了啊,在你自己贴的描述中已经说的很清楚了。
第二个参数默认是只读的,update肯定就不行了。。。
一般来说我用的比较多的是rs.open sqlforsel,con,2,2
但在使用些特殊方法时,比如要使用记录集的RecordCount属性,就必须要使用键集游标或者静态游标,这些可以看一下ADO程序员参考,上面都有的
作者: chenchengo2008    时间: 2009-8-28 17:28
改了也不行
作者: chenchengo2008    时间: 2009-8-28 17:29
急哦,那位大侠技术支持一下




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2