Ich arbeite gerade mit einem Listenfeld, das Werte löscht, die den ausgewählten Text aus einer Tabelle enthalten. Ich habe den folgenden Code:ListBox Auswahldaten nach Requery beibehalten
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
Das Problem, das ich habe, ist, dass nach dem Eintrag aus der Tabelle gelöscht, und ich auf den Button klicken Sie erneut auf (ohne eine Auswahl) der zuvor ausgewählte Wert in der MsgBox erscheint nach wie vor. Ich brauche diesen Wert zu löschen, so dass eine Fehlermeldung Feld angezeigt wird, zu sagen, dass kein Eintrag
Wie lstSolution ist gebunden? – Brad
BTW Ich finde 'DoCmd.RunSQL', um allgemein schlechte Praxis zu sein. Es bedeutet, dass Sie 'DoCmd.SetWarnings' verwenden müssen, was ein echter Schmerz ist, wenn Sie vergessen, sie wieder einzuschalten/etwas schief geht und sie nicht wieder angeschaltet werden. Stattdessen sollte 'CurrentDb.Execute' verwendet werden, denke ich. Dies hat den zusätzlichen Vorteil, dass Sie eine RecordsAffected-Eigenschaft zurückgeben, mit der Sie ermitteln können, wie viele Datensätze gelöscht wurden. – Brad
Wenn Sie nicht möchten, dass eine Listenfeldzeile ausgewählt wird, macht 'Me! LstSolution.Value = Null 'das nicht für Sie? – HansUp