Formularze

Formularze Accessa służą o odczytu, edycji, wprowadzania i usuwania danych. Użytkownik aplikacji zbudowanej w Accessie nie powinien w zasadzie robić tego bezpośrednio w tabelach, a właśnie w formularzach. Tym bardziej, że pozwalają one nie tylko na znacznie przyjaźniejszą formę graficzną, ale przede wszystkim – umożliwiają wprowadzanie danych jednocześnie do kilku różnych, powiązanych z sobą tabel. Formularze można także oprogramować (czy to makrami czy procedurami VBA), dzięki czemu otwiera się cały szereg możliwości ułatwiających pracę w aplikacji.

Podstawowe typy formularzy:

    • formularz pojedynczy – na ekranie widoczny jest jeden rekord
    • formularz ciągły – na ekranie widocznych jest wiele rekordów
    • formularz dzielony – w jednej części formularza widoczne są pola jednego rekordu, w drugiej części – wszystkie rekordy

Tworząc formularze – z reguły nigdy nie opieram ich bezpośrednio o tabelę. Nigdy nie wiadomo, czy nie pojawi się potrzeba rozbudowy,  więc zdecydowanie lepszym rozwiązaniem jest wykorzystanie tu kwerend.
Formularz może być też niezwiązany czyli bez źródła danych. Taką formę stosuję bardzo często do wprowadzania nowych danych. Przed zapisaniem ich potem do tabel – mam możliwość dokładnego ich sprawdzenia i przy stwierdzeniu błędów, wyświetlenia komunikatu i przerwania procedury. Sprawdza się się w praktyce.


Kurs Access - formularze i raporty

Kwerenda

Podstawowe typy kwerend w bazie Accessa to:

    • kwerenda wybierająca
    • kwerenda grupująca
    • kwerenda krzyżowa
    • kwerenda składająca
    • kwerendy funkcjonalne:
      • dodająca
      • usuwająca
      • aktualizująca
      • tworząca tabele

To podstawowy podział, choć w każdym typie kwerendy możliwe są różnego rodzaju podtypy np. kwerendy parametryczne.
Generalnie kwerendy są tworzone  w oknie siatki kwerendy, choć można podejrzeć je w widoku SQL.

Każdy typ kwerend to temat na osobną notkę.


Kurs Access - kwerendy

 

Tabela

Podstawą każdej aplikacji Accessa jest zawsze tabela. Może  być jedna, może być ich wiele. W tabelach zapisywane są wszystkie wprowadzone  dane. Warto pamiętać, że zmieniając, usuwając czy dodając  dane  do tabel, robimy to od razu na dysku – nie da się edytować danych i wyjść “bez zapisywania”.

Jak zbudować tabelę? Z karty Tworzenie wybieramy Projekt tabeli:

 

W projekcie każdej nowej tabeli domyślnie pojawia  się jedno nowe pole o nazwie Identyfikator i typie danych – Autonumerowanie. Można to od razu zmienić czy to nadając własną nazwę czy też ustawiając inny typ danych.

Typy danych pól w tabeli

 

    • Tekst – wartości typu tekstowego (String)
    • Nota – wartości typu tekstowego o znacznej długości. W niektórych wersjach Accessa pole to występuje pod nazwą Memo.
    • Liczba– wartości typu liczbowego.
    • Data – wartości typu data/czas
    • Waluta – wartości typu walutowego
    • Autonumerowanie – pole typu liczba całkowita długa (Long) . Wartości tego typu danych są wstawiane automatycznie dla każdego nowego rekordu, jako kolejna wartość porządkowa. Istotne tu jest to, że numeracja jest zapisana na stałe. Jeżeli usuniemy np.ostatni rekord, a  potem dodamy nowy – będzie on miał wartość pola i tak zwiększoną o 1. Nawet usunięcie wszystkich rekordów spowoduje, że numeracja będzie prowadzana jako kontynuacja, a nie od 1. Chcąc zresetować pole typu autonumerowanie w tabeli jedynym wyjściem jest stworzenie kopii tabeli (tylko struktura, bez danych), ewentualne dołączenie rekordów ze starej tabeli do nowej, a następnie usunięcie starej tabeli i zmiana nazwy tabeli skopiowanej
    • Tak/Nie – wartość typu logicznego (Boolean)
    • Obiekt OLE – wartość typu połączony obiekt
    • Hiperłącze – wartość hiperłącza
    • Załącznik– wartość typu załącznik
    • Obliczeniowy – wartość wyznaczona w wyniku obliczeń
    • Kreator odnośników – wartość typu lista stworzona na podstawie odwołań do innych tabel/kwerend

