这和你的 RecordSet 有关,你可以去看微软的 ADO 方面的资料。
如果你的 Rs 是客户端的,就可以成批 用 rs.update

解决方案 »

  1.   

    rs.AddNew'add all the dataif your condition is True then
        rs.UpdateBatch
    else
        rs.CancelBatch
    end if
      

  2.   

    和你打开数据集时使用的锁定类型有关
    AdLockReadOnly (默认值)只读 — 不能改变数据。 
    AdLockPessimistic 保守式锁定(逐个) — 提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。 
    AdLockOptimistic 开放式锁定(逐个) — 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。 
    AdLockBatchOptimistic 开放式批更新—用于批更新模式(与立即更新模式相对)。 
      

  3.   

    另外,可以用事件处理这种情况
    dim rs as new ADODB.Recordset
       .
       .
       .
    conn1.BeginTrans
    rs.addnew
    rs("field1") = value1
    rs("field2") = value2
       .
       .
       .
    rs.addnew
    rs("field1") = value1
    .
    .
    .
    if 保存 then
      conn1.CommitTrans
    else
      conn1.RollbackTrans
    endif
    conn1假设为你所使用的数据库连接
      

  4.   

    1,首先你的rs必须是客户端的:rs.CursorLocation = adUseClient
    2,必须使用adLockBatchOptimistic参数:rs.Open strSql, Conn, adOpenStatic, adLockBatchOptimistic, adCmdText
    3,然后随便你如何addnew,update,delete只有你最后用rs.UpdateBatch,她才记录到数据库
      

  5.   

    还有一个问题:
    在函数中有:
        Dim rdt_demp As New ADODB.Recordset
        
       With rdt_demp
            .LockType = adLockPessimistic
            .CursorType = adOpenKeyset
            .ActiveConnection = con_d
            .Source = "T_EMP"
            .Open
        End With
    操作。
    rdt_demp.close 
    当我第一次使用完rdt_demp后,删除数据库中表T_EMP的所有数据,采用 delete from t_emp成功后,怎么再一次进入这段代码(这段代码在一个函数中),再一次进入此函数(DEBUG情况下),执行到这段代码,怎么得到其中还有数据?
      

  6.   

    delete from t_emp 之后没有“commit“
    所以还有数据
      

  7.   

    rs.CursorLocation = adUseClient
      

  8.   

    1,首先你的rs必须是客户端的:rs.CursorLocation = adUseClient
    2,必须使用adLockBatchOptimistic参数:rs.Open strSql, Conn, adOpenStatic, adLockBatchOptimistic, adCmdText
    3,然后随便你如何addnew,update,delete只有你最后用rs.UpdateBatch,她才记录到数据库
      

  9.   

    kw_jiang771207(weida):你的回复什么意思,抄袭我的回复!!