Laboratorium 4 programowanie w VBA

PROGRAMOWANIE W VBA – MICROSOFT ACCESS

LABORATORIUM 4

Ćwiczenie 1

Praca z obiektami aplikacji

W ćwiczeniu tym przygotujesz kod, który będzie włączał i wyłączał wyświetlanie paska menu i pasków narzędzi. Dodatkowo przeprowadzisz defragmentację bazy da­nych z poziomu kodu.


UWAGA. Pamiętaj o użyciu instrukcji Option Explicit w sekcji deklaracji każdego z tworzonych modułów.


Przełączanie paska menu


1. Skopiuj do swojego folderu plik Northwind.mdb oraz Metody.mdb znajdujące się w katalogu \Program Files\Microsoft Office\Office\Przykldy.

2. Utwórz w nową bazę danych o nazwie Dao.mdb.

3. Zaimponuj wszystkie tabele (struktura i dane) z pliku \Northwind.mdb

4. Z tego samego pliku zaimponuj kwerendy Sprzedaż wg pracowników i krajów oraz Podsumowania zamówień.

5. Utwórz makro i zachowaj je pod nazwą Puste makro.


UWAGA. Nie wprowadzaj NICZEGO do kolumny Akcja makra. Kolumna Komentarz może także pozostać pusta.


6. Utwórz nowy pusty formularz.

7. Utwórz przycisk polecenia i zmień jego tytuł na Przełącz pasek menu.

8. Dodaj następujący kod do zdarzenia Przy kliknięciu tego przycisku:


If Application.menubar = "Puste makro" Then

Application.menubar = ""

Else

Application.menubar = "Puste makro"

End If


9. Zachowaj formularz jako Ćwiczenie_1 i przełącz go do widoku Formularz.

10. Kliknij kilkukrotnie na przycisku Przełącz pasek menu. Co się dzieje?


Przełączanie pasków narzędzi


1. Dodaj kolejny przycisk polecenia do formularza Ćwiczenie_1 i zmień jego tytuł na Przełącz pasek narzędzi.

2. Dodaj następujący kod do zdarzenia Przy kliknięciu tego przycisku:


If Application.GetOption("Dostepne wbudowane paski narzędzi")

Then

Application.SetOption „Dostepne wbudowane paski narzędzi", _ False

Else

Application.SetOption "Dostępne wbudowane paski narzędzi", _ True

End If


3. Zachowaj formularz i przełącz go do widoku Formularz.

4. Kliknij kilkukrotnie na przycisku Przełącz pasek narzędzi. Co się dzieje?


Defragmentacja bazy danych z poziomu kodu


1. Dodaj kolejny przycisk polecenia do formularza Ćwiczenie_1 i zmień jego tytuł na Defragmentuj Metody.mdb.

2. Dodaj następujący kod do zdarzenia Przy kliknięciu tego przycisku:


DoCmd.Hourglass True

DBEngine.CompactDatabase "C:\...\Metody.MDB"_­,"C:\...\Metody.New"

MsgBox "Defragmentacja zakończona!"

DoCmd.Hourglass False


3. Zachowaj formularz i przełącz go do widoku Formularz.

4. Kliknij na przycisku polecenia i poczekaj aż pojawi się okno komunikatu.

5. Uruchom Eksploratora Windows, aby stwierdzić, czy zdefragmentowany plik ist­nieje.



Ćwiczenie 2

Tworzenie przestrzeni roboczej z poziomu kodu


W ćwiczeniu tym przygotujesz funkcję, która będzie tworzyła nową przestrzeń robo­czą i dodawała ją do bieżącej kolekcji. Kod ten dołączysz do przycisku polecenia nowe­go formularza.

  1. Otwórz bazę danych \Dao.mdb.

  2. Utwórz nowy, pusty formularz.

3. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na Utwórz przestrzeń roboczą.

4. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaPrzesterzen As WorkSpace

Dim i As Integer