Właściwości pola tabeli

 

W zależności od typu danych pola poszczególne właściwości mogą się nieco różnić. Dla pola typu Tekst występuje np. rozmiar pola, dla liczb – rodzaj liczby, ilość miejsc dziesiętnych itp.

    • Rozmiar Pola – dla pól typu tekst można wstawić maksymalną ilość znaków. Domyślna wartość to 255, ale warto ją zmniejszyć, jeżeli wiemy, że wystarczy mniejsza.
    • Format – tu również są różne możliwości w zależności od typu danych. Ma to znaczenie głównie dla liczb – w jakim formacie ma być wprowadzona wartość
    • Maska – różne maski wprowadzania, w zależności od typu danych. Dla tekstu może być to np. odpowiednio sformatowany numer kodu, może być to hasło itp.
    • Tytuł – tekst, który ma być widoczny w nagłówku tabeli (a także w etykietach opartych o nie formantów w formularzach czy raportach).  Dla kolumny o nazwie np. NrKsiaz, wpisanie tytułu np.Numer książki spowoduje, że prosta (bez spacji i polskich znaków diakrytycznych) nazwa będzie widoczna wszędzie w wersji przyjaznej dla użytkownika. Brak Tytułu powoduje, że tytuł jest tożsamy z nazwą pola.
    • Wartość domyślna – wartość wstawiana domyślnie dla nowych rekordów
    • Reguła sprawdzania poprawności – ograniczenie wartości wprowadzanych danych. Np. dla pola typu liczba całkowita tylko wartości ujemne
    • Tekst reguły sprawdzania poprawności – treść komunikatu pojawiającego się przy wprowadzeniu wartości nie spełniającej reguły
    • Wymagane – do wyboru 2 opcje: Tak lub Nie. Przy zaznaczeniu Tak, pole to nie może zostać puste, musi mieć wprowadzoną  wartość.
    • Indeksowane – indeksowanie przyspiesza wyszukiwanie, sortowanie i filtrowanie rekordów, ale nieco dłużej trwa zapisywanie rekordów (moim zdaniem – niezauważalnie).
      Przy wybraniu opcji Tak (Bez duplikatów) wprowadzane wartości muszą  być  unikalne.
    • Tryb IME – stosowany jest tylko przy współpracy z językami azjatyckimi
    • Tagi – pole do wpisania tagu
    • Odnośnik – właściwość w drugiej zakładce.
      Domyślnie jest to pole tekstowe, ale może być to pole listy lub kombi.

      Po wybraniu Pola listy lub Pola Kombi konieczne jest ustalenie źródła wierszy. Może być być to lista wartości oddzielonych średnikami (np.tak; nie), a może być to lista pobrana z innej tabeli lub kwerendy.
      Klikając na 3 kropki na końcu wiersza uruchamiany okienko siatki kwerendy, gdzie można zdefiniować źródło wierszy.

Może być to 1, ale może być to więcej kolumn. Ja najczęściej stosuję 2 kolumny: identyfikator oraz pole. Wówczas trzeba tylko pamiętać o zmianie liczby kolumn. A ponieważ nie zawsze zależy nam na tym, aby obie kolumny były widoczne – wystarczy ustawić szerokość kolumny do ukrycia na 0cm.
Efekt końcowy w tabeli wygląda  tak:

Zamiast wpisywać ręcznie wartość do pola – wybieramy z listy.
Konieczne  jest tu jednak zwrócenie uwagi na numer kolumny związanej. Na screenie powyżej jest to kolumna 1 i mimo, że jest niewidoczna, to faktycznie wartość z  tej kolumny jest zapisana w tabeli.


