Akademia VBA

czyli jak uzyskać władzę nad światem … danych

Jak załadować nazwy kwerend do listy na formularzu

Kategorie: Access VBA — Dariusz Kolasa o 16:45, 22 Cze 2010

Czasem chcemy aby użytkownik mógł wygodnie wskazać nazwę kwerendy, 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ć ListaKwerend.
  • Procedura musi być umieszczona w module formularza.

Procedura zostanie wywołana automatycznie na starcie formularza dzięki wywołaniu jej na zdarzeniu Load formularza. Bardzo podobnie możemy załadować nazwy tabel

Private Sub Form_Load()
    LadujListeKwerend
End Sub
 
Sub LadujListeKwerend()
    Dim db As DAO.Database
    Dim kw As DAO.QueryDef
 
    ListaKwerend.RowSourceType = "Value List"
    ListaKwerend.RowSource = ""
 
    Set db = CurrentDb
    For Each kw In db.QueryDefs
        ListaKwerend.AddItem kw.Name
    Next
 
    Set db = Nothing
    Set kw = Nothing
End Sub

Jak załadować nazwy tabel do listy na formularzu

Kategorie: Access VBA — Dariusz Kolasa o 16:25, 22 Cze 2010

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

Jak dopisać rekord w tabeli z poziomu VBA

Kategorie: Access VBA — Dariusz Kolasa o 23:57, 12 Cze 2010

Można to zrobić z użyciem rekordsetu DAO. Oczywiście aby kod zadziałał potrzebna jest tabela „tbOsoby” z polami „Imie” i „Nazwisko”

Sub DodajRekord()
 
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
 
    Set db = CurrentDb
    Set rs = db.OpenRecordset("tbOsoby")
 
    rs.AddNew
    rs!Imie = "Jan"
    rs!Nazwisko = "Kowalski"
    rs.Update
 
    rs.Close
    Set rs = Nothing
    Set db = Nothing
 
End Sub

Jak dopisać rekord na formularzu z poziomu VBA?

Kategorie: Access VBA — Dariusz Kolasa o 18:01, 9 Cze 2010

Może to być potrzebne np przy pobieraniu danych z jakiegoś pliku. Jeżeli jest w tym momencie aktywny odpowiedni formularz (czyli taki na którym są pola tekstowe o nazwach „Imie” i „Nazwisko”), to możemy od razu zapisać pobrane dane. Procedura jest wyzwalana po kliknięciu przycisku o nazwie „przyciskDopiszRekord”, który także musi się znaleźć na formularzu.

Private Sub przyciskDopiszRekord_Click()
    Dim strImie As String, strNazwisko As String
 
    'testowe pobranie danych 
    strImie = InputBox("Podaj imię")
    strNazwisko = InputBox("Podaj nazwisko")
 
    'ustawienie się na nowym rekordzie
    DoCmd.GoToRecord , , acNewRec
 
    'wpisanie wartości do pól
    Me.Imie = strImie
    Me.Nazwisko = strNazwisko
 
    'zapisanie rekordu na fm
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
End Sub
« Późniejsze wpisy