[ Pobierz całość w formacie PDF ]
.Użytkownicy zauważą, że zachowanie aplikacji jest bardziej im znane i bardziej intuicyjne.Użytkownikoczekuje, że po prostu otworzy rekord, zmieni go i zmiany zostaną zapisane.W poprzednich wersjach Accessablokowanie stron powodowało, że pesymistyczne blokowanie było zbyt kosztowne w przypadku dużej ilościużytkowników.Użytkownicy musieli się liczyć z tym, że ktoś inny zablokuje ich zmiany, a programiści będą obmyślaćsposoby na przewidywanie zachowań użytkowników (rozszerzanie rekordów, tabele tymczasowe itd.).Blokowanierekordów jest najważniejszym ulepszeniem Jet 4.0 i powinno spowodować utworzenie wielu popularnych i elastycznychaplikacji.Właściwość RecordLocks w interfejsie związanymGdy w Accessie otwierany jest związany formularz lub zestaw rekordów, możliwe jest nałożenie blokady na bazowyzestaw rekordów.Oczywiście opcja ta działa tylko w przypadku rozwiązań z użyciem Jet, gdy używamy architekturyklient-serwer, Access zawsze przyjmuje opcję Bez blokowania.Programista ma możliwość wyboru z:u Bez blokowania jest to odpowiednik blokowania optymistycznego.u Edytowany rekord jest to odpowiednik blokowania pesymistycznego.u Wszystkie rekordy blokuje wszystkie rekordy w zestawie.Należy ostrożnie używać go w aplikacjachwielodostępnych.Mimo że połączenie interfejsu użytkownika z danymi jest najprostsząmetodą udostępnienia użytkownikom danych, jednak robiąc to traciszmożliwość kontroli.Na formularz podłączonym do pesymistycznie zablo-kowanego rekordu użytkownik dostanie przekreślone O w pasku wyborurekordu, jednak nie wiadomo, kto zablokował rekord.Jeżeli pasek wyborurekordu jest niewidoczny, użytkownik usłyszy tylko sygnał dzwiękowy.Metody blokowania silnika JetBlokady są normalną i niezbędną operacją w bazie danych, jednak aby upewnić się, że blokady są właściwego typu i czasutrwania, powinieneś mieć możliwość dostania informacji o tym kiedy nastąpiła blokada.W tej części opisane zostałorozpoznawanie typów blokad w aplikacji, aby sprawdzić, czy projekt aplikacji jest właściwy.Określanie stanu blokadJak jest to opisane wcześniej, blokowanie rekordu lub strony jest wykonywane w różnych momentach w zależności, czyjest to blokowanie optymistyczne, czy pesymistyczne.Także różne części aplikacji (lub różne aplikacje) mogą używaćróżnych typów blokowania tych samych danych w tym samym czasie.Z tego powodu mogą wystąpić różne typy błędów.Otrzymany błąd zależy od stanu blokady.ADO dostarcza właściwości LockType w obiekcie recordset, która wskazuje na rodzaj blokady, jaka nałożona zostaniena rekord w czasie jego edycji.Właściwość tę można zmieniać przed otwarciem zbioru rekordów, a po jego otwarciumożna ją tylko odczytywać.399Rozdział 21.f& Zagadnienia wielodostępu, serwer plików, blokowanieW tabeli 21.2 opisane są stałe używane dla właściwości LockType w Mictosoft.Jet.OLEDB.4.Inni dostawcy OLEDBdostarczają różnych opcji.Aby sprawdzić, która opcja jest dostępna, użyj metody.Supports z parametrem adUpdate lubadUpdateBatch.Tabela 21.2.Stałe typów blokowania w Jet 4.0 udostępniane przez dostawcę Mictosoft.Jet.OLEDB.4.0Stała OpisAdLockReadOnlyDomyślne ustawienie.Zbiór obiektów nie może być zmieniany, jestotwierany tylko do odczytu i rekordy nie są blokowaneAdLockPessimisticPesymistyczne blokowanie rekordówAdLockOptimisticOptymistyczne blokowanie w czasie wywoływania zdarzenia UpdateADLockBatchOptimisticOptymistyczne blokowanie dla uaktualniania wsadowegoadLockPessimistic nie działa, gdy właściwość CursorLocation jestustawiona na adUseClient, jednak nie wystąpi żaden błąd.Jet podstawiinny podobny typ blokowania.Dzieje się tak, ponieważ używającadUseClient, serwer nie śledzi bieżącego rekordu, więc nie jest możliwepesymistyczne blokowanie.Podzbiór ADOR (ADOR to podzbiór modelu obiektów ADO, który do-starcza tylko obiektów Recordset i Field, które mogą być tworzone lubprzesyłane z serwera do klienta), dostarcza tylko typu blokowaniaadLockOptimisticBatch.Znajomość stanu blokady rekordu jest ważne w czasie tworzenia, testowania i utrzymywania aplikacji.Każdy proces, któryobsługuje dane, powinien być sprawdzony, czy spełnia założenia projektu.Wykonanie tego jest proste.Zatrzymajwykonanie programu i sprawdz wartość właściwości LockType w obiekcie recordset (rysunek 21.1).Rysunek 21.1 [ Pobierz całość w formacie PDF ]
zanotowane.pl doc.pisz.pl pdf.pisz.pl odbijak.htw.pl
.Użytkownicy zauważą, że zachowanie aplikacji jest bardziej im znane i bardziej intuicyjne.Użytkownikoczekuje, że po prostu otworzy rekord, zmieni go i zmiany zostaną zapisane.W poprzednich wersjach Accessablokowanie stron powodowało, że pesymistyczne blokowanie było zbyt kosztowne w przypadku dużej ilościużytkowników.Użytkownicy musieli się liczyć z tym, że ktoś inny zablokuje ich zmiany, a programiści będą obmyślaćsposoby na przewidywanie zachowań użytkowników (rozszerzanie rekordów, tabele tymczasowe itd.).Blokowanierekordów jest najważniejszym ulepszeniem Jet 4.0 i powinno spowodować utworzenie wielu popularnych i elastycznychaplikacji.Właściwość RecordLocks w interfejsie związanymGdy w Accessie otwierany jest związany formularz lub zestaw rekordów, możliwe jest nałożenie blokady na bazowyzestaw rekordów.Oczywiście opcja ta działa tylko w przypadku rozwiązań z użyciem Jet, gdy używamy architekturyklient-serwer, Access zawsze przyjmuje opcję Bez blokowania.Programista ma możliwość wyboru z:u Bez blokowania jest to odpowiednik blokowania optymistycznego.u Edytowany rekord jest to odpowiednik blokowania pesymistycznego.u Wszystkie rekordy blokuje wszystkie rekordy w zestawie.Należy ostrożnie używać go w aplikacjachwielodostępnych.Mimo że połączenie interfejsu użytkownika z danymi jest najprostsząmetodą udostępnienia użytkownikom danych, jednak robiąc to traciszmożliwość kontroli.Na formularz podłączonym do pesymistycznie zablo-kowanego rekordu użytkownik dostanie przekreślone O w pasku wyborurekordu, jednak nie wiadomo, kto zablokował rekord.Jeżeli pasek wyborurekordu jest niewidoczny, użytkownik usłyszy tylko sygnał dzwiękowy.Metody blokowania silnika JetBlokady są normalną i niezbędną operacją w bazie danych, jednak aby upewnić się, że blokady są właściwego typu i czasutrwania, powinieneś mieć możliwość dostania informacji o tym kiedy nastąpiła blokada.W tej części opisane zostałorozpoznawanie typów blokad w aplikacji, aby sprawdzić, czy projekt aplikacji jest właściwy.Określanie stanu blokadJak jest to opisane wcześniej, blokowanie rekordu lub strony jest wykonywane w różnych momentach w zależności, czyjest to blokowanie optymistyczne, czy pesymistyczne.Także różne części aplikacji (lub różne aplikacje) mogą używaćróżnych typów blokowania tych samych danych w tym samym czasie.Z tego powodu mogą wystąpić różne typy błędów.Otrzymany błąd zależy od stanu blokady.ADO dostarcza właściwości LockType w obiekcie recordset, która wskazuje na rodzaj blokady, jaka nałożona zostaniena rekord w czasie jego edycji.Właściwość tę można zmieniać przed otwarciem zbioru rekordów, a po jego otwarciumożna ją tylko odczytywać.399Rozdział 21.f& Zagadnienia wielodostępu, serwer plików, blokowanieW tabeli 21.2 opisane są stałe używane dla właściwości LockType w Mictosoft.Jet.OLEDB.4.Inni dostawcy OLEDBdostarczają różnych opcji.Aby sprawdzić, która opcja jest dostępna, użyj metody.Supports z parametrem adUpdate lubadUpdateBatch.Tabela 21.2.Stałe typów blokowania w Jet 4.0 udostępniane przez dostawcę Mictosoft.Jet.OLEDB.4.0Stała OpisAdLockReadOnlyDomyślne ustawienie.Zbiór obiektów nie może być zmieniany, jestotwierany tylko do odczytu i rekordy nie są blokowaneAdLockPessimisticPesymistyczne blokowanie rekordówAdLockOptimisticOptymistyczne blokowanie w czasie wywoływania zdarzenia UpdateADLockBatchOptimisticOptymistyczne blokowanie dla uaktualniania wsadowegoadLockPessimistic nie działa, gdy właściwość CursorLocation jestustawiona na adUseClient, jednak nie wystąpi żaden błąd.Jet podstawiinny podobny typ blokowania.Dzieje się tak, ponieważ używającadUseClient, serwer nie śledzi bieżącego rekordu, więc nie jest możliwepesymistyczne blokowanie.Podzbiór ADOR (ADOR to podzbiór modelu obiektów ADO, który do-starcza tylko obiektów Recordset i Field, które mogą być tworzone lubprzesyłane z serwera do klienta), dostarcza tylko typu blokowaniaadLockOptimisticBatch.Znajomość stanu blokady rekordu jest ważne w czasie tworzenia, testowania i utrzymywania aplikacji.Każdy proces, któryobsługuje dane, powinien być sprawdzony, czy spełnia założenia projektu.Wykonanie tego jest proste.Zatrzymajwykonanie programu i sprawdz wartość właściwości LockType w obiekcie recordset (rysunek 21.1).Rysunek 21.1 [ Pobierz całość w formacie PDF ]