Jak załadować nazwy tabel do listy na formularzu

Czasem chcemy aby użytkownik mógł wygodnie wskazać nazwę tabeli, np aby użyć jej jako parametru metody transport arkusza. Aby poniższy kod zadział:

  • Na formularzu musi znajdować się kontrolka typu Pole listy.
  • Musi się nazywać ListaTabel.
  • Procedura musi być umieszczona w module formularza.

Procedura zostanie wywołana automatycznie na starcie dzięki wywołaniu jej na zdarzeniu Load formularza. Bardzo podobnie możemy załadować nazwy kwerend. Dodatkowo procedura nie wyświetla tabel systemowych (ich nazwy zaczynają się na „MSys”)

Private Sub Form_Load()
    LadujListeTabel
End Sub
 
Sub LadujListeTabel()
    Dim db As DAO.Database
    Dim tb As DAO.TableDef
 
    ListaTabel.RowSourceType = "Value List"
    ListaTabel.RowSource = ""
 
    Set db = CurrentDb
    For Each tb In db.TableDefs
        If Left(tb.Name, 4) <> "MSys" Then
            ListaTabel.AddItem tb.Name
        End If
    Next
 
    Set db = Nothing
    Set tb = Nothing
 
End Sub

  1. A nie lepiej jako źródło dla pola Combi/listy podać SQL:”SELECT MSysObjects.Name FROM MSysObjects WHERE (((Left([MSysObjects]![Name],4)”MSys”)=-1) AND ((MSysObjects.Type)=1 Or (MSysObjects.Type)=4) Or (MSysObjects.Type)=6)) ORDER BY MSysObjects.Name;
    TYPE 1 oznacza tabele lokalne, 4 podlinkowane ODBC, 6 podlinkowane
    Dla Kwerend jest to 5

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *