2016-07-20 4 views
0

Ich habe einige Comboboxen auf einem Formular, und ich möchte jede Box RowSource Bezug auf das Tag ich gesetzt. Das Tag wird die entsprechenden Dropdown-Optionen aus einer Tabelle filtern.Access 2013 beziehen sich auf eine Combobox eigenen Tag in seiner ZeileQuelle

SELECT DropdownNames 
FROM Table 
WHERE DropdownCategory=[Screen].[ActiveForm]![Me].[Tag] 

Was ist die korrekte Syntax? Verwenden Sie den Tag, um dies zu tun, oder gibt es eine bessere Eigenschaft für diesen Zweck?

+0

Sie können dies nicht direkt in der RowSource-Eigenschaft tun. Sie könnten es mit VBA in einer Schleife innerhalb des Form_Load-Ereignisses tun, das durch alle Ihre Combobox-Steuerelemente mit Tag <> "" geht. Die Syntax müsste geändert werden in 'WHERE DropdownCategory =" "" & ctl.Tag & "" "" '- vorausgesetzt, dass ctl in Ihrer Schleife definiert ist. – dbmitch

+0

@dbmitch Ah, irgendwie bin ich nicht überrascht Access nicht habe eine einfache Möglichkeit, dies in einem Schritt zu tun – jjjjjjjjjjj

Antwort

1

Hier ist ein Beispiel für das, was ich vorgeschlagen habe.

Option Explicit 

Private Sub Form_Load() 

    Const DROPDOWN_SQL As String = "SELECT DropdownNames FROM Table WHERE DropdownCategory = " 
    Const DOUBLE_QUOTES As String = """" 

    Dim ctl    As Control 
    Dim strRowsource As String 

    For Each ctl In Me.Controls 
     With ctl 
      ' Only look at Tagged Combo Boxes 
      If (.ControlType = acComboBox) And (.Tag <> "") Then 
       ' Set Dropdown Row Source 
       strRowsource = DROPDOWN_SQL & DOUBLE_QUOTES & .Tag & DOUBLE_QUOTES 
       .RowSource = strRowsource 
      End If 
     End With 
    Next 

    Set ctl = Nothing 
End Sub 
+0

Dies hat perfekt funktioniert Vielen Dank für Ihre Hilfe – jjjjjjjjjjj

+1

Ausgezeichnet - vielen Dank für die schnelle Rückmeldung – dbmitch

+0

Gern geschehen. – jjjjjjjjjjj