Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Pavroo am August 29, 2024, 19:11:38

Titel: Kombinationsfeld: Auswahl maskieren
Beitrag von: Pavroo am August 29, 2024, 19:11:38
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
Titel: Re: Kombinationsfeld: Auswahl maskieren
Beitrag von: MzKlMu am August 29, 2024, 19:45:01
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.
Titel: Re: Kombinationsfeld: Auswahl maskieren
Beitrag von: Knobbi38 am August 29, 2024, 20:27:47
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
Titel: Re: Kombinationsfeld: Auswahl maskieren
Beitrag von: MzKlMu am August 30, 2024, 00:26:30
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.
Titel: Re: Kombinationsfeld: Auswahl maskieren
Beitrag von: Bitsqueezer am August 30, 2024, 09:47:43
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