Access
 sql >> Baza danych >  >> RDS >> Access

Visual Basic for Applications w programie Microsoft Access

Wprowadzenie

Program Microsoft Access zawiera szereg funkcji umożliwiających programistom baz danych tworzenie formularzy wprowadzania danych, raportów i zapytań, które mogą pomóc użytkownikom w wyszukiwaniu istniejących danych w bazie danych i wprowadzaniu nowych danych. Różne narzędzia do tworzenia zapytań i kreatorów ułatwiają ten proces rozwoju. Jednak nawet w przypadku tych narzędzi mogą wystąpić sytuacje, w których programista chciałby dodać jeszcze więcej funkcji, których nie zapewniają jeszcze narzędzia programistyczne MS Access. Na przykład programista może chcieć automatycznie poprawiać złe dane przed ich zapisaniem w bazie danych, wyświetlać alert w przypadku naruszenia reguły biznesowej, pomagać użytkownikowi nawigować z jednego formularza wprowadzania danych do drugiego lub uruchamiać raport z niektórymi niestandardowymi filtrami. Sposobem na osiągnięcie takiego dostosowania jest dodanie kodu przy użyciu języka programowania Visual Basic for Applications.

Visual Basic for Applications (VBA) to język programowania używany w produktach z rodziny Microsoft Office, takich jak Excel i Access. Język VBA wywodzi się z języka „Basic” wynalezionego w 1964 roku, który stał się popularny na komputerach osobistych w latach siedemdziesiątych. „Wizualna” część nazwy została dodana przez firmę Microsoft, aby odzwierciedlić użycie języka programowania Basic w systemie Microsoft Windows.

Istnieje wiele samouczków, które wprowadzają programowanie w Basic. Ten samouczek skupi się na małym podzbiorze funkcji języka VBA używanego w MS Access.

Zawartość

  • Wydarzenia w programie Microsoft Access
  • Przykład kodu VBA:upewnianie się, że nazwy są we właściwym przypadku
  • Język VBA – deklarowanie i przypisywanie do zmiennych, instrukcji warunkowych i komentarzy
  • Język VBA – funkcje, metody i przykłady
  • Język VBA – właściwości
  • Ćwiczenia z kodowania VBA
  • Obsługa błędów w VBA
  • Uruchamianie niestandardowych zapytań SQL w VBA

Następna strona przedstawia wydarzenia w Microsoft Access.

Wydarzenia w programie Microsoft Access

W programie Access kod programowania VBA jest dołączony do formularzy i raportów i można go skonfigurować tak, aby uruchamiał się w określonym czasie lub w reakcji na określone zdarzenie. Ten styl programowania jest czasami określany jako programowanie „oparte na zdarzeniach”, co oznacza, że ​​kod napisany przez programistę zostanie uruchomiony w odpowiedzi na pewne zdarzenie .

Gdy formularz jest wyświetlany w widoku formularza, zwykle wysyła zapytanie o wszelkie istniejące dane z tabel bazowych, a następnie po prostu siedzi bezczynnie, dopóki użytkownik czegoś nie zrobi. Na przykład użytkownik może kliknąć jeden z przycisków nawigacyjnych, aby przejść do następnego rekordu, kliknąć pole tekstowe i rozpocząć wpisywanie nowych danych lub kliknąć przycisk Zamknij, aby zamknąć formularz. Każde z tych działań skutkuje Zdarzeniem dzieje się w formie. Każde kliknięcie myszą lub naciśnięcie klawiatury jest traktowane jako zdarzenie.

W większości zdarzenia mają zachowanie domyślne. Kliknięcie przycisku nawigacyjnego „następny rekord” powoduje przewinięcie formularza do następnego rekordu danych. Wpisanie litery „C”, gdy kursor znajduje się w polu tekstowym, powoduje pojawienie się litery „C” w polu tekstowym. Naciśnięcie klawisza TAB powoduje, że kursor przeskakuje do następnego pola tekstowego (lub kontrolki) w formularzu i tak dalej. Programista może zmienić lub ulepszyć to domyślne zachowanie i wstawić własny kod, który zostanie uruchomiony w odpowiedzi na zdarzenie.

Programowanie VBA w formularzach dostępu i raportach koncentruje się głównie na pisaniu kodu odpowiadającego na różne zdarzenia.

