【发布时间】:2013-12-31 18:43:27
【问题描述】:
将 Access 2007 前端与 SQL Server 2008 r2 后端结合使用。我有可以勾选为“已看到患者”的记录。如果“Patient Seen”为真,则不应发生删除。相反,如果“Patient Seen”是错误的,则允许删除记录。我到目前为止是这样的:
Set db = CurrentDb
Set rs = db.OpenRecordset("select PatientSeen,PatientLogID from PatientLog where PatientLogID = " & Me.PatientLogID, dbOpenDynaset, dbSeeChanges)
test = rs!PatientLogID
If MsgBox("Are you sure you want to delete record?", vbYesNo, "Delete Record") = vbYes Then
If rs!PatientSeen = False Then
strSQL = "UPDATE [PatientLog] " _
& "Set IsDeleted = 1 " _
& "Where PatientLogID = " & Me.PatientLogID
'View evaluated statement in Immediate window.
Debug.Print strSQL
DoCmd.SetWarnings False
DoCmd.RunSQL strSQL
ElseIf rs!PatientSeen = True Then
MsgBox ("Patient already seen, cannot delete")
Me.AllowDeletions = False
'Me.Undo
End If
Else
Me.Undo
Exit Sub
End If
The Patient Seen false 工作正常。它将 IsDeleted 更新为 1 以获得正确的记录。但是,如果 Patient Seen 为 True,则会弹出 msgbox(Patient already seen...),但记录仍会从表中完全删除,而不是。如果我在“确定要删除”的初始问题上单击“否”也是如此。它不只是退出 sub 它会删除记录。
我对 Access 和构建后端 SQL 仍然相当陌生,但从多年的 Excel 报告中非常熟悉 VBA。任何建议都非常感谢。
【问题讨论】:
-
这段代码在哪里?显然,它是在一个表单中,但它是在单击按钮上吗?表单事件?实际删除发生在哪里?您的代码中没有任何内容实际上会删除记录。
-
这存在于表单的 On Delete 事件中。
标签: sql-server-2008 ms-access vba