1 PSZ wykład 4 > Integracja aplikacji z bazami danych cz. IIProgramowanie w Środowiskach Zintegrowanych > Integracja aplikacji z bazami danych cz. II
2 Na poprzednim wykładzieKoncepcja mechanizmów integracji Architektura środowiska Zarys hierarchii komponentów Typowy schemat komunikacji aplikacji z bazą danych Komponenty abstrakcyjne i niezależne cz. I TCustomConnection TDataSet
3 Komponenty abstrakcyjne i niezależne cz. IIKomponent abstrakcyjny TField Komponent niezależny TDataSource Tworzenie struktury tabel powiązanych
4 TField Odpowiedzialność – umożliwia łatwy dostęp do danych zapisanych w polu rekordu TField – klasa nie wizualna (nie stanowi elementu GUI) Jest klasą składową klasy TDataSet Podstawowe usługi odczytywanie i ustawianie wartości pola formatowanie i konwersja danych walidacja
5 Komponenty bardziej wyspecjalizowane obsługujące konkretne typy pól – pochodne klasy TField
6 Pobieranie, zapisywanie i konwersja danychPobranie danych i zapisywanie przykłady: Numer = PrzekładowePole1->Value; Numer = PrzykladowePole1->AsInteger; Nazwa = PrzykladowePole2->AsString; PrzykladowePole2->AsString = „Jakiś tekst”; Właściwości AsSomething AsBoolean AsCurrency AsDateTime AsFloat AsInteger AsSQLTimeStamp AsString AsVariant
7 Formatowanie i walidacjaWłaściwości EditMask __property TEditMask EditMask = {read=FEditMask, write=SetEditMask}; DisplayWidth __property int DisplayWidth = {read=GetDisplayWidth, write=SetDisplayWidth, stored=IsDisplayWidthStored, nodefault}; ValidChars typedef Set
8 Tworzenie pól w klasie TDataSetKomponent TDataSet posiada własny edytor służący do zarządzania polami Tworzenie pól nie jest obowiązkowe, gdyż w przypadku ich braku pola tworzone są automatycznie Zalecana praktyka – jawne tworzenie pól
9 Podstawowe rodzaje pólPola danych (data fields) Pola obliczane (calculated fields) Pola słownikowe (lookup fields)
10 Pola wyliczane Pole wyliczane – wartość pola nie jest odczytywana z bazy danych, ale obliczana w momencie odczytywania wiersza Wartość pola ustala się w ramach obsługi zdarzenia OnCalcFields __property TDataSetNotifyEvent OnCalcFields = {read=FOnCalcFields, write=FOnCalcFields}; Zdarzenie pojawia się w trzech przypadkach Zbiór zostaje otwarty Zbiór zostaje wprowadzony w stan edycji (State = dsEdit) Rekord jest pobierany z bazy danych
11 Pola słownikowe Pola słownikowe – przyjmują wartość ustaloną na podstawie innego zbioru danych Pole powiązane jest z innym zbiorem poprzez pola klucze (KeyFields) Na podstawie wartości pola klucza, z innego zbioru pobierana jest wartość innego pola Pola słownikowe rozpoznawane są przez elementy interfejsu obsługujące edycję bazy danych >posługiwanie się polami – przykład MicroCRM – regiony.
12 TDataSource Odpowiedzialność – interfejs pomiędzy zbiorami danych a elementami interfejsu przeznaczonymi do ich edycji Dane ze zbioru pobiera się za pośrednictwem źródła danych Za pośrednictwem źródła dane są również zapisywane do zbioru Zbiór (TDataSet) Źródło (TDataSource)
13 TDataSource - właściwościAutoEdit __property bool AutoEdit = {read=FAutoEdit, write=FAutoEdit, default=1}; Czy elementy interfejsu mogą samodzielnie wprowadzić zbiór danych w stan edycji lub wstawiania. DataSet __property TDataSet* DataSet = {read=FDataSet, write=SetDataSet}; Zarządzany zbiór danych (zbiór, z którego źródło pobiera dane) Enabled __property bool Enabled = {read=FEnabled, write=SetEnabled, default=1}; Czy źródło jest włączone State __property TDataSetState State = {read=FState, nodefault}; Stan zarządzanego zbioru danych
14 Tworzenie struktur hierarchicznychZ komponentów typu TTable lun TCustomDataSet można utworzyć strukturę hierarchiczną Najczęściej struktura odzwierciedla powiązania typu master-detail O powiązaniu w strukturę decydują dwie właściwości klasy TTable i TCustomDataSet __property Db::TDataSource* MasterSource = {read=GetDataSource, write=SetDataSource}; __property AnsiString MasterFields = {read=GetMasterFields, write=SetMasterFields}; >posługiwanie się strukturami hierarchicznymi – przykład: MicroCRM; Kontakty z klientem.
15 Elementy interfejsu zintegrowane ze zbiorami danychDostępne komponenty Przykład
16 Komponenty edycyjne zintegrowane ze zbiorami danychPrzeznaczenie – szybka implementacja zadań dotyczących edycji bazy danych Elementy edytujące pola Elementy edytujące wiersze Elementy specjalne >posługiwanie się strukturami hierarchicznymi – przykład: Zarządzanie zwrotami gwarancyjnymi
17 Podsumowanie Komponenty abstrakcyjne i niezależne cz. IIKomponent abstrakcyjny TField Komponent niezależny TDataSource Tworzenie struktury tabel powiązanych Komponenty edycyjne