Zanim zagłębimy się w szczegóły wydarzeń, pouczające może być zaimplementowanie prostego przykładu. Aby zobaczyć, jak działa kod, następna sekcja tego samouczka zawiera przewodnik dotyczący dodawania kodu VBA do formularza wprowadzania danych.

Przykład kodu VBA:upewnianie się, że nazwy są we właściwym przypadku

Poniżej znajduje się stosunkowo krótki i prosty przykład dodania kodu VBA do formularza wprowadzania danych w MS Access. Kilka szczegółów zostanie pominiętych dla celów zwięzłości. Po tym przykładzie reszta samouczka wypełni te szczegóły.

W tym przykładzie użyto Klienta formularz wprowadzania danych, który został dostosowany w samouczku Zaawansowane formularze MS Access. Możesz chcieć ukończyć ten samouczek (lub przynajmniej części dotyczące formularza wprowadzania danych Klienta) przed kontynuowaniem.

Wprowadzając nowe informacje o kliencie, chcielibyśmy upewnić się, że nazwy klientów są wpisane „właściwym przypadkiem”. Oznacza to, że pierwsza litera nazwy powinna być wielką literą, a reszta nazwy powinna być pisana małymi literami. Jeśli użytkownik wpisze:„Jan” chcielibyśmy, aby formularz automatycznie poprawił to na poprawną wielkość liter:„Jan”.

Jeśli chodzi o zdarzenia, dodamy kod, który jest połączony ze zdarzeniem After Update dla pola Imię w formularzu klienta. Oznacza to, że po coś zostało zmienione (zaktualizowane ) w polu Imię zostanie wyzwolone zdarzenie After Update, a następnie kod, który napiszemy, przejdzie do działania, aby upewnić się, że wpisana nazwa została przekonwertowana na poprawną wielkość liter.

Poniższe kroki umieszczają ten kod na swoim miejscu.

  1. Otwórz wpis danych klienta dla w trybie projektowania.
  2. Kliknij prawym przyciskiem myszy Imię pole tekstowe i wybierz Właściwości z wyskakującego menu.
  3. Kiedy Arkusz właściwości jest wyświetlany, kliknij zakładkę Zdarzenie. Pokazuje to poniższy rysunek:

    Zwróć uwagę na listę wyświetlanych zdarzeń. Każdy z nich można zaprogramować tak, aby odpowiadał na określone zdarzenie, które dzieje się z Imieniem pole tekstowe.

  4. Utwórz nową procedurę obsługi zdarzeń, klikając trzy kropki po prawej stronie zdarzenia After Update.
  5. Wybierz Konstruktora pojawi się okno. Wybierz Konstruktor kodu a następnie kliknij OK przycisk.
  6. Pojawi się okno edycji kodu VBA. Zauważ, że program Access utworzył już skrót podprogramu, który zaczyna się od słów Private Sub i kończy słowami End Sub.
    Nazwa podprogramu jest tworzona przy użyciu nazwy kontrolki formularzy (FirstName) i nazwy Zdarzenie, na które odpowie ten podprogram (po aktualizacji).

    Linia End Sub to miejsce, w którym kończy się ten konkretny podprogram.

  7. Dodaj następujący kod w pustym wierszu pomiędzy Private Sub i End Sub.:
    FirstName = StrConv(FirstName, vbProperCase)
    
    

    Po zakończeniu kod będzie wyglądał następująco:

    Ta nowa linia kodu wykonuje następujące czynności:

    StrConv to funkcja, która pobiera zawartość pola tekstowego FirstName i konwertuje je zgodnie z drugim podanym parametrem, którym w tym przykładzie jest vbProperCase. Po wykonaniu tej konwersji wynik zostanie przypisany (za pomocą znaku równości) z powrotem do pola tekstowego FirstName. To nadpisze wszystko, co jest aktualnie w polu tekstowym FirstName. Na przykład ta funkcja pobierze „sally”, przekonwertuje je na „Sally”, a następnie umieści „Sally” w polu tekstowym FirstName.

  8. Zapisz ten nowy kod, przeciągając Plik menu i wybierając Zapisz .
  9. Przetestuj nowy kod. Przełącz się z powrotem na ekran trybu projektowania programu Microsoft Access. Zmień widok na Widok formularza.
  10. Przejdź do pustego rekordu. Kliknij pole Imię i wpisz imię małymi literami:

  11. Naciśnij kartę klawisz, aby przejść do następnego pola tekstowego. Imię Joe powinno zostać zmienione na "Joe", jak pokazano poniżej:
  12. Jeśli pojawi się błąd, przełącz się z powrotem do edytora kodu VBA i upewnij się, że poprawnie wpisałeś wszystkie części kodu. Może być konieczne pociągnięcie Bieg menu i wybierz Resetuj w celu zatrzymania działania kodu VBA.