Kurs Access 2010 esencja

Kopiowanie pliku

Jak szybko skopiować dowolny plik? Sposobów jest kilka, jednym z nich jest wykorzystanie obiektu FileSystem.Object.
Służy do tego metoda FileSystem.Object.Copy
Ma ona kilka parametrów wejściowych:

    • Object – nazwa obiektu zdefiniowanego jako obiekt FSO. Argument obowiązkowy.
    • Source – nazwa pliku do skopiowania. Argument obowiązkowy, ale dozwolone są znaki zastępcze w  nazwie.
    • Destination – nazwa pliku po skopiowaniu. Argument obowiązkowy.
    • Overwrite – opcjonalny argument typu Boolean. Jeżeli kopiowany plik ma być zapisany pod nazwą już istniejącego pliku, wartość False nie skopiuje pliku. Domyślna wartość True, zastąpi plik plikiem kopiowany.

Przykładowy kod kopiujący plik może wyglądać tak:

Public Sub KopiujPlik()
Dim FSO As Object
Dim KopiowanyPlik As String
Dim
NowyPlik As String
KopiowanyPlik= “C:\Wprawki\PrzykladowaBaza.accdb”
NowyPlik= “C:\NaBlogi\PrzykladowaBaza.accdb”
Set FSO=CreateObject(“Scripting.FileSystemObject”)
FSO.Copy  KopiowanyPlik, NowyPlik, True
Set FSO=Nothing
End Sub

 


FileSystem.Object

Scripting.FileSystemObject to obiekt służący do zarządzania plikami i folderami. Wprawdzie w kodzie VBA są dostępne proste i przyjemne funkcje Dir, MkDir itp., ale przy odwołaniach do folderów sieciowych niestety często zawodzą. Wówczas pozostaje wykorzystanie właśnie obiektu FileSystemObject, popularnie nazywanym FSO.

Dostępne są tu następujące właściwości i metody:

    • GetDrive – informacje o napędzie (dysku)
    • GetFolder – informacje o folderze
    • GetFile– informacje o pliku
    • CreateFolder – tworzenie folderu
    • CreateFile – tworzenie pliku
    • DeleteFolder – usuwanie folderu
    • DeleteFile – usuwanie pliku
    • CopyFolder – kopiowanie folderu
    • CopyFile – kopiowanie pliku
    • MoveFolder – przenoszenie folderu
    • MoveFile – przenoszenie pliku

To tylko te podstawowe, jest ich więcej. I każda będzie tematem notki.


Obiekty aplikacji Access

Podstawowe obiekty aplikacji Access:

 

  • Tabele
    miejsce, gdzie zapisywane są wszystkie dane.
  • Kwerendy
    obiekty związane z filtrowaniem i sortowaniem danych, realizowane przez wysyłanie zapytań do tabel (kodem SQL). Są też kwerendy funkcjonalne automatycznie modyfikujące/usuwające/dodające dane tabel
  • Formularze
    obiekty prezentujące dane na ekranie w przyjaznej formie graficznej. Oprócz danych można wstawiać różnego rodzaju obiekty typu przyciski, obrazy itp.
  • Raporty
    podobnie jak formularze pozwalają prezentację danych, ale w formie przystosowanej do wydruku
  • Makra
    zdefiniowane procedury automatyzujące pracę
  • Moduły
    moduły kodu VBA,  podobnie jak makra, pozwalające na automatyzację działania poszczególnych elementów aplikacji

Otwieranie folderu kodem VBA

Jak z poziomu aplikacji otworzyć określony folder na dysku? Sposobów jest kilka, jeden z nich to wykorzystanie funkcji Shell.

Public Sub OtworzFolder()
Dim a
Dim JSciezka As String
JSciezka = “C:\CWICZENIAFORA”
a = Shell(“explorer.exe ” & JSciezka, vbNormalFocus)
End Sub

Po uruchomieniu kodu w aplikacji Access – w oddzielnym oknie Windows otwiera się folder zdefiniowany w zmiennej JSciezka, a kod VBA przechodzi do kolejnego kroku.


Funkcja Shell

