strSQL = "select cItem from " & tvwType.SelectedItem.Key
Set rsClient = New ADODB.Recordset
rsClient.Open strSQL, Flcon, adOpenKeyset, adLockBatchOptimisticWith rsClient
    '插入一些测试数据[AddNew]
    .AddNew "cItem", "A123"
    .AddNew "cItem", "B123"
    .AddNew "cItem", "C123"
    .AddNew "cItem", "D123"
    .AddNew "cItem", "E123"
    
    '删除C123
    .Filter = "cItem='C123'"
    rsClient.Delete
    
    '修改D123
    .Filter = "cItem='D123'"
    .Fields(0) = "'D456'"
    
    .UpdateBatch
End With'1.以上代码,能够正常执行且不产生错误,但所有的修改并未影响到记录集..不解!
'2.同时上面的代码中修改指定记录的方法是不是正确的?有否其它合适的方法?
'3.在批更新模式下,要注意哪些问题及常见的要捕获的错误(多用户端的情况下)..?谢谢各位顶贴回复!

解决方案 »

  1.   

    PS:标题文字有错..在ADO模更新模式        变更为        在ADO批更新模式。
      

  2.   

    经实验,把上面的中修改和删除的部门注释掉,前面的AddNew能执行.但无法实现Del/Update而使用.UpdateBatch adAffectAllChapters更新,应可以完全解决。而我上面根本就没有子集啊?哪里有什么问题?
      

  3.   

    将“adLockBatchOptimistic”改成“adLockOptimistic”试试
      

  4.   

    错,上面的代码主要就是要实现批更新下的各个子动作的..改成adLockOptimistic岂不是失之东隅.?上面的情况群里的朋友已经帮解决了..现在存在一个问题,下面的关于 [记录修改]的代码:rsClient.Filter = ""
    If Cel.Text = "" Then   '删除
        rsClient.Filter = "cItem='" & grdList.ActiveCell.Tag & "'"
        rsClient.Delete
    Else                    '修改
        '''''''''''''''''''''''''''''''''''方法1 遍历查找后更新
        Do Until rsClient.EOF
            If rsClient!cItem = Cel.Tag Then
                rsClient!cItem = Cel.Text
                Exit Do
            End If
            rsClient.MoveNext
        Loop
        '''''''''''''''''''''''''''''''''''方法2 使用Filter过滤定位,然后更新
        'rsClient.Filter = ""
        'rsClient.Filter = "cItem='" & Cel.Tag & "'"
        'rsClient!cItem = Cel.Text
        '''''''''''''''''''''''''''''''''''
    End If
    rsClient.UpdateBatch方法1能成功更新。
    方法2被执行时不提示任何信息,但数据并未更新到。(同时,方法2中若更新前/后的值中包含单引号,将出现提示..错误代码:3001,参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。)请问,怎样调试方法2,能够在批模式adLockBatchOptimistic下使用Filter定位记录并实现更新。此问解决,50分全送..!!谢谢
      

  5.   

    建议直接使用 SQL 命令实现,不要采用 Recordset 循环执行。Flcon.Execute "Delete From " & tvwType.SelectedItem.Key & " Where cItem='" & grdList.ActiveCell.Tag & "'"Flcon.Execute "Update " & tvwType.SelectedItem.Key & " Set cItem = '" & Cel.Text & "' Where cItem='" & Cell.Tag & "'"
      

  6.   

    rsClient.Filter = "cItem='" & Replace(Cel.Tag,"'","''") & "'"
      

  7.   

    TO of123...建议直接使用 SQL 命令实现,不要采用 Recordset 循环执行
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    execute方法不能实现对一个记录集的N次更新刷新..
    我要的是在批更新模式下操作。实现成批更新...UpdateBatch