Na tej stronie udzielam odpowiedzi na najczęściej zadawane mi pytania
dotyczące Accessa 97



  1. Jaka jest dobra książka do Accessa?
  2. Żeby odpowiedzieć na to pytanie, należy sobie zadać jeszcze jedno: dobra książka dla kogo? Jedna książka będzie dobra dla osoby, która chce zostać projektantem systemów informatycznych. Inna będzie dobra dla osoby, który chce tylko zaliczyć jakieś zajęcia (bez etapu "zakuwania"). Poniżej przedstawiam moją (prywatną!) opinię na temat znanych mi książek o Accessie.


    MS Access 7

    MS Access 97

    MS Access 2000

    Książki opisujące Accessa od strony technicznej nie wystarczą, żeby zostać projektantem systemów informatycznych. W tym celu należy znać również teorię relacyjnych baz danych.


    Teoria relacyjnych baz danych

    Ponadto proponuję odwiedzić kilka wydawnictw i zobaczyć bieżące katalogi książek.



  3. Czy Access zawsze generuje takie strony macierzyste? Jaka jest dobra książka do HTML-a?
  4. Przy eksporcie do HTML-a Access używa kreatora publikacji WWW. Ów kreator może wykonać stronę macierzystą, która zawiera tabelę z linkami do eksportowanych obiektów z Accessa. Nie udało mi się zmusić tego kreatora, żeby wykonał stronę macierzystą wg innego schematu (np.: nie stosował strony kodowej "Windows-1250"). Zamieszczam specyfikację języka HTML 4.0 (z miesięcznika CHIP 2'1998) oraz zestaw kilku linków do poradników dla Webmasterów.

    html.zip- 321KB

    Linki

    Ponadto dlaczego zmieniać stronę macierzystą w HTML-u? Można do tego celu użyć też VRML-a. Jedyną książkę jaką znalazłem (poświęconą w całości nauce języka VRML) jest "VRML Trzeci wymiar sieci" autorstwa K. Dąbkowskiego (Wydawnictwo "MIKOM"). Językowi VRML poświęcony jest też jeden rozdział książki "HTML4, DHTML, VRML, XML" wydawnictwa LYNX-SFT (autorzy: Eric Ladd, Jim O'Donnell i inni). Poniżej zamieszczam mały, wirtualny świat, w którym można otwierać strony WWW (np.: raporty z Accessa) poprzez "kliknięcie" na odpowiedniej książce. Do obejrzenia tego świata wystarczy plug-in do VRML 2.0 (ja używam CosmoPlayera).


    Świat - 92KB


  5. Szukam jakiejś książki o SQL-u.
  6. Przede wszystkim należy zdać sobie sprawę, że każdy produkt software'owy używający tego języka obsługuje nieco inny "dialekt". Nie mam możliwości zebrania i przeanalizowania tak wielkiej ilości informacji o różnych produktach software'owych i dlatego w pewnym przybliżeniu nakreślę tylko opinię (prywatną!) o znanych mi książkach o SQL-u. Oprócz opinii o książkach zamieszczam też podstawowe informacje o SQL-u jako spakowany plik HTML.

    sql.zip - 28KB

    SQL


  7. Jak się robi EXE-ca w Accessie?
  8. Można tworzyć w Accessie pewien rodzaj instalacji. W tym celu należy posiadać wersję Office'a dla developerów lub dokupić upgrade do wersji proffesional. Jak poinformowano mnie w firmie Microsoft Polska, dla MS Office 2000 PL można dokupić upgrade o nazwie Office Developer Tools (part no. 549-00-290) w cenie około 400USD (cena netto i może ulec zmianie). W tym celu zaproponowano mi skontaktowanie się z firmami "Baza" (tel. 651-90-32) lub "A.P.N. Promise" (tel. 654-94-92). W "A.P.N. Promise" potwierdzono, że wspomniany produkt jest u nich dostępny.


  9. Czy Access jest odporny na problem roku 2000?
  10. Access 97 raczej tak. Po zmianie daty nie wykryłem poważniejszych nieprawidłowości w pracy aplikacji. MS Access 97 intrerpretuje dwucyfrowy rok następująco:

    Zakres daty dla skróconego formatu roku

    Interpretacja

    od 1/1/00 do 12/31/29

    od 1/1/2000 do 12/31/2029

    od 1/1/30 do 12/31/99

    od 1/1/1930 do 12/31/1999

    Zainteresowanych odsyłam do FMS.


  11. Jak Accessa użyć do wykonania systemu w architekturze klient-serwer?
  12. Access nie daje możliwości wykonania systemu informatycznego w architkturze klient-serwer w pełni tego słowa znaczeniu. Podejrzewam jednak, że w pytaniu chodzi o możliwość wykonania systemu ze wspólną bazą danych i kilkoma aplikacjami klienckimi. Otóż Access daje możliwość przyłączenia tabel. Polega to na tym, że tabele z danymi umieszcza się w jednym pliku (np.: DANE.MDB), a pozostałe elementy systemu informatycznego w drugim pliku (np.: APLIKACJA.MDB). W drugim pliku można połączyć tabele z pliku pierwszego. W Accesie mówimy o podziale na "zaplecze" (plik pierwszy - zawiera tabele i relacje) i "fronton" (plik drugi - zawiera cały interfejs użytkownika). Tu jednak warto wspomnieć, że tak wykonany system informatyczny nadaje się dla kilku użytkowników.
    Można też używać Accessa tylko jako "zaplecza" (np.: widziałem działający system, w którym do bazy Accessa podłączały się aplikacje klienta wykonane w FoxPro) lub tylko jako "frontonu" (jednak dopiero Access 2000 daje możliwość wywoływania procedur bazodanowych np.: z MS SQL Serwera 7.0 - tak więc poprzednie wersje Accessa nie nadają się do współpracy z bazami danych, w których takie procedury należy wywoływać np.: w celu wykonania raportu).
    Zamieszczam spakowany plik "tabele łączone.mdb", który po otworzeniu uruchomi funkcje w VBA, a te połączą tabele z innej bazy w Accessie:
    tabele.zip - 28KB


  13. Jak używać własnych funkcji w Accessie? Jak wywoływać inne funkcje?
  14. MS Access daje możliwość wywołania zewnętrznej funkcji (spoza Accessa), która umieszczona jest w pliku DLL (biblioteka łączona dynamicznie). Na przykład funkcje API są w ten sposób dostępne. Poniżej zostawiam przykład użycia takiej funkcji w celu wyświetlenia okna dialogowego "OpenFile".
    openfile.zip - 58KB


  15. Czy ochrona hasłem w Accessie jest wystarczająca?
  16. Nie. Włamywaczowi do bazy danych chodzi o zdobycie informacji. Jeżeli plik MDB zostanie tylko zabezpieczony hasłem, to można odczytać z niego informacje traktując go jako plik tekstowy (informacja w tabelach daje się odczytać jako tekst). Żeby zapobiec tej praktyce powinno się (oprócz założenia hasła) zaszyfrować bazę danych. Polecenia szyfrowania i zakładania hasła są dostępne w menu Narzędzia. Chciałbym też żeby każdy zdawał sobie sprawę z faktu, że są to zabezpieczenia dość popularnego produktu i w związku z tym ktoś prędzej czy później poświęci swój czas na ich złamanie. Z tego powodu polecam używać dodatkowo samodzielnie zaimplementowanych sposobów ochrony danych.

    Żeby nie było cienia wątpliwości co do "bezpieczeństwa" zapewnianego poprzez założenie hasła w Accessie 97 zamieszczam poniżej łamacz tego hasła (jako programik pod DOS-a, a osoby, które chcą sobie przekompilować taki programik pod Windows odsyłam do kodu źródłowego). Polecam też łamacze haseł zamieszczone w miesięczniku Enter 2'2000 (proszę też zobaczyć do czego może doprowadzić włamanie do niezaszyfrowanej bazy danych z numerami kart płatniczych - artykuł w miesięczniku WWW 3'2000).
    snif.zip - 10KB


  17. Jak zabezpieczyć Accessa?
  18. Kilka propozycji, które utrudnią życie włamywaczowi, jest zawartych w module "Właściwości" i "Zabezpieczenia" pliku hurtownia.mdb. W przypadku prób modyfikacji zawartych tam funkcji, polecam wykonać sobie wcześniej KOPIĘ systemu.
    Dobrze też wiedzieć, że przy odrobinie "dobrej woli" można zobaczyć obiekty zawarte w pliku MDE. Tak więc kompilacja do postaci MDE nie jest skutecznym zabezpieczeniem systemu informatycznego wykonanego w Accessie.
    hurtownia.zip - 298KB (Po otworzeniu pliku można wyłączyć formularz logowania wciskając klawisz "Esc").


  19. Jak przerobić daną kwotę na zapisaną słowami?
  20. W module "Słownie" z pliku hurtownia.mdb jest funkcja, która to wykonuje.
    hurtownia.zip - 298KB (Po otworzeniu pliku można wyłączyć formularz logowania wciskając klawisz "Esc").


  21. Jak za pomocą kwerendy wyciągnąć dane z tabeli w innej bazie?
  22. Sposobów jest kilka. Polecam połączenie owej tabeli do Accessa dzięki sterownikom ODBC (tu proszę zajrzeć do dowolniej książki opisującej tematy: "tabele łączone", "kwerendy przekazujące", "konfiguracja źródeł danych ODBC"). Jeżeli wspomniana tabela jest wykonana w Accessie, ale umieszczona w innym pliku, to można jeszcze wykonać kwerendę wybierającą i w niej podać lokalizację pliku (lokalizacja może być też adresem w sieci lokalnej, ale to bardzo wolno działa, dlatego zalecam w takim wypadku mapowanie dysku sieciowego) np.:

    SELECT * FROM nazwa_tabeli IN 'C:\dane.mdb';


  23. Jak w kwerendzie zaokrąglić wynik dzielenia do dwóch miejsc po przecinku?
  24. Sposobów jest kilka. Można np. wynik dzielenia przerobić na liczbę typu waluta (funkcją CCur), następnie przerobić ją na string o dwóch miejscach po przecinku (funkcją Format), a na końcu ponownie przerobić na liczbę (funkcją CDbl) (oczywiście zakładam, że nie dzielę przez zero i wynikiem dzielenia nie jest NULL i że wynik dzielenia nie zostanie "obcięty" do typu danych Walutowy):

    CDbl(Format(CCur([pierwsza]/[druga]);"0,00"))
    Uwaga! Proponowana metoda wymaga liczb typu waluta. Należy koniecznie zastosować funkcję CCur. Jeżeli spróbujemy zaokrąglać liczby innego typu to otrzymamy błędy np.:
    • dla 0,015 otrzymamy 0,01 zamiast 0,02
    • dla 0,075 otrzymamy 0,07 zamiast 0,08.


  25. Jak za pomocą VBA zmienić rozdzielczość?
  26. Może wystarczy dać użytkownikowi możliwość takiej zmiany? Dla kliknięcia przycisku wpisujemy kod:

    Call Shell("control.exe desk.cpl,,3", 1)