Ich bin relativ neu in Access und jede SQL und VBA, die ich abgeholt habe, ist Autodidakt, so würde ich wirklich Antworten zu schätzen wissen, die nicht zu schwer beladen sind mit technischen Begriffen ... das sagte, ich habe ein Problem damit, dass Comboboxen in einem Formular leer gelassen werden, wenn der Benutzer sich entscheidet, keine Daten einzugeben. Außerdem verwende ich Access 2016.Wie man eine Combobox frei lassen kann // übersprungen auf einem Formular
Anfänglich war das Problem, dass, wenn eine Combobox vollständig übersprungen und leer gelassen wurde, oder wenn der Benutzer die Combobox auswählt und dann versucht, ohne Auswahl aus der Liste weiterzugehen Sie haben den Fehler "Sie haben versucht, den Null-Wert einer Variablen zuzuweisen, die kein Variant-Datentyp ist" und konnten nicht zu anderen Feldern im Formular wechseln oder den eingegebenen Datensatz speichern.
Ich fand diese article, die Details einer möglichen Lösung, aber ich kann nicht scheinen, um es zum Laufen zu bringen. Ich machte ein ungebundenes Kombinationsfeld, stellen Sie die Zeile Quelle:
SELECT EmailID, PersonalEmail FROM EmailT UNION SELECT "<N/A>","<N/A>" FROM EmailT
ORDER BY PersonalEmail;
wo PersonalEmail ein Feld vom Typ Kurztext und die EMAILID ist ein Autowert. Ich befolgte auch die Schritte des Artikels zum Formatieren der Combobox (Spaltenbreite, etc.) und setzte sie auf Limit zu Liste = Ja.
Hier ist mein genauer Code:
Private Sub Combo62_AfterUpdate()
If Combo62 = "<N/A>" Then
EmailID = Null
Else
EmailID = Combo62
End If
End Sub
Private Sub Form_Current()
If IsNull(EmailID) Then
Combo62 = "<N/A>"
Else
Combo62 = EmailID
End If
End Sub
< N/A> zeigt jetzt auf meiner Liste, aber wenn es mir den Fehler ausgewählt wird: „Der Wert, den Sie nicht gültig für diese eingegeben ist Beispielsweise haben Sie möglicherweise Text in ein numerisches Feld oder eine Zahl eingegeben, die größer ist als die FieldSize-Einstellung zulässt. "
Zugang Debugger hebt die Zeile:
EmailID = Null
aber ich bin nicht sicher, welche Schritte ich jetzt nehmen sollte, dies zu versuchen und zu beheben.
Ich bin völlig offen für andere Methoden zu erlauben, die Combobox leer gelassen werden, wenn jemand einen besseren Weg weiß, dies auch zu tun. Nach allem, was ich weiß, fehlt mir etwas wirklich Offensichtliches! Vielen Dank im Voraus für jede Einsicht!
EDIT: Danke für Ihre Hilfe Jungs, ich habe nie herausgefunden, was genau das Problem war, aber ich habe einen Rat von einem anderen Forum, um mein Datenbankdesign zu überdenken, so dass dies ein Null-Problem wurde - es ist alles völlig anders jetzt!
Ist EmailID ein Integer? Ganzzahlen können in vba nicht null sein, Sie müssen einen anderen Weg finden, um das zu handhaben, zum Beispiel Einstellung auf -1 –
EmailID ist eine Ganzzahl - ich habe nicht realisiert, dass sie nicht null sein kann. Ich habe versucht, es auf -1, aber immer noch nicht den Code ohne den Fehler – AliG
nur Varianten können Null in VBA, für numerische Datentypen gibt es ein Standard-Konstruktor mit einem Wert (Integer ist 0). Also auch Ihre IsNull (EmailID) ist nutzlos zu –