Funkcja VBA Shell to funkcja uruchamiająca inny program wykonywalny.
Ma 2 argumenty wejściowe:

    • PathName  – argument obowiązkowy. Wartość typu String określająca nazwę programu do otwarcia;
    • WindowStyle – argument opcjonalny. Wartość typu Integer określająca widok okna uruchomionego programu.
      Dostępne są tu następujące wartości:

      • 0 (vbHide) – okno uruchomionego programu jest ukryte
      • 1 (vbNormalFocus) – okno uruchomionego programu jest widoczne  i ma fokus
      • 2  (vbMinimizedFocus) – okno uruchomionego programu jest widoczne jako ikona i ma fokus
      • 3  (vbMaximizedFocus) – okno uruchomionego programu jest maksymalnie powiększone i ma fokus
      • 4  (vbNormalNoFocus) – okno uruchomionego programu jest widoczne, ale nie ma fokusu
      • 6 (vbMinimizedNoFocus) – okno uruchomionego programu jest widoczne jako ikona i nie ma fokusu

Wartością domyślną jest tu 1 (vbNormalFocus)

W wyniku działania funkcji VBA otrzymujemy wartość typu Variant będącą identyfikatorem numeru zadania uruchomionego programu. Jeżeli uruchomienie programu się nie powiedzie – zwracana jest wartość 0.


Kurs Access - programowanie w VBA

Aplikacje Access – dobre praktyki

Każdy tworzący aplikacje w Accessie ma swoje własne przyzwyczajenia i zasady tworzenia. Moim zdaniem nie ma jedynie słusznych rozwiązań, różne drogi prowadzą do tego samego celu. Owszem, są metody mniej lub bardziej optymalne, działające szybciej lub wolniej, ale najczęściej nawet nie widać różnicy, szczególnie przy prostych aplikacjach.

Ja też mam swoje przyzwyczajenia i sposoby tworzenia aplikacji – takie własne dobre praktyki. Może komuś się przyda?

    • nazwy tabel, kwerend i formularzy nie powinny mieć takich samych nazw. Wprawdzie od wersji chyba Access 2007 jest to możliwe, ale jeśli odwołujemy się do jakiegoś obiektu, lepiej wiedzieć czy chodzi tu o tabelę czy kwerendę. Jeśli mamy np. tabelę Spis – warto zapisać ją pod nazwą np.TbSpis, związaną z nią kwerendę – KwSpis, a formularz – FrSpis.
      W podobny sposób – wszystkie inne obiekty. W ten sposób na pewno się nie zgubimy, nawet gdy obiektów jest dużo;
    • żadnych polskich literek w nazwach obiektów i nazwach pól. Teoretycznie tu też nie ma zakazu, ale wszystkie te ogonki mogą być źródłem problemów. Polskie znaki diaktryczne można za to wpisywać w tytułach kolumn, pól itp. Efekt końcowy np. na formularzu będzie taki sam, a unikamy w ten sposób ewentualnych błędów przy uruchomieniu aplikacji na komputerze w innej wersji językowej;
    • nazwy obiektów, pól itd. lepiej gdy są jednowyrazowe. Czyli zamiast np. Marka samochodu można wykorzystać nazwę MarkaSamochodu – to metoda zapisu „na wielbłąda”. Moim zdaniem dobrze się sprawdza;
    • wszystkie nieprzypisane formanty na formularzu (przyciski poleceń, pola kombi itp.) powinny mieć swoje własne nazwy mniej więcej opisujące ich zawartość. Zamiast Polecenie1, Polecenie2 … lepiej stosować nazwy typu PolecenieWyjscie, PolecenieWydruk itp. Przy większej ilości formantów na pewno w ten sposób się nie pogubimy;
    • nie jest to regułą, ale przy wprowadzaniu danych bardzo często stosuję pusty, niezwiązany formularz. Przy wypełnianiu poszczególnych pól stosuję kontrolę poprawności danych, a dopiero później wprowadzam dane do tabeli/tabel kodem VBA.

To takie podstawy. Ja wykorzystuję na co dzień i się sprawdzają.


Kurs Access 2013 od podstaw

 

%d bloggers like this: