lab 4 - Instytut Sterowania i Systemów Informatycznych

Transkrypt

lab 4 - Instytut Sterowania i Systemów Informatycznych
Laboratorium 4: Sortowanie, filtracja i przeszukiwanie zbiorów
danych
dr inż. Marcin Witczak
Instytut Sterowania i Systemów Informatycznych, Uniwersytet Zielonogórski
W celu zrealizowania zadań rozważanych w niniejszej liście należy otworzyć projekt realizowany na Laboratorium 3.
1
Sortowanie
1. Uruchomić program DataBase Desktop.
2. Otworzyć tabel˛e Telefony.
3. Wybrać opcj˛e menu Table|Restructure.
4. Zdefiniować dodatkowe klucze (Secondary Indexes) dla pól:
• Imi˛e (nazwa klucza byImie).
• Nazwisko (nazwa klucza byNazwisko).
• NrTele (nazwa klucza byNrTele).
5. Zapisać zmiany w tabeli i przejść do modułu Telefony.
6. Zmniejszyć komponent DBG_Dane, tak aby uzyskać nad nim 1 cm wolnego miejsca.
7. Umieścić w tym miejscu komponent RadioGroup (nadać nazw˛e RG_Sortuj), a nast˛epnie:
• Właściwości Caption powyższego komponentu przypisać tekst „Sortuj według”.
• Właściwości Items (po wywołaniu edytora) przypisać, w kolejnych wierszach, napisy: „indeksu
głównego”, „imienia”, „nazwiska”, „numeru telefonu”.
• Właściwości Columns przypisać wartość 4.
• W ciele procedury obsługi zdarzenia OnClick powyższego komponentu wpisać nast˛epujacy
˛ kod:
case RG_Sortuj.ItemIndex of
0: DM_Dane.T_Dane.IndexName:=’’;
1: DM_Dane.T_Dane.IndexName:=’byImie’;
2: DM_Dane.T_Dane.IndexName:=’byNazwisko’;
3: DM_Dane.T_Dane.IndexName:=’byNrTele’;
end;
8. Uruchomić program i sprawdzić poprawność jego działania.
2
Filtrowanie
1. Utworzyć nowy formularz o szacie graficznej zgodnej z Rys. 1
2. Wykorzystać komponenty:
ComboBox :
Pierwszemu nadać nazw˛e CB_Pole. Właściwości Items (po wywołaniu edytora) przypisać, w kolejnych wierszach, napisy: „Wyłaczony”,
˛
„Imie”, „Nazwisko”, „NrTele”.
Drugiemu nadać nazw˛e CB_Operator. Właściwości Items (po wywołaniu edytora) przypisać, w
kolejnych wierszach, napisy: „<”, „>”, „=”, „<=”, „>=”.
1
Rysunek 1: Formularz filtracji danych.
Edit : nadać nazw˛e E_Wartosc.
BitBtn : ustawić odpowiednia˛ wartość właściwości Kind.
3. Przejść do modułu Dane, a nast˛epnie w cz˛eści publicznej klasy TDM_Dane zadeklarować pola: Wartosc,
Pole, Operator.
4. W ciele procedury obsługi zdarzenia OnFilterRecord komponentu T_Dane wprowadzić nast˛epujacy
˛
kod:
if Operator=’<’ then Accept:=DataSet[Pole]<Wartosc
else
if Operator=’>’ then Accept:=DataSet[Pole]>Wartosc
else
if Operator=’=’ then Accept:=DataSet[Pole]=Wartosc
else
if Operator=’<=’ then Accept:=DataSet[Pole]<=Wartosc
else
if Operator=’>=’ then Accept:=DataSet[Pole]>=Wartosc;
5. Przejść do modułu Telefony, a nast˛epnie w ciele procedury obsługi zdarzenia polegajacego
˛
na naciśni˛eciu
przycisku Filtr wprowadzić nast˛epujacy
˛ kod:
if F_Filtr.ShowModal=mrCancel then Exit;
if F_Filtr.CB_Pole.ItemIndex=0 then
begin
DM_Dane.T_Dane.Filtered:=False;
Exit;
end;
DM_Dane.Pole:=F_Filtr.CB_Pole.Text;
DM_Dane.Operator:=F_Filtr.CB_Operator.Text;
DM_Dane.Wartosc:=F_Filtr.E_Wartosc.Text;
DM_Dane.T_Dane.Filtered:=True;
6. Uruchomić program i sprawdzić poprawność jego działania.
3
Przeszukiwanie
1. Utworzyć nowy formularz o szacie graficznej zgodnej z Rys. 2
2. Wykorzystać komponenty:
ComboBox :
Pierwszemu nadać nazw˛e CB_Pole. Właściwości Items (po wywołaniu edytora) przypisać, w kolejnych wierszach, napisy: „Imie”, „Nazwisko”, „NrTele”.
Drugiemu nadać nazw˛e CB_Operator. Właściwości Items (po wywołaniu edytora) przypisać, w
kolejnych wierszach, napisy: „<”, „>”, „=”, „<=”, „>=”.
2
Rysunek 2: Formularz filtracji danych.
Edit : nadać nazw˛e E_Wartosc.
BitBtn : ustawić odpowiednia˛ wartość właściwości ModalResult, tzn. dla wszystkich przycisków właściwość ModalResult, oprócz przycisku Anuluj (którego właściwość Kind ma mieć wartość
mrCancel), powinna mieć wartość mrOK.
3. Uzupełnić ciała procedur obsługi zdarzenia OnClick przycisków Pierwszy, Ostatni, Nastêpny,
Poprzedni kodem przypisujacym
˛
właściwości Tag formularza wartości z zakresu od 0 do 3 w zależność
od wybranego przycisku. Na przykład dla przycisku Pierwszy powinno być:
Tag:=0;
Uwaga!!! Właściwość Tag nie ma żadnego konkretnego przeznaczenia. W rozważanym przypadku została
ona wykorzystana w celu jasnej identyfikacji, z punktu widzenia modułu Telefony, przycisku który został
naciśni˛ety na formularzu F_Szukaj.
4. Przejść do modułu Telefony, a nast˛epnie w ciele procedury obsługi zdarzenia polegajacego
˛
na naciśni˛eciu
przycisku Szukaj wprowadzić nast˛epujacy
˛ kod:
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.T_Dane.FindFirst;
1: rezultat:=DM_Dane.T_Dane.FindLast;
2: rezultat:=DM_Dane.T_Dane.FindPrior;
3: rezultat:=DM_Dane.T_Dane.FindNext;
end;
if not rezultat then ShowMessage(’Brak szukanego rekordu’);
i zadeklarować zmienna˛ lokalna˛ rezultat.
5. Uruchomić program i sprawdzić poprawność jego działania.
3