Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Kombinationsfeld: Auswahl maskieren

Begonnen von Pavroo, August 29, 2024, 19:11:38

⏪ vorheriges - nächstes ⏩

Pavroo

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

MzKlMu

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.
Gruß Klaus

Knobbi38

#2
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

MzKlMu

#3
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.
Gruß Klaus

Bitsqueezer

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