Ich habe ein Formular in Access, das einem Benutzer ermöglicht, eine Tabelle aus einem Kombinationsfeld auszuwählen, das alle Tabellen auflistet, die VBA verwenden. Basierend auf der Tabelle, die der Benutzer auswählt, möchte ich eine Reihe von Kontrollkästchen dem Formular hinzugefügt werden. Jedes Kontrollkästchen würde eine Spalte in der ausgewählten Tabelle darstellen. Ich habe eine VBA-Funktion, die mit den Spalten funktioniert, die über das Formular ausgewählt werden, nachdem eine Schaltfläche gedrückt wurde.Wie können Sie einem Formular auf der Basis von Spalten in der Tabelle in Access Kontrollkästchen hinzufügen?
Wie würde ich die Kontrollkästchen aktivieren, nachdem der Benutzer eine Tabelle ausgewählt hat? Ich möchte, dass dieses Formular auf Tabellen angewendet wird, die in Zukunft hinzugefügt werden, sodass ich die Anzahl der Spalten nicht im Voraus weiß. Ich kann Kontrollkästchen in einem Benutzerformular dynamisch angezeigt bekommen, aber ich habe gehört, dass sie in Access nicht häufig verwendet werden. Ich habe auch gehört, dass es eine Begrenzung für die Anzahl der Kontrollen gibt, die zu einem Formular in seiner Lebenszeit hinzugefügt werden können. Gibt es sowieso Umbenennungskontrollen, so dass ich dieses Limit nicht erreiche?
Dies ist der Code, dass ich das Kombinationsfeld aufzufüllen verwenden:
Private Sub Form_Load()
Dim tbl As DAO.TableDef
Dim db As Database
Set db = CurrentDb
With Me![TableName]
For Each tbl In db.TableDefs
If Not (tbl.name Like "MSys*" Or tbl.name Like "~*") Then
.AddItem tbl.name
End If
Next
End With
End Sub
Dies ist Beispielcode, der die Kontrollkästchen in einer Userform erzeugen kann:
Private Sub RetrieveColumns_Click()
Dim TableName As String
Dim MethodName As String
Dim tdf As DAO.TableDef
Dim rs As Recordset
Dim fld As Field
Dim chkBox As MSForms.CheckBox
TableName = Me![TableName]
Set tdf = dbs.CreateTableDef(TableName)
Set rs = dbs.OpenRecordset(TableName)
With rs
For i = 0 To .Fields.Count - 1
Set chkBox = Me.Controls("Forms.checkbox.1", "CheckBox_" & i)
chkBox.Caption = .Fields(i).name
chkBox.Left = 5
chkBox.Top = 5 + ((i - 1) * 20)
Next i
End With
End Sub
Danke! Ich dachte nicht daran, den zusätzlichen Tisch zu benutzen. – kaineub