我在连续表单上有一个“删除”按钮,单击时执行以下SQL:
Dim strSQL As String
strSQL = "Delete SLIDE_NAME, COB_TITLE, COB_ID, COB_CATEGORY " _
& "FROM tbl_SLIDE_LIST " _
& "WHERE SLIDE_NAME='" & strSlideName & "' AND COB_TITLE='" & strCOB_TITLE & "';"
CurrentDb.Execute (strSQL)
我必须进行某种初始化才能使其正常工作 -
我可以毫无问题地删除第2和第3条记录,但是如果我单击第一条记录上的“删除”按钮,则子窗体变为空白,就好像我删除了所有记录一样 - (事实上并非如此)。然后,如果我重新选择“测试幻灯片”以查看实际发生的情况,我会收到错误“数据已更改”另一位用户编辑此记录并在您尝试保存更改之前保存更改。
这里发生了什么,我需要做些什么才能使其正常工作?
答案 0 :(得分:2)
如果使用SQL删除记录,则表单不知道该记录。之后您需要Me.Requery
。
更简单的是运行DoCmd.RunCommand acCmdDeleteRecord
。
来自http://access.mvps.org/access/RunCommand/codeex/50-223.htm:
'Code from Microsoft Knowledge Base Adapted by Terry Wickenden
Private Sub cmdDelete_Click()
On Error GoTo Err_cmdDelete_Click
DoCmd.SetWarnings False
If MsgBox("Confirm deletion of the record?", vbQuestion + vbYesNo + vbDefaultButton2, "Delete?") = vbYes Then
DoCmd.RunCommand acCmdSelectRecord ' I think this isn't needed
DoCmd.RunCommand acCmdDeleteRecord
End If
Exit_cmdDelete_Click:
DoCmd.SetWarnings True
Exit Sub
Err_cmdDelete_Click:
MsgBox Err.Description
Resume Exit_cmdDelete_Click
End Sub