Ich bin eine Datenbank // Access noob, also ertragen Sie mit mir. Ich habe eine Datenbank eingerichtet, um Berater und ihre Lieferanten für ein Technologieberatungsunternehmen im Auge zu behalten. Einige Berater sind ihre eigenen Anbieter, und einige haben Drittanbieter, die mit ihren Verträgen umgehen. In dem Fall, in dem ein Berater auch sein eigener Verkäufer ist, ist die Kontaktinformation für beide gleich. Contact Info wird in einer separaten Tabelle mit Primärschlüssel ContactID und Fremdschlüsselfeldern für ConsultantID (Primärschlüssel in ConsultantT) und VendorID (Primärschlüssel in VendorT) gespeichert.combobox.column -Eigenschaft gibt ungültige Verwendung von null in VBA
Wenn die relevanten Kontaktinformationen bereits in einem der Formulare eingegeben wurden, möchte ich den bereits vorhandenen Kontaktinfosatz auswählen und der Datenbank mitteilen können, dass sie das andere Fremdschlüssel-ID-Feld zum vorhandenen hinzufügen soll Datensatz basierend auf dem Datensatz im Hauptformular. Wenn ich zum Beispiel die Kontaktinformation für Berater A über das Beraterformular eingegeben habe, wenn ich das Lieferantenformular öffne, um den Lieferanten von Berater A hinzuzufügen, möchte ich die Option "Berater A" aus einem Kombinationsfeld auswählen und ihre Informationen ausfüllen lassen VendorsF's Contact Info Formular beim Hinzufügen der VendorID zu dem bereits bestehenden Contact Info Record für den Consultant A.
Ich denke, ich habe es fast geschafft, aber bin auf eine letzte Sache fest. Im Moment habe ich ein Popup-Formular (ChooseConsultantInfoF) zum Auswählen eines vorhandenen ContactInfo-Datensatzes. Auf diesem Formular habe ich eine Such-Combobox (SelectConsultantCombo) zur Auswahl des vorhandenen Datensatzes und eine Befehlsschaltfläche (SaveConsultantbtn), die ich versucht habe, die ContactInfoT zu aktualisieren und die VendorID aus dem aktuellen Datensatz der VendorsF zum vorhandenen Datensatz hinzuzufügen in ContactInfoT. Hier ist der gesamte Code für das Popup-Formular:
Option Compare Database
Option Explicit
Private Sub SaveConsultantbtn_Click()
Dim stupid As Long
stupid = SelectConsultantCombo.Column(0)
DoCmd.RunSQL "UPDATE ContactInfoT SET VendorID = (Forms!VendorsF!VendorID) Where ContactInfoID = " & stupid & ";"
End Sub
Private Sub SelectConsultantCombo_AfterUpdate()
Dim rst As DAO.Recordset
Set rst = Me.RecordsetClone
rst.FindFirst "ContactInfoID = " & Me!SelectConsultantCombo
Me.Bookmark = rst.Bookmark
leave:
Me!SelectConsultantCombo = Null
If Not rst Is Nothing Then Set rst = Nothing
Exit Sub
End Sub
Wenn ich versuche, es in die Tat umzusetzen, ich Fehler bekommen 94: Ungültige Verwendung von Null und es zieht
stupid = SelectConsultantCombo.Column(0)
Ich weiß, der Codeblock arbeitet abgesehen davon, dass - ich das Click-Ereignis einmal mit einem numerischen Wert statt der variablen versucht:
Private Sub SaveConsultantbtn_Click()
DoCmd.RunSQL "UPDATE ContactInfoT SET VendorID = (Forms!VendorsF!VendorID) Where ContactInfoID = 1 ;"
End Sub
ohne Probleme, so dass die Frage in dem Aufruf der Combobox der Spalte sein muss.
Ich habe auch versucht die Variable mit Nz definieren Null zu ermöglichen:
stupid = Nz(Me.SelectConsultantCombo.Column(0), 0)
und bekommt den Code auch arbeiten, aber noch nicht in ContactInfoT meine VendorID auf den Datensatz nicht speichern. Keine der Spalten in der Combobox enthält Nullwerte (keine, die ich finden kann). Keine Ahnung, soweit sinnvoll, aber die Zeile Quelle der Combobox ist:
SELECT ContactInfoT.ContactInfoID, ConsultantT.ConsultantID, ConsultantT.FirstName, ConsultantT.LastName FROM ConsultantT INNER JOIN ContactInfoT ON ConsultantT.ConsultantID = ContactInfoT.ConsultantID ORDER BY ConsultantT.[LastName], ConsultantT.[FirstName];
Weiß jemand, warum Access nicht meine combobox.column Eigenschaft erkennen? Oder gibt es eine andere Möglichkeit, dies in VBA zu schreiben, um diesen Fehler zu vermeiden?
Die gebundene Spalte ist auf ContactInfoID festgelegt, die korrekt ist. Ich habe den bestehenden Code mit 'Me ausprobiert.', und versuchte auch' dumm = Me.SelectConsultantCombo' und 'dumm = Me.SelectConsultantCombo.Value' (versuchte mit und ohne' Me.') und immer noch Fehler 94: Ungültige Verwendung von Null zieht diese Zeile im Debugger : \ – AliG
Sie setzen es auf Null hier "' Me! SelectConsultantCombo = Null ". Sie sollten warten, bis Sie tatsächlich den Wert für Ihre Abfrage verwenden, bevor Sie es auf null zurücksetzen, verschieben Sie diese Zeile auf die SaveConsultantbtn_Click Sub oder speichern Sie diesen Wert Wo auch immer Ihr Code ist, wird das Kombinationsfeld jedes Mal, wenn eine Auswahl getroffen wird, auf null zurückgesetzt. – SunKnight0