Powyższy przykład dostarczył szybkiego spojrzenia na to, jak można dostosować zachowanie formularza, aby pomóc użytkownikowi wprowadzić ładnie sformatowane dane do bazy danych. Kilka szczegółów zostało pominiętych w tym przykładzie i zostaną one omówione w dalszej części tego samouczka.

Język VBA

Ta sekcja pokrótce przedstawia główne części języka VBA używanego w MS Access. Kompleksowy przegląd VBA wykracza poza zakres tego samouczka. Odniesienia do bardziej kompleksowych książek i materiałów znajdują się na końcu tego samouczka.

Deklarowanie zmiennych

zmienna to nazwa nadana symbolowi zastępczemu, w którym programista może przechowywać pewne dane. Na przykład zmienna może służyć do przechowywania liczby, podczas gdy wykonujemy na niej pewne operacje matematyczne lub porównujemy jej wartość z innymi zmiennymi. Zmienne można zadeklarować do przechowywania wartości określonego typu danych takie jak liczby całkowite, ciągi znaków lub daty. Aby zadeklarować nową zmienną, użyj instrukcji Dim. Na przykład, aby zadeklarować nową zmienną o nazwie MyName i skonfiguruj go tak, aby zawierał ciąg (znaki), wykonaj następujące czynności:

Dim strMyName As String

Aby zadeklarować nową zmienną o nazwie „AccountBalance” i ustawić ją do przechowywania liczby z ułamkiem dziesiętnym, użyj następującego:

Dim dblAccountBalance jako Double

Przypisywanie wartości

Wartość można przypisać do zmiennej lub kontrolki w formularzu za pomocą znaku równości. Na przykład, aby zapisać imię „Alex” w zmiennej MyName, użyj następującego:

strMyName =„Alex”

Aby skopiować zawartość pola tekstowego FirstName do zmiennej MyName, użyj:

strMyName =[Imię]

Wartości można również obliczyć przed przypisaniem. Na przykład poniższe wyrażenie pobiera saldo konta bieżącego klienta z pola tekstowego [Saldo], dodaje 1% odsetek (poprzez pomnożenie salda przez 1,01), a następnie zmniejsza wynik o 10 USD. Na koniec wynik jest przypisywany do zmiennej AccountBalance.

dblAccountBalance =( [Saldo] * 1,01 ) – 10,00

Oświadczenia warunkowe

Instrukcja warunkowa używa testu logicznego w celu określenia, które wiersze kodu mają zostać uruchomione w następnej kolejności. Instrukcja warunkowa If … Then jest dość często używana. Na przykład:

If AccountBalance < 1000 Then
      MonthlyFee = 10
Else
      MonthlyFee = 0
End If

Wyrażenie logiczne AccountBalance <1000 jest oceniane. Jeśli to wyrażenie jest prawdziwe (na przykład, jeśli saldo konta wynosi 400 USD), uruchamiany jest następny wiersz po Then. W tym przykładzie opłata miesięczna =10.

Jeśli to wyrażenie ma wartość False, uruchamiany jest wiersz po Else.

Wyrażenie logiczne może zawierać kilka części, które są połączone operatorami boolowskimi OR, AND i NOT. Dokładniejsze omówienie wyrażeń logicznych można znaleźć w tym samouczku programowania. Załóżmy na przykład, że rezygnujemy z opłaty miesięcznej, jeśli konto ma mniej niż rok. Załóżmy, że mamy AccountAge jako wiek konta w miesiącach. Wtedy kod będzie wyglądał następująco:

If AccountBalance < 1000 AND AccountAge > 12 Then
      MonthlyFee = 10
Else
      MonthlyFee = 0
End If

W instrukcji If … Then można uruchomić więcej niż jeden wiersz kodu i instrukcje If … Then mogą być zagnieżdżone w sobie.

