[ Pobierz całość w formacie PDF ]

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.
Mimo że metoda nie prezentuje si¹ najlepiej pod wzgl¹dem wydajnoÅ›cio-
wym, to jednak kod przez nią wykonywany jest łatwy do analizy, ponieważ nazwa pola,
do którego jest realizowany dost¹p, pojawia si¹ przy jej wywoÅ‚aniu. W efekcie cz¹sto
łatwiej jest zarządzać kodem, który wykonuje metoda , i debugować go.
Ponadto w przypadku tej metody zmiana kolejności pól powiązanego zestawu danych nie
ma znaczenia. Tak dÅ‚ugo jak nazwy pól si¹ nie zmieniÄ…, zmiana ich kolejnoÅ›ci w tabeli
lub w poleceniu , nie b¹dzie wymagaÅ‚a dokonania żadnych zmian w kodzie wy-
korzystujÄ…cym metod¹ .
Z drugiej strony metoda ta jest bardzo wrażliwa na zmiany nazw pól. Za każdym razem,
gdy zmienia si¹ nazwa pola, do którego metoda ma dost¹p, należy odpo-
wiednio zmodyfikować jej kod. Jednak bÅ‚¹dy, które pojawiajÄ… si¹ w zwiÄ…zku ze zmianÄ…
nazwy pola, są stosunkowo łatwe do wykrycia. Nazwa pola, które nie może być znale-
zione, pojawia si¹ w komunikacie wyjÄ…tku.
Zastosowanie odwołań do pól stałych
Odwołania do pól stałych oferują zalety zarówno właściwości Fields, jak i metody
. Podobnie jak właściwość Fields, odwołania do pól stałych są odwoła-
niami bezpośrednimi do pola, a zatem nie wymagają przeszukiwania, jak ma to miejsce
260 Część II f& Aplikacje bazodanowe
w przypadku metody . Ponadto ponieważ nazwy pól stałych oparte są na
nazwach powiązanych pól, kod wykorzystujący odwołania do pól stałych jest zwykle
czytelniejszy i Å‚atwiejszy do zanalizowania.
Jednak w przeciwieństwie do właściwości Fields i metody , które mogą
być używane zarówno przez domyślne pola, jak i pola stałe, w przypadku odwołań do pól
stałych wymagane jest ich określenie. Jak wspomniano wcześniej, zmiana w strukturze
powiÄ…zanej tabeli lub kolejnoÅ›ci pól w poleceniu czasem wiąże si¹ z usuni¹ciem
i ponownym okreÅ›leniem pól staÅ‚ych, wÅ‚Ä…czajÄ…c w to ponownÄ… konfiguracj¹ wÅ‚aÅ›ciwoÅ›ci
oraz procedur obsługi zdarzeń. W przypadku małej bazy danych nie jest to kłopotliwe,
ale przy znacznej ilości tabel może być nie do zaakceptowania.
Zastosowanie zmiennych pola
Można wyróżnić jeszcze jednÄ… technik¹ dost¹pu do pól, która do tej pory nie zostaÅ‚a
omówiona. Jest ona efektem połączenia dwóch z trzech technik wymienionych wcześniej.
Zawiera dwa składniki. Pierwszy z nich to deklaracja jednej zmiennej dla każdego pola,
do którego aplikacja b¹dzie żądaÅ‚a dost¹pu. Drugi wiąże si¹ z przypisaniem tej zmiennej
odwoÅ‚ania do pola zwróconego przez wÅ‚aÅ›ciwość Fields lub metod¹ .
Mimo, że taki sposób dost¹pu do pola wymaga na poczÄ…tku napisania znacznej iloÅ›ci
kodu, to w zamian pózniej uzyskamy dwie istotne korzyści. Pierwsza z nich to umiesz-
czenie wszystkich wartości przypisanych do zmiennych pól w jednym miejscu, takim
jak procedura obsługi zdarzenia OnCreate modułu danych. Jeśli kolejne zmiany doko-
nywane sÄ… w powiÄ…zanej strukturze jednej lub kilku tabel, wtedy wystarczy tylko zmo-
dyfikować przypisania zmiennych. Wszystkie pozostałe odwołania do pól pozostaną
niezmienione.
Druga korzyść polega na tym, że do bezpoÅ›redniego odwoÅ‚ywania si¹ do każdego pola
można używać zrozumiałych nazw zmiennych. Ponieważ zmienne bezpośrednio odwo-
Å‚ujÄ… si¹ do powiÄ…zanych pól, wykonywany kod umożliwia równie szybki dost¹p, jak ma
to miejsce w przypadku właściwości Fields lub odwołań do pól stałych.
Przyjrzyjmy si¹ komponentowi SQLClientDataSet, który znajduje si¹ na module danych
projektu stosowanego we wcześniejszych przykładach tego rozdziału. Ten moduł danych
może zastosować technik¹ opisanÄ… powyżej przez użycie dwóch segmentów kodu.
Pierwszy z nich to deklaracja dodawana do sekcji modułu danych:
Rozdział 8. f& Klasa TField 261
Drugi segment zawiera poniższe przypisania zmiennych, które dodawane są do pro-
cedury obsługi zdarzenia OnCreate modułu danych:
W celu uzyskania odwołań do pól procedura obsługi zdarzenia OnCreate mógłby również
wykorzystać właściwość Fields. Jednak metoda jest bardziej czytelna i ła-
twiejsza w obsłudze. Ponadto ponieważ takie przypisanie i przeszukiwanie powiązanego
pola wyst¹puje tylko raz dla każdego pola, zatem ogólny wpÅ‚yw metody
na spadek wydajności jest niezauważalny.
Odtąd wszystkie odwołania do pól zestawu danych mogą być wykonywane przy użyciu
zmiennych pola. Na przykład segment kodu dokonujący konwersji na duże litery z po-
przedniej cz¹Å›ci b¹dzie wyglÄ…dać nast¹pujÄ…co:
262 Część II f& Aplikacje bazodanowe [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • gabrolek.opx.pl