Wyk.04

advertisement
wykład 4
PSZ
Programowanie w Środowiskach Zintegrowanych
> Integracja aplikacji z bazami danych cz. II
Programowanie w środowiskach zintegrowanych
Na poprzednim wykładzie
•
•
Koncepcja 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
Programowanie w środowiskach zintegrowanych
Komponenty abstrakcyjne i niezależne cz. II
•
Komponent abstrakcyjny TField
•
Komponent niezależny TDataSource
•
Tworzenie struktury tabel powiązanych
Programowanie w środowiskach zintegrowanych
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
TComponent
<<DBAccess>> +DataSetField
TDataSet
1
0..n
Programowanie w środowiskach zintegrowanych
<<DBAccess>>
TField
Komponenty bardziej wyspecjalizowane
obsługujące konkretne typy pól – pochodne klasy TField
Programowanie w środowiskach zintegrowanych
Pobieranie, zapisywanie i konwersja danych
•
•
Pobranie 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
Programowanie w środowiskach zintegrowanych
Formatowanie i walidacja
•
Wł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<char, 0, 255> TFieldChars;
• __property TFieldChars ValidChars = {read=FValidChars,
write=FValidChars};
•
Zdarzenia
–
OnValidate
• __property TFieldNotifyEvent OnValidate = {read=FOnValidate,
write=FOnValidate};
• Jeśli wygenerujemy wyjątek – walidacja negatywna
Programowanie w środowiskach zintegrowanych
Tworzenie pól w klasie TDataSet
•
Komponent 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
Programowanie w środowiskach zintegrowanych
Podstawowe rodzaje pól
•
Pola danych (data fields)
•
Pola obliczane (calculated fields)
•
Pola słownikowe (lookup fields)
Programowanie w środowiskach zintegrowanych
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
Programowanie w środowiskach zintegrowanych
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.
Programowanie w środowiskach zintegrowanych
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)
Programowanie w środowiskach zintegrowanych
TDataSource - właściwości
•
•
•
•
AutoEdit
–
__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
Programowanie w środowiskach zintegrowanych
Tworzenie struktur hierarchicznych
•
Z komponentów typu TTable lun TCustomDataSet można
utworzyć strukturę hierarchiczną
•
Najczęściej struktura odzwierciedla powiązania typu masterdetail
•
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.
Programowanie w środowiskach zintegrowanych
Elementy interfejsu zintegrowane ze zbiorami danych
•
Dostępne komponenty
•
Przykład
Programowanie w środowiskach zintegrowanych
Komponenty edycyjne zintegrowane ze zbiorami
danych
•
Przeznaczenie – 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
Programowanie w środowiskach zintegrowanych
Podsumowanie
•
•
Komponenty abstrakcyjne i niezależne cz. II
–
Komponent abstrakcyjny TField
–
Komponent niezależny TDataSource
–
Tworzenie struktury tabel powiązanych
Komponenty edycyjne
Programowanie w środowiskach zintegrowanych
Download