Ich habe ein Formuar erstellt, welches über ein Kombinationsfeld gesteuert, verschiedene Tabellen anzeigt.
Im Auswahlfeld tauschen so natürlich die Namen der Objekte auf (tblEinstellungen, usw.)
Könnte man die Namen nicht benutzerfreundlich maskieren?
Daß z.B. "Einstellungen" anstatt "tblEinstellungen" zur Auswahl steht?
Private Sub Form_Load()
' Tabellen in das Kombinationsfeld laden
Me.cboTableSelect.AddItem "tblSync"
Me.cboTableSelect.AddItem "tblSyncConfig"
Me.cboTableSelect.AddItem "tblEinstellungen"
End Sub
Hallo,
das dürfte nicht möglich sein. Lege Dir für jede Tabelle eine Abfrage an (mit den gewünschten Namen) und verwende die Abfragenamen statt der Tabellennamen.
Es ist ohnehin sinnvoll Tabellen immer über Abfragen anzuzeigen, da nur dann eine zuverlässige Sortierung möglich ist.
Hallo Pavroo,
das geht schon. Dafür benötigst du eine 2-spaltige Kombobox, wobei in der 1.Spalte der Tabellenname und in der 2. Spalte der Anzeigename gespeichert wird. Den Anzeigenamen für eine Tabelle schreibst du in die Tabelleneigenschaften (Kontextmenü für eine Tabelle) in das Feld Beschreibung.
Mit folgendem Code kannst du dann das in deine Kombobox laden:
Private Sub LoadTablenames()
Dim strDescription As String
Dim astrTablenames() As String
Dim i As Long
astrTablenames = Split("tblSync tblSyncConfig tblEinstellungen")
For i = 0 To UBound(astrTablenames)
strDescription = GetTableDescription(astrTablenames(i))
If Len(strDescription) = 0 Then
strDescription = astrTablenames(i)
End If
cboTableSelect.AddItem astrTablenames(i) & ";" & strDescription
Next
End Sub
Private Function GetTableDescription(ByVal Tablename As String) As String
On Error Resume Next
GetTableDescription = DBEngine(0)(0). _
TableDefs(Tablename).Properties("Description").Value
Err.Clear
End Function
Gruß Ulrich
Hallo,
da würde ich eher eine Tabelle bevorzugen. Eine Spalte für den richtigen Namen und eine Spalte für den Anzeigenamen. Das Kombi wird dann an die Tabelle gebunden. Spalte 1 mit 0cm ausblenden. Dann wird der Anzeigename angezeigt aber der richtige Name verwendet. VBA braucht es dazu nicht.
Das dürfte die einfachste Lösung sein. Und ganz einfach um weitere Tabellen erweiterbar.
Hallo,
oder einfach so:
Private Sub Form_Load()
' Tabellen in das Kombinationsfeld laden
Me.cboTableSelect.AddItem "tblSync;Synchronisation"
Me.cboTableSelect.AddItem "tblSyncConfig;Konfiguration Synchronisation"
Me.cboTableSelect.AddItem "tblEinstellungen;Einstellungen"
End Sub
Natürlich ebenfalls Anzahl Spalten auf 2 und Breite der ersten Spalte auf 0cm.
Für 100 Tabellen würde ich auch eher eine Tabelle mit den Daten anlegen - für 3 Einträge? Sicherlich nicht.
Gruß
Christian