Komentarze

Podczas programowania w dowolnym języku programowania dobrą praktyką jest dołączenie komentarzy opisujących kod. W VBA komentarz można dołączyć, zaczynając od pojedynczego cudzysłowu. Biorąc powyższe jako przykład, możemy dodać następujące komentarze:

Więcej części języka VBA omówiono na następnej stronie.

Język VBA – ciąg dalszy

Funkcje

Język VBA ma dużą liczbę wbudowanych funkcji i metod, które można wykorzystać do wykonywania różnych zadań, takich jak funkcje matematyczne (sin, cos, tan), funkcje łańcuchowe i wiele innych. Funkcje zazwyczaj mają jeden lub więcej parametrów wejściowych, które są używane przez funkcję. Na przykład w funkcji Cos(45) „45” jest kątem wejściowym, na którym będzie działać funkcja cosinus. Funkcja StrConv wymaga dwóch parametrów wejściowych:ciągu do konwersji i stylu konwersji:

StrConv(Imię, vbProperCase)

Niektóre przydatne funkcje obejmują:

MsgBox (monit, przyciski, tytuł) Wyświetl wyskakujące okienko z tekstem zachęty, przyciskami i tytułem
StrConv(wyrażenie, styl) Konwertuj wyrażenie tekstowe na wielkie, małe lub poprawne litery
Lewo (wyrażenie, znaki) Weź skrajne lewe znaki z wyrażenia łańcuchowego
Mid(wyrażenie, początek, znaki) Weź środkowy zestaw znaków z wyrażenia łańcuchowego, zaczynając od początku
IsNull( wyrażenie) Sprawdź, czy wyrażenie tekstowe (lub pole tekstowe) nie zawiera treści (jest puste)
Nz(wyrażenie, wartość_jeśli_null) Jeśli wyrażenie jest puste, wpisz wartość domyślną
Teraz() Zwraca bieżącą datę i godzinę
Zaokrąglony(wyrażenie, ułamki dziesiętne) Zaokrągla wyrażenie liczbowe do pewnej liczby miejsc po przecinku
RGB (czerwony, zielony, niebieski) Zwraca liczbę całkowitą koloru na podstawie kombinacji czerwonego, zielonego i niebieskiego

Metody

Metody w VBA są jak funkcje, ale są połączone z kontrolką lub innym obiektem w formularzu lub raporcie.

Niektóre przydatne metody obejmują:

DoCmd.CancelEvent Anuluje bieżące obsługiwane zdarzenie
DoCmd.Zamknij Zamknij bieżący formularz (lub bazę danych)
DoCmd.OpenForm Otwiera nowy formularz
DoCmd.OpenReport Uruchom polecenie MS Access, takie jak zapisanie nowych lub zaktualizowanych danych, cofnięcie zmiany lub wyjście z formularza
.SetFocus Ustaw fokus na kontrolce w formularzu
.Cofnij Cofnij ostatnią zmianę lub polecenie
.Odśwież Aktualizuje wszystkie dane stanowiące podstawę formularza
. Zapytanie Wymaga danych dostarczonych do formularza
.Odśwież Odświeża wszystkie kontrolki w formularzu

Wiele innych funkcji i metod jest wymienionych na tej stronie firmy Microsoft.

Poniższy zestaw przykładów wykorzystuje różne funkcje i metody w różnych kombinacjach.

Przykłady

Pokaż użytkownikowi ostrzeżenie, jeśli saldo konta jest poniżej 1000 USD

If AccountBalance < 1000 Then
      MsgBox("Warning: The Account Balance is now less than $1,000.")
End If

Jeśli pole tekstowe Imię w formularzu coś zawiera, przekonwertuj to na poprawną wielkość liter

If Not IsNull( [FirstName] ) Then
   FirstName = StrConv( [FirstName], vbProperCase )
End If

następna strona przedstawia właściwości różnych obiektów.

Właściwości

Każdy element w formularzu wprowadzania danych lub raporcie ma zestaw właściwości powiązany z tym. Właściwości kontrolują położenie, kolor, czcionkę, tło i inne atrybuty wyglądu i formatowania każdej kontrolki. Na przykład niektóre z wielu właściwości TextBox obejmują:

Widoczny Określa, czy pole tekstowe jest widoczne w formularzu
Zablokowane Określa, czy dane w polu tekstowym można zmienić
Indeks kart Kolejność każdej kontrolki, gdy użytkownik porusza się po formularzu, naciskając Tab
Etykieta Identyfikuje nazwę etykiety powiązanej z polem tekstowym
Szerokość, wysokość, górna i dolna pozycja Wskazuje względną pozycję i rozmiar pola tekstowego
Styl i kolor tła Ustawia styl tła i kolor pola tekstowego
Styl i kolor obramowania Ustawia styl i kolor obramowania wokół pola tekstowego
Rozmiar czcionki, grubość, podkreślenie, kursywa, kolor i wyrównanie Ustawia czcionkę i styl
Marginesy i odstępy dopełnienia – Ustawia marginesy i dopełnienie wokół wnętrza pola tekstowego

Właściwości można ustawić za pomocą widoku projektu i zapisać z formularzem lub raportem. Właściwości można również zmienić za pomocą kodu VBA, gdy formularz jest uruchomiony. Aby uzyskać dostęp do właściwości w VBA, użyj nazwy kontrolki, kropki, a następnie nazwy właściwości. Na przykład poniższy kod zmienia kolor czcionki pola tekstowego CustomerID na czerwony:

IDKlienta.ForeColor =vbRed

Poniższe sekcje zawierają ćwiczenia, które łączą różne części języka programowania VBA w celu dostosowania zachowania różnych formularzy wprowadzania danych.

Ćwiczenia z kodu VBA

Wypróbuj następujące ćwiczenia, które dostosowują formularze. Wróć do poprzednich sekcji, aby znaleźć przykłady kodu, który można dostosować do bieżącego ćwiczenia.

Ćwiczenie 1

Zmodyfikuj formularz CustomerDataEntry, aby dodać dwie procedury obsługi zdarzeń AfterUpdate, które przekonwertują imię i nazwisko na poprawną wielkość liter (utwórz osobną procedurę obsługi AfterUpdate dla każdego pola tekstowego). Napisz kod, aby najpierw sprawdzić, czy pole tekstowe nie jest puste przed próbą konwersji tekstu.

Ćwiczenie 2

Zmodyfikuj formularz AccountsDataEntry, aby dodać procedurę obsługi zdarzeń AfterUpdate, która będzie wyświetlać okno komunikatu ostrzegawczego, jeśli saldo konta jest poniżej 5000 USD. Zmień także kolor czcionki pola tekstowego Balans na czerwony.

Ćwiczenie 3

Zmodyfikuj formularz wprowadzania danych klienta. Utwórz podprocedurę On Lost Focus, która zmienia etykietę pola tekstowego FirstName na kolor czerwony (vbRed), jeśli użytkownik opuści pole tekstowe FirstName bez wpisywania czegokolwiek. Ustaw etykietę na niebieską (vbBlue), jeśli coś jest w polu tekstowym. W poniższym przykładzie nic nie zostało wpisane w polu tekstowym FirstName, a następnie użytkownik przeszedł na następne pole tekstowe, co spowodowało, że etykieta FirstName zmieniła kolor na czerwony.

Na następnej stronie tego samouczka omówiono sposób obsługi błędów w kodzie VBA.

Obsługa błędów w VBA

Czasami kod VBA napotka błąd. Na przykład, jeśli pole tekstowe jest puste i próbujemy przekonwertować zawartość pola tekstowego na poprawną wielkość liter, funkcja StrCnv nie powiedzie się. Innym przykładem jest dzielenie przez zero. Bez obsługi błędów te problemy mogą spowodować awarię programu VBA. Gdy wystąpi błąd, specjalny kod może uruchomić się, aby obsłużyć błąd i kontynuować przetwarzanie kodu VBA.

Dwie główne funkcje obsługi błędów w języku VBA to instrukcja On Error Goto i instrukcja Resume Next. Te dwie instrukcje kodu VBA współpracują ze sobą, aby uniemożliwić VBA awarię aplikacji.

Instrukcja On Error Goto informuje VBA o tym, co zrobić, gdy w podprogramie wystąpi błąd. Część instrukcji Goto odwołuje się do etykiety w innym miejscu kodu, w którym VBA będzie nadal działać. Gdy program VBA dotrze do etykiety, każdy błąd pojawi się w obiekcie o nazwie Err. Właściwość Err.Description będzie zawierać opis tekstowy ostatniego napotkanego błędu. Instrukcja Resume Next spowoduje, że program VBA będzie kontynuował działanie od punktu po wystąpieniu błędu.

