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.