送分100分:

mmmeif 2010-11-22 03:40:53
当对同一个表进行多项操作时,RECORDSET的OPEN操作中的参数有什么讲究,

具体代码如下:
1、先查询销售表中的相关记录
sql = "SELECT * from 销售表 " & " where 顾客姓名=’" & name.text & "'"
Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic
2、sql = "update 销售表 set 购物总额 = " & totalmoney & " where 顾客姓名=’" & name.text & "'"
conn.sql ........

先查询,后更新

请问 1、中 Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic
2、中 conn.sql ........

两SQL后的 参数都有什么讲究,参数设置不当,前者会不会影响后者的更新
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
choovy123 2010-11-23
  • 打赏
  • 举报
回复
我喜欢用楼上这种方式的飘然过
代码一点点作参考

Dim cnn As New ADODB.Connection
cnn.ConnectionString = getConnString 'getConnString '自定义连接字符患
cnn.Open

a = MsgBox("你是否要将发票号由 " & Trim(Text17.Text) & " 改为 " & (Text18.Text), vbOKCancel + vbExclamation, "提示")
If a = vbOK Then
sql = "update yxhis" & year & ".." & "tbmzfymx" & year & vmonth & " set cfph= '" & Trim(Text18.Text) & "' where csfd='" & Trim(Text6.Text) & "'"
cnn.Execute sql

sql = "insert into ylyy_sjq..a_fprzb(gqfph,ghfph,csfd,cmzh,cylh,cxm,cxb,czy,bz,djsj,fcsfy,fcsfsj) values ( '" & Trim(Text17.Text) & "', '" & Trim(Text18.Text) & "', '" & Trim(Text6.Text) & "', '" & Trim(Text3.Text) & "', '" & Trim(Text3.Text) & "', '" & Trim(Text4.Text) & "','" & Trim(Text5.Text) & "', '" & Trim(gusername) & "' , '门诊发票', CONVERT(VarChar(100), GETDATE(), 20),'" & Trim(Text14.Text) & "','" & Text15.Text & "' ) "
cnn.Execute sql

MsgBox "门诊发票修改成功!", vbInformation, "友情提示"

cnn.close
king06 2010-11-22
  • 打赏
  • 举报
回复
一般不会有什么重大影响,不过查询语句我一般用 ,adOpenStatic,adLockReadOnly
倒是需要注意最好确认查询完之后再执行更新,避免堵塞.
lxq19851204 2010-11-22
  • 打赏
  • 举报
回复

是游标类型不支持分页。
使用rs.open sql,conn,3,3

游标说明:
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
zhuogirllz 2010-11-22
  • 打赏
  • 举报
回复
一般都先只查询第一个数据记录,sql = "SELECT top 1 * from 销售表 " & " where 顾客姓名=’" & name.text & "'"

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