Poniższy przykład rozwija procedurę FirstName_AfterUpdate wprowadzoną na początku tego samouczka. Teraz program VBA może obsłużyć wszelkie błędy, które mogą wystąpić w programie.

Private Sub FirstName_AfterUpdate
     ' Subroutine to convert the FirstName of the customer to Proper Case
    On Error Goto FirstName_AfterUpdate_Error_Handler
     FirstName = StrConv(FirstName, vbProperCase)
     ' If the conversion was successful, exit this subroutine
     Exit Sub
FirstName_AfterUpdate_Error_Handler:
       ' If there is an error show the description of the error
      MsgBox Err.Description
      ' Resume with the next statement In the subroutine
     Resume Next
End Sub

w następnej sekcji tego samouczka omówiono, jak dołączyć kod SQL do VBA.

Uruchamianie niestandardowych zapytań SQL w VBA

Structured Query Language (SQL) to język programowania używany w relacyjnych bazach danych, takich jak MS Access, SQL Server, Oracle i wielu innych. Za pomocą instrukcji SQL można wstawiać, aktualizować, usuwać i pobierać (wybierać) rekordy danych z tabel (wśród wielu innych możliwości). Prosty przykład instrukcji SQL to:

SELECT customerid, firstname, lastname
FROM  customer

Kod SQL można napisać w VBA i uruchomić w odpowiednim czasie. Na przykład można napisać podprogram VBA w celu odpytywania tabeli Customer w celu znalezienia najwyższego identyfikatora klienta. Następnie moglibyśmy dodać 1 do tej liczby, aby uzyskać nowy, nieużywany identyfikator klienta dla nowego rekordu.

Ogólne kroki do wykonania tego typu zadań to:

Utwórz instrukcję SQL

Uruchom instrukcję SQL, używając otwartego połączenia z bazą danych (o nazwie CurrentDb w VBA)

Odzyskaj wynikowe rekordy i użyj pobranych danych

Aby utworzyć ten podprogram VBA, otwórz formularz CustomerDataEntry i uzyskaj właściwości pola CustomerID. Na karcie Zdarzenia kliknij trzy kropki po prawej stronie zdarzenia Kliknięcie dwukrotne. Wybierz narzędzie do tworzenia kodu, a kod pośredniczący zostanie utworzony w następujący sposób:

Private Sub CustomerID_DblClick(Cancel As Integer)

End Sub

Dodaj następujący kod:

Private Sub CustomerID_DblClick(Cancel As Integer)
    ' Create a new CustomerID when user double-clicks in the CustomerID field
    On Error GoTo ErrorHandler
    Dim rstResults As Recordset ' This will hold the set of result records
    Dim strSQL As String        ' This variable will hold the text of the SQL Statement
    ' If there is nothing in the CustomerID text box
    If IsNull(CustomerID) Then
       ' Make the SQL statement
       strSQL = "SELECT MAX(customerid) + 1 AS NewID FROM customer"
       ' Run the SQL query against the current database
       Set rstResults = CurrentDb.OpenRecordset(strSQL)
       ' If at least 1 record is returned
       If rstResults.EOF = False Then
          ' Assign the NewID to the CustomerID field
          CustomerID = rstResults!NewID
       End If

        rstResults.Close              ' Close up the result set
       Set rstResults = Nothing      ' Empty out the result set
    End If
    Exit Sub

ErrorHandler:
    Set rstResults = Nothing
End Sub

Po umieszczeniu kod będzie wyglądał następująco:

Zapisz plik, a następnie wyświetl formularz CustomerDataEntry. Przejdź do nowego rekordu, a następnie kliknij dwukrotnie w polu CustomerID. Nowy identyfikator klienta powinien zostać utworzony automatycznie.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Visual Basic for Applications w programie Microsoft Access

  2. Praca ze strukturalnym językiem zapytań (SQL) przy użyciu Microsoft Access 2010, 2013, 2016 i 2019

  3. Jak skompaktować bazę danych, aby działała szybciej?

  4. Debugowanie procedur prywatnych

  5. 10 wskazówek oszczędzających czas dla użytkowników MS Access