Laboratorium 15: Bazy Danych Tworzenie bazy danych i programowanie elementów nawigacyjnych aplikacji stworzonej przy pomocy technologii dbexpress dr inż. Marcin Witczak Instytut Sterowania i Systemów Informatycznych, Uniwersytet Zielonogórski 1. Tworzenie i integracja tabel danych 2. Uruchomić program IBConsole 3. Utworzyć tabelę zawierającą numery telefonów naszych znajomych i zapisać ją w katalogu Telefony pod nazwą Telefony 4. Tabela powinna zawierać następujące pola: ID: typu Integer. Pole kluczowe (PrimareKey) Imię: typu VarChar o długości 15 Nazwisko: typu VarChar o długości 15 NrTele: typu VarChar o długości 15 Adres: typu VarChar o długości 15 Miejscowość: typu VarChar o długości 15 5. Utworzyć nowy moduł danych, nazwać go DM_Dane i zapisać pod nazwą Dane 6. Na module danych umieścić komponent typu TSQLConnection i nadaj mu nazwę SC_Telefony. Utwórz nowe połączenie za pomocą edytora połączeń, które uruchamiamy w wyniku dwukrotnego kliknięcia komponentu TSQLConnection. Na pasku narzędziowym okna znajduje się pięć przycisków po kliknięciu pierwszego przycisku (+), ukarze się okno jako sterownik wybierz Interbase, a nazwę połączenia CN_Telefony. Dla klucza Database wprowadzić nazwę bazy danych wraz ze ścieżką dostępu. Przejdź teraz do właściwości obiektu, a następnie wprowadzić wartość CN_Terlefony dla właściwości ConnectionName. Następnie nawiązać
połączenie z bazą danych za pomocą właściwości Connected ustawiając jej wartość na True. Przy logowaniu hasło masterkey. 7. Na module danych umieść komponent z zakładki DataAccess TDataSource i nadaj mu nazwę DS_Telefony. Ustaw odpowiednią wartość dla właściwości DataSet. 8. Na module danych umieść komponent TSQLDataSet i nazwij ją SDS_Telefony. Wybierz odpowiednie wartości dla właściwości SQLConnection i DataSource. Dla właściwości CommandType wybierz wartość cttable a dla właściwości CommandText odpowiednią wartość i ustaw właściwość Active na True 9. Na module danych umieść komponent TSQLClientDataSet i nadaj mu nazwę CDS_Telefony. Właściwości ConnectionName ustaw na CN_Telefony, Dla właściwości CommandType wybierz wartość cttable a dla właściwości CommandText odpowiednią wartość i ustaw Active na True. 2. Programowanie elementów nawigacyjnych aplikacji W celu umożliwienia wprowadzenia, edycji, usuwania i poruszania się po zbiorze danych należy wykonać następujące czynności: 1. Przejść do modułu Telefony. 2. W procedurze obsługi zdarzenia polegającego na naciśnięciu przycisku Dodaj DM_Dane.CDS_Telefony.Insert; if F_Edycja.ShowModal=mrOK then DM_Dane.CDS_Telefony.Post DM_Dane.CDS_Telefony.Cancel; DM_Dane.CDS_Telefony.ApplyUpdates(0); 3. W procedurze obsługi zdarzenia polegającego na naciśnięciu przycisku Edycja DM_Dane.CDS_Telefony.RecordCound=0 then Begin ShowMessage( Brak danych do edycji! );
End; Exit; DM_Dane.CDS_Telefony.Edit; if F_Edycja.ShowModal=mrOK then DM_Dane.CDS_Telefony.Post DM_Dane.CDS_Telefony.Cancel; DM_Dane.CDS_Telefony.ApplyUpdates(0); 4. W procedurze obsługi zdarzenia polegającego na naciśnięciu przycisku Następny Else DM_Dane.CDS_Telefony.Next; 5. W procedurze obsługi zdarzenia polegającego na naciśnięciu przycisku Poprzedni Else DM_Dane.CDS_Telefony.Prior; 6. W procedurze obsługi zdarzenia polegającego na naciśnięciu przycisku Usuń Else DM_Dane.CDS_Telefony.Delete; 7. Przejdź do modułu Dane, wybierz komponent SDS_Telefony. Klikając dwukrotnie na pole wartości właściwości SortFieldNames pojawia się okienko dialogowe. Wybierz pola, po których będzie odbywało się sortowanie. W ciele procedury obsługi zdarzenia OnClick komponentu RadioGroup case RG_Sortuj.ItemIndex of 0: DM_Dane.SDS_Telefony.SortFieldNames:='ID'; 1: DM_Dane.SDS_Telefony.SortFieldNames:='Imie'; 2: DM_Dane.SDS_Telefony.SortFieldNames:='Nazwisko'; 3: DM_Dane.SDS_Telefony.SortFieldNames:='NrTele';
DBGrid1.Update; 8. Przejdź do modułu Dane, a następnie w części publicznej klasy TDM_Dane zadeklarować pola: Wartosc, Pole, Operator (typ danych: String). W ciele procedury obsługi zdarzenia OnFilterRecord komponentu CBS_Telefony if Operator='<' then Accept:=DataSet[Pole]<Wartosc if Operator='>' then Accept:=DataSet[Pole]>Wartosc if Operator='=' then Accept:=DataSet[Pole]=Wartosc if Operator='<=' then Accept:=DataSet[Pole]<=Wartosc if Operator='>=' then Accept:=DataSet[Pole]>=Wartosc; Następnie przejdź do modułu Telefony, a następnie w ciele procedury obsługi zdażenia polegającego na naciśnięciu przycisku filtr if F_Filtruj.ShowModal=mrCancel then Exit; if F_Filtruj.CB_Pole.ItemIndex=0 then begin DM_Dane.CDS_Telefony.Filtered:=False; Exit; DM_Dane.Pole:=F_Filtruj.CB_Pole.Text; DM_Dane.Operator:=F_Filtruj.CB_Operator.Text; DM_Dane.Wartosc:=F_Filtruj.E_Wartosc.Text; DM_Dane.CDS_Telefony.Filtered:=True; 9. Przejdź do modułu Szukaj, uzupełnij ciała procedur obsługi zdarzenia OnClick przycisków: Pierwszy, Ostatni, Następny, Poprzedni kodem przypisującym właściwość Tag formularza wartości z zakresu od 0 do 3 w zależności od wybranego przycisku. Np. dla przycisku Pierwszy powinno być Tag:=0;. Następnie przejdź do modułu telefony, a następnie w ciele procedury obsługi zdarzenia polegającego na naciśnięciu przycisku Szukaj rezultat:=false; if F_Szukaj.ShowModal=mrCancel then Exit; DM_Dane.Pole:=F_Szukaj.CB_Pole.Text; DM_Dane.Operator:=F_Szukaj.CB_Operator.Text;
DM_Dane.Wartosc:=F_Szukaj.E_Wartosc.Text; case F_Szukaj.Tag of 0: rezultat:=dm_dane.cds_telefony.findfirst; 1: rezultat:=dm_dane.cds_telefony.findlast; 2: rezultat:=dm_dane.cds_telefony.findprior; 3: rezultat:=dm_dane.cds_telefony.findnext; if not rezultat then ShowMessage('Brak szukanego rekordu'); Po wykonaniu powyższych instrukcji należy uruchomić program w celu sprawdzenia poprawności działania wszystkich formularzy.