'Początkowa ilość przestrzeni roboczych w kolekcji.

MsgBox Str(DBEngine.workspaces.Count) & ­

" - Początkowa ilość _ przestrzeni."

'Utworzenie nowej przestrzeni i dodanie jej do kolekcji.

Set MojaPrzesterzen =

DBEngine.CreateWorkspace("NowaPrzestrzeń", _ "Admin", "") DBEngine.workspaces.Append MojaPrzesterzen

'Końcowa ilość przestrzeni roboczych w kolekcji.

MsgBox Str(DBEngine.workspaces.Count) & _

" - Końcowa ilość przestrzeni."

'Wyświetlenie nazw przestrzeni roboczych w kolekcji.

For i = 0 To DBEngine.workspaces.Count - 1

MsgBox "PrzestrzenieRobocze(" & i & ").

Nazwa: " & _ DBEngine.workspaces(i).Name

Next

5. Zachowaj formularz jako Ćwiczenie_2 i przełącz go do widoku Formularz.

6. Kliknij na przycisku polecenia aby przetestować funkcję.


Ćwiczenie 3

Wyświetlenie numeru wersji aparatu obsługi baz danych oraz systemu


W tym ćwiczeniu utworzysz procedurę, która umożliwi określenie numeru wersji ba­zy danych. Jest to użyteczne, gdy chcesz mieć pewność, że pracujesz z najbardziej aktu­alną wersją bazy danych.

  1. Otwórz bazę danych Dao.mdb.

  2. Utwórz nowy, pusty formularz.

3. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na Wyświetl wersje.

4. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaBD As Database

Dim WerAp As String, WerBD As String


Set MojaBD = DBEngine.Workspaces(0).Databases(0)

WerAp = DBEngine.Version

WerBD = MojaBD.Version


MsgBox "Wersja aparatu obsługi: " & WerAp

MsgBox "Wersja bazy danych: " & WerBD


5. Zachowaj formularz jako Ćwiczenie_3 i przełącz go do widoku Formularz.

6. Kliknij na przycisku polecenia i poczekaj, aż pojawi się okno komunikatu.

7. Jakie informacje wyświetla okno komunikatu?



Ćwiczenie 4

Modyfikacja nazw tabel


W tym ćwiczeniu utworzysz procedurę, która będzie z poziomu kodu zmieniać na­zwę tabeli.

  1. Otwórz bazę danych Dao.mdb.

  2. Utwórz nowy, pusty formularz.

3. W dowolnym miejscu formularza utwórz przycisk przełącznika i zmień jego wła­ściwość Tytuł na Zmień nazwę tabeli.

4. Zmień właściwość Nazwa przycisku na ZmienNazweTabeli.

5. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaBD As Database

Set MojaBD = DBEngine(0)(0)


'Jeśli przycisk jest wciśnięty to zmień nazwę na AAA.

If Me!ZmienNazweTabeli = -1 Then

MojaBD.TableDefs("Klienci").name = "AAA"

Else

MojaBD.TableDefs("AAA").name = "Klienci"

End If


'Odśwież kolekcję TableDefs.

MojaBD.TableDefs.Refresh

RefreshDatabaseWindow


6. Zachowaj formularz jako Ćwiczenie_4 i przełącz go do widoku Formularz.

7. Kliknij na przycisku Zmień nazwę tabel". Zauważ, że w kontenerze bazy danych na­zwa tabeli Klienci zmieniła się na AAA.

8. Kliknij na przycisku Zmień nazwę tabeli po raz drugi. Zauważ, że w kontenerze bazy danych nazwa tabeli AAA zmieniła się na Klienci.



Ćwiczenie 5

Wyświetlenie instrukcji SQL kwerendy


W tym ćwiczeniu przygotujesz procedurę, która będzie odczytywać instrukcję SQL istniejącej kwerendy.

  1. Otwórz bazę danych Dao.mdb.

  2. Utwórz nowy, pusty formularz.

3. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na "Tekst instrukcji SQL".

4. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaBD As Database

Dim TekstSQL As String


Set MojaBD = DBEngine(0).OpenDatabase("C:\...\Northwind.mdb")

TekstSQL = MojaBD.QueryDefs("Faktury").SQL


MsgBox TekstSQL


5. Zachowaj formularz jako Ćwiczenie_5 i przełącz go do widoku Formularz.

6. Kliknij na przycisku Tekst instrukcji SQL. Co pojawiło się w oknie komunikatu`?



Ćwiczenie 6

Praca z obiektami typu Recordset


W tym ćwiczeniu przygotujesz funkcję, która będzie przeglądać Recordset w bazie danych, zwracając każdy dziesiąty rekord tego obiektu. Napiszesz także kod, który bę­dzie otwierał Recordset i podawał ile jest w nim rekordów.


Odczyt wybranych rekordów


I . Otwórz bazę danych Dao.mdb.

2. Utwórz nowy, pusty formularz.

3. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na Pokaż każdy dziesiąty rekord.

4. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaBD As Database, MojZestaw As Recordset,

Dim Nazwa As String, i As Integer


Set MojaBD = DBEngine.Workspaces(0).Databases(0)

Set MojZestaw = MojaBD.OpenRecordset("Klienci", DbOpenTable)

MojZestaw.MoveFirst

i = 1


Do Until MojZestaw.EOF

Nazwa = MojZestaw![NazwaFirmy]

MsgBox i & " - " & Nazwa

MojZestaw.Move 10

i = i + 10

Loop

MojZestaw.Close


5. Zachowaj formularz jako Ćwiczenie_6 i przełącz go do widoku Formularz.

6. Kliknij na przycisku Pokaż każdy dziesiąty rekord. Czy rzeczywiście zobaczyłeś każdy dziesiąty rekord?


Otwarcie obiektu Recordset i odczytanie ilości rekordów


1. Otwórz bazę danych Dao.mdb.

2. Otwórz formularz Ćwiczenie_6 w widoku projektu.

3. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na Policz rekordy.

  1. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaBD As Database, MojZestaw As Recordset, _ Ilosc As Integer


Set MojaBD = DBEngine(0)(0)

Set MojZestaw = MojaBD.OpenRecordset( _

"SELECT * FROM [Klienci] WHERE [Miasto] = 'Londyn ' " )

MojZestaw.MoveLast

Ilosc = MojZestaw.Recordcount

MojZestaw.Close

MsgBox "Ilość rekordów = " & Ilosc


5. Zachowaj formularz i przełącz go do widoku Formularz.

6. Kliknij na przycisku Policz rekordy. Jak wielu klientów mieszka w Londynie?



Ćwiczenie 7

Odczytywanie nazw i właściwości obiektów typu Container


W ćwiczeniu tym stworzysz pętlę przeglądającą kolejne obiekty typu container, zwracając nazwę i właściwości każdego z obiektów.

  1. Otwórz bazę danych Dao.mdb.

  2. Utwórz nowy, pusty formularz.

3. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na Lista obiektów Container i ich właściwości.

4. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaBD As Database

Dim c As Container, p As Proparty

Dim i As Integer, j As Integer


Set MojaBD = DBEngine(0)(0)

For i = 0 To MojaBD.Containers.Count - 1

Set c = MojaBD.Containers(i)

Debug.Print "CONTAINER: " & c.Name

For j - 0 To c.Properties.Count - 1

Set p = c.Properties(j)

Debug.Print , p.Name & ":", p.Value

Next j

Next i

MsgBox "zrobione! Rezultaty zobaczyć możesz w oknie bezpośrednim."


  1. Zachowaj formularz jako Ćwiczenie_7 i przełącz go do widoku Formularz.

  2. Kliknij na przycisku Lista obiektów Container i ich właściwości.

  3. Obejrzyj zawartość okna bezpośredniego.



Ćwiczenie 8

Wykorzystanie DAO do pracy z tabelami


W tym ćwiczeniu wykorzystasz DAO do manipulowania niektórymi podstawowymi parametrami tabel, takimi jak relacje między tabelami, pola i indeksy.

1. Otwórz bazę danych Dao.mdb.

2. Otwórz okno Relacje i zauważ, jeżeli pomiędzy tabelami Pracownicy i Zamówienia jest relacji usuń ją.

3. Utwórz nowy, pusty formularz.

4. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na Utwórz relację.

5. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaRelacja As Relation

Dim MojaBD As Database

Dim MojePole As Field


Set MojaBD = DBEngine(0)(0)


' Utworzenie nowego obiektu Relation.

Set MojaRelacja = MojaBD.CreateRelation("PracownicyZamówienia")


MojaRelacja.Table = "Pracownicy"

MojaRelacja.ForeignTable = "Zamówienia"

Set MojePole = MojaRelacja.CreateField("IDpracownika")

MojePole.ForeignName = "IDpracownika"


' Zachowanie definicji pola przez dołączenie go do kolekcji

' Relations.

MojaRelacja.Fields.Append MojePole


' Zachowanie definicji relacji przez dołączenie jej do

' kolekcji Relations

MojaBD.Relations.Append MojaRelacja


MsgBox "Relacja została utworzona - sprawdź to w oknie Relacja."


  1. Zachowaj formularz jako Ćwiczenie_8 i przełącz go do widoku Formularz.

  2. Kliknij na przycisku Utwórz relację.

8. Otwórz okno Relacje i zauważ, że pomiędzy tabelami Pracownicy i Zamówienia pojawiła się nowa relacja.


Lista indeksów tabeli Pracownicy


1. Otwórz formularz Ćwiczenie_8 w widoku projektu.

2. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na Lista indeksów.

3. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaBD As Database, MojaTabela As TableDef

Dim i As Integer, MojePola As String, MojaNazwa As String


Set MojaTabela = MojaBD.TableDefs("Pracownicy")

For i = 0 To MojaTabela.Indexes.count - 1

MojaNazwa = MojaTabela.Indexes(i).Name

MojePola = MojaTabela.Indexes(i).Fields

MsgBox "Nazwa indeksu: " & MojaNazwa & Chr(13) & Chr(10) & _ "Pola: " & MojePola

Next


4. Zachowaj formularz i przełącz go do widoku Formularz.

5. Kliknij na przycisku Lista indeksów. Co pojawiło się w oknie komunikatu?


Lista pól tabeli Kategorie


1. Otwórz formularz Ćwiczenie_8 w widoku projektu.

2. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właściwość Tytuł na Lista pól.

  1. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przyci­sku:


Dim MojaBD As Database, MojaTabela As TableDef

Dim i As Integer, MojaNazwa As String, MojTyp As Integer


Set MojaBD = DBEngine(0)(0)

Set MojaTabela = Moja»D.TableDefs("Kategorie")


For i = 0 To MojaTabela.Fields.count - 1

MojaNazwa = MojaTabela.Fields(i).Name

MojTyp = MojaTabela.Fields(i).Type

MsgBox "Nazwa pola: " & MojaNazwa & Chr(13) & Chr(10) & ­"Typ: " & MojTyp

Next


4. Zachowaj formularz i przełącz go do widoku Formularz.

5. Kliknij na przycisku Lista pól. Jakie nazwy i typy pól zostały wyświetlone? Co oznaczają poszczególne numery typów? Jakie stałe języka VBA odpowiadają tym typom?



Ćwiczenie 9

Lista parametrów kwerendy


W tym ćwiczeniu utworzysz funkcję, która będzie wyświetlała listę parametrów za­pytania.

  1. Otwórz bazę danych Dao.mdb.

  2. Utwórz nowy, pusty formularz.

3. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na Lista parametrów.

4. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaBD As Database, MojeZapytanie As QueryDef

Dim i As Integer, MojaNazwa As String, MojTyp As Integer


Set MojaBD = DBEngine(0)(0)

Set MojeZapytanie = MojaBD.QueryDefs("Sprzedaż wg ­pracowników i krajów")

For i = 0 To MojeZapytanie.Parameters.count - 1

MojaNazwa = MojeZapytanie.Parameters(i).Name

MojTyp = MojeZapytanie.Parameters(i).Type


MsgBox "Nazwa parametru: " & MojaNazwa & Chr(13) & ­Chr(10) & "Typ: " & MojTyp

Next


  1. Zachowaj formularz jako Ćwiczenie_9 i przełącz go do widoku Formularz.

  2. Kliknij na przycisku Lista parametrów.


Ćwiczenie dodatkowe 1

Właściwość tworzona przez użytkownika


W tym ćwiczeniu utworzysz właściwość zdefiniowaną przez użytkownika. Po wy­konaniu tej procedury nie zauważysz właściwie żadnych efektów. Dlatego możesz wy­konując tę funkcję wykorzystać pracę krokową.

1. Otwórz bazę danych Dao.mdb i utwórz nowy, pusty formularz.

2. W dowolnym miejscu formularza utwórz przycisk polecenia i zmień jego właści­wość Tytuł na Utwórz właściwość zdefiniowaną przez użytkow­nika.

  1. Dodaj poniższy kod do formularza dla zdarzenia Przy kliknięciu utworzonego przy­cisku:


Dim MojaBD As Database

Dim MojaWlasciwosc As Property


Set MojaBD = DBEngine.Workspaces(0).Databases(0)

Set MojaWlasciwosc = MojaBD.CreateProperty("Ostatnio0twarty")


'Ustawienie typu danych i wartości nowej właściwości.

MojaWlasciwosc.Type = DB_DATE

MojaWlasciwosc.value = Now


'Dodanie właściwości do kolekcji Properties.

MojaBD.properties.Append MojaWlasciwosc


MsgBox "Dodano właściwość użytkownika Ostatnio0twarty"


4. Zachowaj formularz jako Ćwiczenie_dodatkowe_1 i przełącz go do widoku Formu­larz.

5. Kliknij na przycisku Utwórz właściwość zdefiniowaną przez użytkownika.


Ćwiczenie dodatkowe 2

Odczytywanie informacji o obiektach bazy danych


Wykorzystując VBA, utwórz procedurę wyświetlającą w oknie bezpośrednim listę wszystkich tabel, zapytań, formularzy, raportów i modułów bazy danych NorthWind.


Ćwiczenie dodatkowe 3

Programowe tworzenie relacji


Użyj przycisku polecenia do utworzenia relacji jeden_do_wielu pomiędzy tabela­mi Pracownicy oraz Zamówienia z poziomu VBA. Dodaj drugi przycisk polecenia do kasowania relacji.


11


Wyszukiwarka

Podobne podstrony:
Laboratorium 1 programowanie w VBA
Laboratorium 2 programowanie w VBA
Laboratorium 3 programowanie w VBA
access programowanie w vba
Projekt Inż, Wstęp, Laboratorium programowania niskopoziomowego
Excel 2003 PL Programowanie w VBA Vademecum profesjonalisty
GiG-laboratorium-program, IV semestr moje, elektrotechnika, Nowy folder
Laboratorium 2 Program
laboratorium 1 program
Excel 2003PL Programowanie VBA Vademecum Profesjonalisty
Programowanie w VBA
Access Programowanie w VBA acpv Nieznany
Visual basic, Programowanie VBA
Excel 2007 pl Programowanie w VBA
Laboratorium programowania w C
Excel 2013 PL Programowanie w VBA dla bystrzakow
access programowanie w vba
Excel 2010 PL Programowanie w VBA Vademecum Walkenbacha 2