你可以使用如下语句:
        FrmData.Adodc1(0).Refresh
        FrmData.Adodc1(0).Recordset.Filter = "ID = " & id
        FrmData.Adodc1(0).Recordset.MoveFirst
        FrmData.Adodc1(0).Recordset.Delete adAffectAllChapters  '可能是其它参数
        FrmData.Adodc1(0).Recordset.Update
        FrmData.Adodc1(0).Refresh

解决方案 »

  1.   

      On Error GoTo DeleteErr
      With adoPrimaryRS
        .Delete
        .MoveNext
        If .EOF Then .MoveLast
      End With
      Exit Sub
    DeleteErr:
      MsgBox Err.Description
      

  2.   

    你只要使用如下代码即可:
            FrmData.Adodc1(0).Refresh
            FrmData.Adodc1(0).Recordset.Filter = "ID = " & id
            FrmData.Adodc1(0).Recordset.MoveFirst
            FrmData.Adodc1(0).Recordset.Delete adAffectCurrent
            FrmData.Adodc1(0).Refresh
    注:不要调用Update
      

  3.   

    把:FrmData.Adodc1(0).Recordset.Filter = "ID = " & id
    改为:FrmData.Adodc1(0).Recordset.find  "ID = " & id
    即可。
      

  4.   

    MOVEFIRST和DELETE都和数据库当前位置指针有关,你要对指针位置的合法性进行检查.
      

  5.   

    VB的ADO有一Bug,就是当你的记录中有两条记录是完全相同时,这是如果删除这条记录
    则会出错,请你检查一遍数据库是否是这样的情况!
      

  6.   

    用ADO编程会引起一些莫明的报错,可用On Error Goto解决,还有确定你对数据的权限。如果是
    Read Only,那你想删除肯定是要出错的。
      

  7.   

    你没有判断没有找到怎么办?  
    看看下面的函数
    Public Function EraseObject(rsDB As ADODB.Recordset) As Boolean
        EraseObject = False
        If Not rsDB Is Nothing Then
            If rsDB.RecordCount <> 0 Then
                rsDB.MoveFirst
                rsDB.Find "[ID]='" & mstrKey & "'"
                If Not rsDB.EOF Then
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~
                    rsDB.Delete
                    If rsDB.Status = adRecDeleted Then
                        EraseObject = True
                        rsDB.Requery
                    End If
                End If
            End If
        End If
    End Function