Warsztat 3: Zmiana bieżącej bazy w trakcie jednej sesji Accessa.

AccessManager.zip
Autor: Krzysztof Pozorek
Baza w formacie MsAccess 2000
162kB, 21-05-2004

Opis problemu:

Access ma nieprzekraczalne ograniczenie - nie można za pomocą naszej aplikacji zmienić bieżącej bazy na inną, w ramach tej samej sesji Accessa.

To bolesne ograniczenie, bo tak by się chciało wykonać moduł, który zamknie bieżącą bazę, dokona niezbędnych operacji administracyjnych (defragmentacja, archiwizacja itp.) i ponownie otworzy nasz program albo inny do dalszej pracy.

Rozwiązanie:

Po raz kolejny zapraszam do krainy magii... i sztuczek accessowych. Prezentowany program demonstruje nie jedną, ale kilka rzeczy niemożliwych do wykonania w Accessie:

Wszystko wewnątrz jednej sesji Accessa!!!

Uzupełnienie:

Program korzysta z pliku Panel.vba, który należy wcześniej przygotować w Accessie (można też korzystać z Excela lub innego komponentu MsOffice z dostępem do projektu VBA). 

Aby utworzyć nowy plik projektu (vba) należy:
- otworzyć Accessa
- przejść do projektu modułu (Alt+F11)
- wybrać z menu File opcję New Project i nacisnąć OK.

Teraz już możemy z menu Insert dodawać do naszego projektu:
- UserForms
- Moduły
- Klasy
- funkcje i procedury
(czyli mamy mniej więcej to samo, co w  zwykłym accessowym środowisku).

Uwaga: Opcja UserForm domyślnie nie występuje w menu - trzeba sobie ją tam wstawić samemu. W tym celu należy kliknąć prawym przyciskiem myszy na menu i wybrać Dostosuj. Potem z kategorii Insert przeciągnąć do naszego menu polecenie UserForm. (Jeśli ktoś korzysta z Excela, to nie musi tego robić, bo tam UserForm jest od razu dostępne.)

Jeśli teraz otworzymy kolejny plik vba lub bazę mdb, to otrzymamy środowisko wieloprojektowe, które charakteryzuje się tym, że jeden projekt jest niezależny od drugiego. W szczególności można zamknąć naszą bazę mdb bez zamykania innych projektów. To właśnie wykorzystuje prezentowany program (AccessManager.zip).

K. P.

Uwagi: Zobacz wątek 1 i wątek 2 w archiwum accessowej grupy dyskusyjnej.