sql ="select * from  xiaoshou " 
   Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic   sql ="update xiaoshou set 总金额=1000  where  姓名='张三' "
   Conn.Execute sql
在以上代码中Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic这adOpenKeyset, adLockPessimistic两项  怎么设置才不会影响Conn.Execute sql的正常执行。
   

解决方案 »

  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   rs.open sql,conn,1,1 读取记录 select   rs.open sql,conn,1,3 只更新记录最好 update   rs.open sql,conn,2,3 插入和删除最好 insert delete 
      

  2.   

    没有影响
    Conn.Execute sql  和
    Rs.Open sql, Conn, adOpenKeyset, adLockPessimistic
    基本等效
      

  3.   

    这样执行更改,那个设置才有影响
        Sql = "select * from xiaoshou "
        rst1.Open Sql, Conn, adOpenKeyset, adLockOptimistic
        rst1.Filter = " 姓名='张三'"
        rst1.总金额 = 1000
        rst1.Update
        rst1.Close
    你那种写法是分两步分别执行了,没什么影响
      

  4.   

    俺喜欢
    SLECT 用
    Adodc1.RecordSource = "select * FROM TB "
    Adodc1.Refresh
    If Adodc1.Recordset.RecordCount > 0 Then
    END IF  形式upadate/insert 就用
    sql ="update xiaoshou set 总金额=1000 where 姓名='张三' "
      Conn.Execute sql
    这样就不需要考虑那几个参数
      

  5.   


    这个adLockPessimistic 锁定对 同时更改这个表的 Conn.Execute sql 就真没有影响吗,各位。