Baza danych

Transkrypt

Baza danych
Podstawy MIDAS
Właściwość PacketRecords
Możesz w pełni określić ile rekordów będzie pakowanych przez prowidera do pakietu
danych. Jeśli wybierzemy automatyczne doręczanie pakietów, musimy uzyć
własności PacketRecords zbioru danych klienta. Domyślnie ustawiona jest wartość 1, co oznacza, ze to właśnie prowider będzie pakował wszystkie dostępne rekordy do
pakietu danych. Jeśli ilość rekordów jest znacząca możesz otrzymasz szybsze
czasy odpowiedzi ustawiając właściwość PacketRecords na numer większy niż zero,
jak również ustawiając właściwość FetchOnDemand na True. Z tymi ustawieniami
zbiór danych klienta będzie pobierał rekordy tylko wtedy, kiedy ich potrzebuje, jak
również gdy nastąpiła zmiana od czasu gdy ostatni rekord został otrzymany od zbioru
danych klienta. Każdy pakiet, wysłany do zbioru danych klienta gdy PacketRecords
W tym przykładzie własność
PacketRecords jest ustawiona
na 5. Ponieważ tylko 5
rekordów jest widoczne
jednocześnie, 5 rekordów
zostało pobranych od
prowidera, gdy uruchomiono
aplikacje. Gdy ruszysz
suwakiem by zobaczyć inne
rekordy, zobaczysz, że rozmiar
suwaka się zmniejsza. Dzieje
się to dlatego, ponieważ więcej
danych zostaje przesłanych do
zbioru danych klienta od
prowidera.
ma dodatnią wartość, będzie zawierał liczbę rekordów określoną w tej właściwości.
Prowider będzie czekał z wysłaniem następnego rekordu, wtedy zbiór danych klienta
ustawi flagę, by zaznaczyć, że nie wszystkie rekordy zostały pobrane. Jeśli trzeba
pobrać więcej rekordów zbiór danych wysyła informacje do prowider, by pobrać
następny pakiet rekordów dopóki wszystkie rekordy zostaną przekazane do cache’u
klienta.
Niekiedy nie potrzebujemy żadnych dodatkowych danych. Na przykład możesz
chcieć po prostu dodać 10 lub więcej rekordów do bazy. W tym przypadku ustawiasz
własność PacketRecords na 0. Kiedy ta własność jest równa 0 i zbiór danych jest
aktywny, prowider da do pakietu danych tylko wartość metadata. Metadata zawiera
zarówno definicje pól tabeli jak również zarysy danych. Wtedy możesz wstawić
rekordy do pustego zbioru danych i zatwierdzić zmiany.
Właściwość UpdateStatus
Jest możliwośc sprawdzienie czy obecny rekord z zbioru danych clienta jest
zmodyfikowany czy nie. Właściwość UpdateStatus to umożliwia. Zaznacz komponent
DBGrid1 z głównej formy z naszej aplikacji i napisz obsługę zdarzenia
OnDrawColumnCell jak opisano poniżej. (Dodaj również unit Db w klauzuli uses
głównej formy by mieć zdefiniowana flagę usUnmodified)
Jak tylko zmiany są zatwierdzone kolumna w siatce DBGrid1 wyświetli zmienione
rekordy na pogrubione. Zmienimy też wygląd przycisków „Apply” i „Cance.
Gdy wciśniemy przycisk „Apply” modyfikacje zostają wysłane do bazy, ale od strony
klienta będzie to wyglądało jakby te modyfikacje ciągle były w cache’u. By
wyeliminować to zmodyfikujemy kod metody Action1Execute o 2 dodatkowe linie.
Gdy dodamy ten kod wszystko będzie działać jak powinno.
Sortowanie rekordów
Zbiór danych klienta nic nie wie o skąd są dane, które przechowuje w cache’u.
Dlatego też naturalnym jest by miał wbudowany mechanizm do sortowania danych.
Można zdefiniować wg. Czego ma się odbywać sortowanie zarówno podczas
projektownia jak i działania aplikacji. Najprościej to osiągać modyfikując własność
IndexFieldNames. Kolejne nazwy pól oddzielamy średnikami. Zbiór danych klienta
będzie zawierał informacje posortowane rosnąco wg. Kryteriów określonych przez
użykowika. Dodajmy obsługę zdarzenia OnTitleClick dla siatki DbGrid1.
Kliknięcie na tytule kolumny odpali to zdarzenie i dane zostaną ustawione wg.
Wartości w wybranej kolumnie.
Powyżej przedstawione dane posortowane wg. DEPARTMENT po kliknięciu na jego
nazwę.
Metoda UndoLastChange i właściwość SavePoint
Już wiemy jak zbiór danych klienta zapamiętuje wszyskie modyfikacje danych. Ma on
również opcje wielokrotnego wycofywania wprowadzanych danych. By wycofać
wszystkie zmiany, które zostały wprowadzone do danych, trzeba raz wywołać
CancelUpdates, można też określić ilość operacji do wycofania, zaczynając od
końca.
Dodajmy możliwość wycofania ostatniej modyfikacji do naszej aplikacji. Wybierz
DataModule2 i dwukrotnie kliknij na komponent ActionList. Dodaj nowa akcje Action3
i ustaw obsługa zdażenia OnUpdate na Action1Update. Dadajmy Jeszcze kod
realizujący funkcje cofnięcia. Kliknij podwójnie na Action1 i wpisz kod zdarzenia
OnExecute.
Metoda UndoLastChange ma tylko jeden parametr: FollowChange, gdy jest
ustawiony na True, informuje zbiór danych klienta, żeby przesunąć wskaźnik rekordu
do kolumny, która została ostatnio przywrócona.
Ustaw właściwość Caption Action1 na ‘Undo Last Change’. Idź do Form1 i upuść
Komponent TpopupMenu na niej. Kliknij podwójnie na komponencie PopupMenu i
wybierz pierszą opcje w Menu Designer. Ustaw właściwość Action na
DataModule2.Action 3. Kliknij DbGrid1 i ustaw własność PopupMenu na
PopupMenu1. Uruchom aplikację. Powinna wyglądać podobnie do tej przedstawionej
na rysunku poniżej.