定义一个recordset后 ,能读取数据库表里的内容,但如果使用delete方法就报当前记录集不支持更新

解决方案 »

  1.   

    记录集打开的方式不支持更新
    这样打开记录集就可以了
    rs.Open strSQl, cn, adOpenDynamic, adLockOptimistic
      

  2.   

    我的代码 帮我看看吧 谢谢呢 
    Dim cnn1 As ADODB.Connection
     Dim strCnn As String  ' Open a connection.
     Set cnn1 = New ADODB.Connection
     strCnn = "Provider=MSDAORA.1;Password=AA;User ID=AA;Data Source=server"
     cnn1.Open strCnn
            
     ' Open temp table.
      Set rst = New ADODB.Recordset
      rst.CursorType = adOpenDynamic
      rst.LockType = adLockOptimistic
      rst.Open "temp", cnn1, , , adCmdTable   
      

  3.   

    '修改用: cnn1.execute "update tablename set ..."
    '删除用:cnn1.execute "delete from talbename where ..."
    '增加用:cnn1.execute "insert into tablename(...) values(...)"
      

  4.   

    rst.CursorType = adOpenDynamic
    rst.LockType = adLockOptimistic
    rst.Open "temp", cnn1, , , adCmdTable
    更改为
    rst.CursorType = adOpenDynamic
    rst.LockType = adLockOptimistic
    rst.Open "temp", cnn1
      

  5.   

    Password=AA;User ID=AA如果你使有的是非系统管理员身份的用户,请确认用户AA有删除数据的权限
      

  6.   

    rst.Open "temp", cnn1, , , adCmdTable
    你的语句等于在设定了rst.CursorType = adOpenDynamic和rst.LockType = adLockOptimistic后又把这两个值设回了默认值。
    rst.CursorType的默认值是adOpenForwardOnly (默认值)打开仅向前类型游标。 rst.LockType 的默认值是adLockReadOnly (默认值)只读 — 不能改变数据。
    所以不允许更改 !
      

  7.   

    谢谢大家AA是系统管理员,肯定有更改权限按照 Leftie(左手)所说 
      '修改用: cnn1.execute "update tablename set ..."
    '删除用:cnn1.execute "delete from talbename where ..."
    '增加用:cnn1.execute "insert into tablename(...) values(...)"是可以的 其他的改动都没有用
      
     
      

  8.   

    加一条cnn.CursorLocation = adUseClient试试看,也许就是游标类型不正确!
      

  9.   

    :) 谢谢哦
    tang800710(平凡的世界) 说的是对的再次表示感谢呢