2016-03-22 4 views
1

ich eine Abfrage zu filtern versuchen basierend auf dem Wert eines Elements in einem Listenfeld in bestimmten Spalt anders als die gebundenen SpalteZugang listbox nicht gebundene Spalte als Kriterien für die Suche nach

Hier ist, was ich bisher haben.

Ich habe eine Listbox mit 2 Säulen inv_id und prod_id Namen der listbox is lst_MainList. inv_id ist die gebundene Spalte (Spalte 1) Liste ist in einem Formular namens Projects

Ich versuche, 2 Abfragen zu erstellen.

Zunächst soll Abfrage filtern, basierend auf inv_id Diese einfach ist, weil inv_id meine gebundene Spalte ist

Für den Wert des zweiten Spalts bekommen, habe ich versucht,

Public Function GetColumnValue(col As Integer, ByRef lst As Access.ListBox) 
    GetColumnValue = lst.Column(col) 
End Function 

Die Idee, eine Funktion zu schaffen besteht darin, die Spaltennummer und den Listenfeldnamen an die Funktion zu übergeben, und die Funktion gibt den Wert dieser Spalte zurück

Funktion scheint OK. Das Problem ist, wenn ich diese Funktion zu meiner Anfrage als Kriterien eingeben

=GetColumnValue(2,[Forms]![Projects]![lst_MainList]) 

der Hoffnung, meine Frage zu filtern basierend auf Spalte 2 das aktuellen aktiven Elements, ich diese Fehlermeldung erhalten, wenn Abfrage ausgeführt wird.

This expression is typed incorrectly or is too complex 

Ich weiß, hier meine letzte Option ist ein unsichtbares Textfeld Spalte 2 der listbox gebunden hinzufügen, aber ich mag die Funktion Ansatz versuchen, weil es viel sauberer und wiederverwendbar

Jede Idee scheint, was ist falsch mit meiner Funktion?

Antwort

3

Das ist, weil in der Abfrage [Forms]![Projects]![lst_MainList] die Wert Eigenschaft der Steuerung zurückgibt, keine Referenz auf die Steuerung.

Sie müssen etwas tun kann:

Public Function GetColumnValue(col As Integer, FormName As String, ControlName As String) 
    GetColumnValue = Forms(FormName).Controls(ControlName).Column(col) 
End Function 

und dann:

=GetColumnValue(2,"Projects","lst_MainList") 
+0

Dies funktioniert. Vielen Dank. Obwohl es ein bisschen kleine Korrektur gibt. Es sollte "s" (Plural Kontrolle) '... Control (ControlName) ...' sollte '... Kontrollen (ControlName) ...' – Wayne

+0

Das ist richtig. Ich habe den Schnitt gemacht. – Gustav

Verwandte Themen