2016-06-01 17 views
0

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?

Antwort

0

Zuerst versuchen stupid = Me.SelectConsultantCombo.Column(0) (Sie fehlen die Me. Teil).

Aber was Sie wirklich tun sollten, ist Ihre gebundene Spalte in dem Kombinationsfeld stellen Sie sicher, richtig eingestellt ist und verwenden nur stupid = Me.SelectConsultantCombo

+0

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

+0

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

0

ich Me!SelectConsultantCombo = Null aus NachAktualisierung der Combo nahm und es funktioniert perfekt jetzt! Natürlich, wenn ich die Combo im Code auf null gesetzt habe, wird sie woanders auf Null gesetzt, oh!

Verwandte Themen