[ Pobierz całość w formacie PDF ]

gdy użytkownik przechodzi z kontrolki bazodanowej powiązanej z tym polem do innej,
zamyka komórk¹ komponentu DBGrid poÅ‚Ä…czonÄ… z polem lub zatwierdza caÅ‚y rekord.
Przy użyciu procedury obsługi zdarzenia można wykonać dowolne testy, włączając w to:
odczyt wartości innych pól tego samego rekordu, użycie innego zestawu danych do
odwoÅ‚ywania si¹ do wartoÅ›ci innego zestawu wynikowego, sprawdzanie wartoÅ›ci kon-
trolek interfejsu użytkownika, które nie są bazodanowe. Jeśli kod stwierdzi, że wartość
pola jest z jakiegoś powodu niedopuszczalna, można wywołać wyjątek z komunikatem
bÅ‚¹du wyjaÅ›niajÄ…cym dlaczego wartość jest nieprawidÅ‚owa.
258 Część II f& Aplikacje bazodanowe
Poniższe kroki opisujÄ… operacj¹ definiowania walidacji na poziomie pola przy użyciu
procedury obsługi zdarzenia OnValidate. W tym przypadku procedura ta użyta dla
pola DATE_NEEDED sprawdzi, czy użytkownik wprowadziÅ‚ poprawnÄ… dat¹, czyli dat¹
która nie jest datą z przeszłości.
1. Otwórz moduł danych projektu, który był wykorzystywany w poprzednich
przykładach rozdziału.
2. Dodaj poniższÄ… definicj¹ typu w cz¹Å›ci moduÅ‚u. ZostaÅ‚y w niej
zdeklarowane dwie nowe klasy . Pierwsza z nich 
 jest klasÄ… nadrz¹dnÄ… lub superklasÄ… wszystkich zdefiniowanych wyjÄ…tków,
które b¹dzie można wywoÅ‚ać w kodzie. W rozdziale 5. wspomniano, że takie
podejście ułatwia zarządzanie wyjątkami.
3. W edytorze pól wybierz pole DATE_NEEDED.
4. WyÅ›wietl zakÅ‚adk¹ Events okna Object Inspector i utwórz procedur¹ obsÅ‚ugi
zdarzenia OnValidate.
5. Wprowadz do niej poniższy kod:
6. Zapisz projekt i uruchom go. Wstaw nowy rekord i podaj dat¹ starszÄ… niż data
aktualna, którÄ… wyÅ›wietla zegar systemowy. W celu przejÅ›cia do nast¹pnego
rekordu naciÅ›nij klawisz prawej strzaÅ‚ki. Zostanie wtedy wywoÅ‚any nast¹pujÄ…cy
wyjÄ…tek (patrz rysunek 8.11).
Rysunek 8.11.
WyjÄ…tek
7. Zamknij okno dialogowe i spróbuj przejść do innego rekordu. Spowoduje to prób¹
zatwierdzenia rekordu, co z kolei rozpocznie operacj¹ walidacji pola i ostatecznie
wywoÅ‚a wyjÄ…tek. JeÅ›li nie podasz poprawnej daty, wtedy nie b¹dziesz mógÅ‚ opuÅ›cić
pola lub zatwierdzić rekordu.
Dostęp do pola  wydajność i zarządzanie
Jak napisaliÅ›my w poprzedniej cz¹Å›ci, można wyróżnić trzy sposoby dost¹pu do pól
stałych  za pomocą właściwości Fields zestawu danych, metody lub
odwołania do pola stałego. Czy ma jakiekolwiek znaczenie to, którego sposobu użyjemy?
Rozdział 8. f& Klasa TField 259
Odpowiedz brzmi  tak. WÅ‚aÅ›ciwie jest to bardziej skomplikowane, niż mogÅ‚oby si¹
wydawać. Zciśle mówiąc, każdy sposób ma swoje wady i zalety. W rezultacie aby wybrać
najbardziej odpowiedniÄ… technik¹ dost¹pu do pól staÅ‚ych, należy przeanalizować wy-
magania aplikacji.
Wady i zalety powyższych technik omówimy w dalszej cz¹Å›ci rozdziaÅ‚u. Na koÅ„cu
zaprezentujemy, jak można poÅ‚Ä…czyć dwa z powyższych sposobów w celu osiÄ…gni¹cia
maksymalnej wydajności i łatwości obsługi kodu.
Zastosowanie właściwości Fields
WÅ‚aÅ›ciwość Fields pozwala na bezpoÅ›redni dost¹p do powiÄ…zanego pola. W przeciwieÅ„-
stwie do metody właściwość ta nie powoduje dodatkowego obciążenia zwią-
zanego z przeszukiwaniem powiązanego pola. W efekcie wydajność kodu wykorzysty-
wanego przez właściwość Fields jest lepsza.
Niestety kod ten jest trudny do zanalizowania, ponieważ podczas dost¹pu do okreÅ›lonego
pola dokonywane jest odwołanie do niego za pomocą liczby. Ponadto zmiany w strukturze
powiązanej tabeli lub kolejności pól w poleceniu może spowodować odwołanie
do niewłaściwego pola. Podsumowując, kod wykorzystywany przez właściwość Fields
jest trudniejszy w konserwacji i debugowaniu.
Zastosowanie metody FieldByName
Metoda działa wolniej niż właściwość Fields, ponieważ w celu odnale-
zienia numeru porządkowego pola podanego w tej właściwości musi ona przeszukać
list¹ pól zestawu danych. Wzrost obciążenia w tym przypadku jest wprost proporcjonalny
do cz¹stotliwoÅ›ci wywoÅ‚ywania metody . Jednorazowe uruchomienie metody
nie stwarza problemu, ale przy ilości 100 000 razy  już tak. [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • policzgwiazdy.htw.pl