【发布时间】:2016-06-03 16:33:07
【问题描述】:
我目前正在使用一个列表框,该列表框从表中删除包含所选文本的值。我有以下代码:
Private Sub DeleteEntry_Click()
Dim DeleteTbl As String
Dim Msg As String
If IsNull(Me.lstSolution) = True Then
MsgBox "Please Select a Entry", vbOKOnly, "No Entry Selected"
Else
DeleteTbl = MsgBox(Msg, vbYesNo, "Delete Entries?")
Msg = "Are you sure you wish to delete all entrys containing: "
Msg = Msg & Me.lstSolution
DeleteTbl = MsgBox(Msg, vbYesNo, "Delete Entries?")
End If
If DeleteTbl = vbYes Then
DoCmd.SetWarnings False
DoCmd.RunSQL "Delete * FROM [Solutions] WHERE [Solutions].SolutionText = '" & Me.lstSolution & "'"
DoCmd.SetWarnings True
Else
'Do Nothing
End If
Me.lstSolution.Requery
End Sub
我遇到的问题是,从表中清除条目后,我再次单击按钮(不选择任何内容),之前选择的值仍然出现在 MsgBox 中。我需要清除这个值,这样会出现一个错误消息框,说没有选择任何条目
【问题讨论】:
-
lstSolution 如何绑定?
-
顺便说一句,我发现使用
DoCmd.RunSQL通常是不好的做法。这意味着您需要使用DoCmd.SetWarnings,如果您忘记重新打开它们/出现问题并且它们没有重新打开,这将是一个真正的痛苦。我认为应该使用CurrentDb.Execute。这具有返回RecordsAffected属性的额外好处,您可以使用该属性来确定删除了多少记录。 -
如果您不想选择列表框行,
Me!lstSolution.Value = Null不为您做吗? -
您好抱歉回复晚了,最近很忙。据我所知,lstSolution 不受约束。 lstSolution 从按下按钮时运行的查询中获取数据,但所有这些都有效。我会修改 DoCmd 语句并实施您的解决方案。不幸的是,@HansUp 并没有清除数据。我不知道为什么保留它