Ich habe eine Combobox, die ihre Liste beim ersten Gebrauch erstellt. Ich weiß, dass die Art, wie ich "NotInList" benehmen möchte, nicht konventionell ist - ich möchte nicht verschwenden, den Gegenstand zu einem Tisch getrennt von dem benötigten Eintrag hinzuzufügen, aber ich möchte immer noch vor einem Gegenstand warnen, der nicht Es wurde noch nicht verwendet, so dass der Benutzer zweimal überlegen muss, bevor er den Eintrag akzeptiert.Warnung für dynamische Combobox-Liste
Sobald der Benutzer das Element hinzufügt, wird es automatisch in der Liste beim nächsten Mal angezeigt werden, da die Datenquelle für das Kombinationsfeld ist wie folgt:
SELECT tbl_SP.PROGRAM
FROM tbl_SP
GROUP BY tbl_SP.PROGRAM
HAVING (((tbl_SP.PROGRAM) Is Not Null And (tbl_SP.PROGRAM)<>""));
Ich habe versucht, diese:
Private Sub cmbPROGRAM_NotInList(NewData As String, Response As Integer)
If MsgBox("'" & Chr(34) & NewData & Chr(34) & " hasn't been used yet. Add to list? ", vbQuestion + vbYesNo, "Add - " & NewData & "?") = vbYes Then
Response = acDataErrAdded
End If
End Sub
Natürlich möchte Access, dass das Objekt tatsächlich existiert, bevor es den Fehler freigibt. Und wenn ich LimitToList auf "Nein" setze, erhält der Benutzer keine Warnung.
Wie kann ich dieses Verhalten erreichen?
Ok, habe ich versucht, diese, der gut arbeitet, wenn der Benutzer JA auswählt, sondern wird komplizierter, wenn der Benutzer „NEIN“
Public Function ReturnsRecords(strSQL As String) As Boolean
Dim d As DAO.Database
Dim arr(1 To 3) As DAO.Recordset
'Dim rs As DAO.Recordset
'assume 3 items in array above
Set d = CurrentDb
Set arr(1) = d.OpenRecordset(strSQL)
' MsgBox "Record Count is " & arr(1).RecordCount
If arr(1).RecordCount > 0 Then
ReturnsRecords = True
Else
ReturnsRecords = False
End If
Set d = Nothing
End Function
Private Sub cmbPROGRAM_BeforeUpdate(Cancel As Integer)
Dim strSQL As String
strSQL = "Select * from LU_PROGRAM where PROGRAM ='" & Me.cmbPROGRAM & "'"
If ReturnsRecords(strSQL) = False Then
If MsgBox("'" & Chr(34) & Me.cmbPROGRAM & Chr(34) & " hasn't been used yet. Add to list? ", vbQuestion + vbYesNo, "Add - " & Me.cmbPROGRAM & "?") = vbNo Then
Cancel = True
' how do I reset this? Me.cmbPROGRAM.Text = Null
End If
End If
End Sub
wählt Wie lösche ich die Combobox, wenn der Benutzer auswählt NO? Wenn ich me.undo auswähle, werden alle Einträge rückgängig gemacht, aber ich möchte nur die Combobox löschen.
Übrigens ist die Form völlig ungebunden und keinen Eintrag akzeptieren, bis der Benutzer „Speichern“
Danke. Es ist meine ungebundene Form, die es zu einer Herausforderung macht. Ich hatte gehofft zu vermeiden, Lookup-Bibliotheken zu erstellen, aber ich denke, es ist endlich soweit – monty327