不执行BeforeDelete事件时,可以删除记录吗?

解决方案 »

  1.   

    用Adodb确实由此问题,用Adodc绑定,就OK。
       Datagrid与Adodb在绑定后,Datagrid表层的数据与Recordset之间在更改数据时,不大好协调。
       我的做法是:
    Private Sub btn_insert_Click()
       With Dg_sub
         .AllowAddNew = True
         .AllowUpdate = True
         If .ApproxCount >= 1 Then
            .Row = .ApproxCount
            .col = 0
            .Scroll 0, rst.RecordCount
         End If
         Call set_btn
         .Enabled = True
         .SetFocus
       End With
    End SubPrivate Sub btn_edit_Click()
      Dg_sub.AllowUpdate = True
      Call set_btn
      Dg_sub.Enabled = True
      Dg_sub.SetFocus
    End SubPrivate Sub btn_cancel_Click()
       rst.CancelBatch
       rst.CancelUpdate
       Set rst = Nothing
       Call set_dg  'refresh datagrid
    End Sub
    Private Sub btn_delete_Click()
        If rst.RecordCount < 1 Then
           MsgBox "没有可删除的记录!", vbOKOnly, "提示信息"
           Exit Sub
        End If
        If MsgBox("确认删除当前记录", vbOKCancel + vbQuestion, "确认信息") = vbOK Then
            rst.Delete adAffectCurrent
            rst.UpdateBatch
            Call set_dg  'refresh datagrid
        End If
    End Sub
    Private Sub btn_save_Click()
      Dim i
      With Dg_sub
        For i = 0 To .Columns.Count - 1
            If IsNull(rst(.Columns(i).DataField).value) And .Columns(i).DataField <> "金额" Then
                   MsgBox .Columns(i).DataField + "不能为空!", vbCritical + vbOKOnly, "提示信息"
                  .SetFocus
                   Exit Sub
            End If
        Next
        On Error GoTo errhandle
        .AllowAddNew = False
        .AllowUpdate = False
        rst.UpdateBatch
        Call set_dg
        MsgBox "记录已成功提交", vbOKOnly, "提示信息"
        btn_insert.SetFocus
      End With
      Exit Sub
    errhandle:
           MsgBox "记录提交失败", vbOKOnly, "提示信息"
    End Sub