2016-04-26 20 views
0

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!

+0

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 –

+0

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

+0

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 –

Antwort

0

Wenn die Datenquelle für Ihr Formular eine Abfrage mit 1: n-Beziehungen enthält, kann dieser Fehler auftreten. Versuchen Sie, nur die Basistabelle als die Recordsource für das Formular zu verwenden. Verwenden Sie Unterformulare, wenn Sie zugehörige Daten anzeigen müssen. Der Rest des Codes kann dann unnötig sein.

+0

Ich habe versucht, ein neues Formular zu erstellen, das auf dieser Designmethode basiert, aber ich habe auch damit Probleme bekommen.Wenn ich versuche, eine Option in der Dropdownliste auszuwählen, oder versuche, die Combobox innerhalb des Teilformulars zuerst einzugeben, erhalte ich den Fehler "Sie können diesem Objekt keinen Wert zuweisen. * Das Objekt kann ein Steuerelement für einen Lesevorgang sein -only form. * Das Objekt befindet sich möglicherweise in einem Formular, das in der Entwurfsansicht geöffnet ist. * Der Wert ist möglicherweise zu groß für dieses Feld. " Ich weiß sicher, dass es in der Designansicht nicht geöffnet ist ... – AliG