[ Pobierz całość w formacie PDF ]
.Kolejne udoskonaleniaMożna zaprojektować jeszcze jedno udoskonalenie, mające na celu zwiększenieprzydatności formularza.Ponieważ każda wartość pola WORK_TYPE_CODEniesie informację o czasie trwania pracy określonej w odpowiednim rekordzietabeli WORKTYPE, może być korzystne wyliczanie przez aplikacjęprzewidywanego czasu wykonywania zadania i regulowanie czasem zakończeniaprac objętych wykazem.Najprościej osiągnąć to dzięki zapytaniom SQL.Budowanie zapytań przy pomocy konstruktora zapytań (Query Builder)UWAGANie wszystkie wersje Delphi zawierają wizualnego konstruktora zapytań (VisualQuery Builder).Jeśli posiadana przez czytelnika wersja produktu nie jestwyposażona w to narzędzie, można opuścić fragment Kolejne udoskonaleniaPracę z wizualnym konstruktorem zapytań rozpoczniemy od następującychczynności:1.Zamknąć aplikację RENTMAN i powrócić do Delphi.2.W wizualnym projektancie formularzy uaktywnić moduł danych dmRENTMANi umieścić w nim komponent Query.368 Część II3.Zmienić nazwę elementu Query na quWorkDuration i ustawić właściwośćDatabase na dbRENTMAN.4.Prawym klawiszem myszy kliknąć na komponencie Query i wybrać z menupozycję Query Builder.5.Jeśli wyświetli się okienko dialogowe z zapytaniem o wybór używanej bazydanych, to należy kliknąć dwukrotnie na zbiorze dbRENTMAN.6.Kolejne okienko dialogowe służy do wyboru interesujących nas tabel.Dwukrotnie kliknąć na tabeli WODETAIL, po czym to samo zrobić z tabeląWORKTYPE.Po zamknięciu okna Add Table ukaże się kolejne okno,zawierające obie tabele obok siebie, tak jak na rysunku 11.12.Rysunek 11.12.Główny ekrankonstruktorazapytań (Delphi sQuery Builder).7.Przeciągnąć kolumnę WORK_TYPE_KODE tabeli WODETAIL nad pole o tejsamej nazwie w zbiorze WORKTYPE, co powinno spowodować połączenielinią obu pól.Oznacza to ustanowienie połączenia między tabelami,wykorzystującego wspólną pozycję WORK_TYPE_KODE.Dzięki temuzwiązkowi będziemy ściągać z tabel interesujące nas informacje.8.Dwukrotnie kliknąć kolumnę WORDER_NUMBER tabeli WODETAIL, abydodać ją do zapytania.Jej nazwa powinna pojawić się w dolnej części oknadialogowego.9.Przewinąć listę w dół i w polu kryteria wpisać = :WORDER_NUMBER, abyokreślić otrzymane informacje.10.Prawym klawiszem myszy kliknąć okno Option pod rubrykąWORDER_NUMBER i z podręcznego menu wybrać pozycję Group.Dziękitemu pola będą grupowane zgodnie z zawartością kolumnyWORDER_NUMBER.11.Na pasku narzędzi kliknąć przycisk Expression Builder (ikona a+b ).Przypomocy otwartego w ten sposób okna dialogowego Expression, zdefiniowaćwyrażenie służące do sumowania całkowitego czasu trwania prac z wykazu:Formularze 36912.Wpisać WorkDuration w linii Expression Name, następnie - z listyrozwijalnej - wybrać nazwę tabeli WORKTYPE.13.Na liście Functions podwójnie kliknąć funkcję sum (), a następnie równieżpodwójnie na pozycji TaskDuration listy Column.14.Kliknąć kolejno przyciski Save i Close, aby powrócić do głównego oknadialogowego konstruktora zapytań.(por.Rysunek 11.13).Rysunek 11.13.Pole oknadialogowegoExpressionz konstruktorazapytań Delphi.Aby zobaczyć rezultat pracy, należy kliknąć ikonę SQL (ikona w kształcieokularów na pasku narzędziowym).Wygenerowany przez konstruktora zapytańkod SQL będzie wyglądał mniej więcej tak:SELECT WODETAIL.WORDER_NUMBER ,(sum( WORKTYPE.TASKDURATION)) as WorkDurationFROM WODETAIL WODETAIL, WORKTYPE WORKTYPEWHERE (WODETAIL.WORK_TYPE_CODE=WORKTYPE.WORK_TYPE_CODE)AND(( WODETAIL.WORDER_number= :WORDER_number ))GROUP BYWODETAIL.WORDER_NUMBERPo uproszczeniu zapytanie może wyglądać następująco:SELECT SUM ( WORKTYPE.TASKDURATION) WorkDurationFROM WODETAIL, WORKTYPEwhere WODETAIL.WORK_TYPE_CODE=WORKTYPE.WORK_TYPE_CODEand WORDER_NUMBER= :WORDER_NUMBERZapytanie sumuje czas pracy, określony w wykazie prac w rozbiciu na zadaniaelementarne [ Pobierz całość w formacie PDF ]
zanotowane.pl doc.pisz.pl pdf.pisz.pl odbijak.htw.pl
.Kolejne udoskonaleniaMożna zaprojektować jeszcze jedno udoskonalenie, mające na celu zwiększenieprzydatności formularza.Ponieważ każda wartość pola WORK_TYPE_CODEniesie informację o czasie trwania pracy określonej w odpowiednim rekordzietabeli WORKTYPE, może być korzystne wyliczanie przez aplikacjęprzewidywanego czasu wykonywania zadania i regulowanie czasem zakończeniaprac objętych wykazem.Najprościej osiągnąć to dzięki zapytaniom SQL.Budowanie zapytań przy pomocy konstruktora zapytań (Query Builder)UWAGANie wszystkie wersje Delphi zawierają wizualnego konstruktora zapytań (VisualQuery Builder).Jeśli posiadana przez czytelnika wersja produktu nie jestwyposażona w to narzędzie, można opuścić fragment Kolejne udoskonaleniaPracę z wizualnym konstruktorem zapytań rozpoczniemy od następującychczynności:1.Zamknąć aplikację RENTMAN i powrócić do Delphi.2.W wizualnym projektancie formularzy uaktywnić moduł danych dmRENTMANi umieścić w nim komponent Query.368 Część II3.Zmienić nazwę elementu Query na quWorkDuration i ustawić właściwośćDatabase na dbRENTMAN.4.Prawym klawiszem myszy kliknąć na komponencie Query i wybrać z menupozycję Query Builder.5.Jeśli wyświetli się okienko dialogowe z zapytaniem o wybór używanej bazydanych, to należy kliknąć dwukrotnie na zbiorze dbRENTMAN.6.Kolejne okienko dialogowe służy do wyboru interesujących nas tabel.Dwukrotnie kliknąć na tabeli WODETAIL, po czym to samo zrobić z tabeląWORKTYPE.Po zamknięciu okna Add Table ukaże się kolejne okno,zawierające obie tabele obok siebie, tak jak na rysunku 11.12.Rysunek 11.12.Główny ekrankonstruktorazapytań (Delphi sQuery Builder).7.Przeciągnąć kolumnę WORK_TYPE_KODE tabeli WODETAIL nad pole o tejsamej nazwie w zbiorze WORKTYPE, co powinno spowodować połączenielinią obu pól.Oznacza to ustanowienie połączenia między tabelami,wykorzystującego wspólną pozycję WORK_TYPE_KODE.Dzięki temuzwiązkowi będziemy ściągać z tabel interesujące nas informacje.8.Dwukrotnie kliknąć kolumnę WORDER_NUMBER tabeli WODETAIL, abydodać ją do zapytania.Jej nazwa powinna pojawić się w dolnej części oknadialogowego.9.Przewinąć listę w dół i w polu kryteria wpisać = :WORDER_NUMBER, abyokreślić otrzymane informacje.10.Prawym klawiszem myszy kliknąć okno Option pod rubrykąWORDER_NUMBER i z podręcznego menu wybrać pozycję Group.Dziękitemu pola będą grupowane zgodnie z zawartością kolumnyWORDER_NUMBER.11.Na pasku narzędzi kliknąć przycisk Expression Builder (ikona a+b ).Przypomocy otwartego w ten sposób okna dialogowego Expression, zdefiniowaćwyrażenie służące do sumowania całkowitego czasu trwania prac z wykazu:Formularze 36912.Wpisać WorkDuration w linii Expression Name, następnie - z listyrozwijalnej - wybrać nazwę tabeli WORKTYPE.13.Na liście Functions podwójnie kliknąć funkcję sum (), a następnie równieżpodwójnie na pozycji TaskDuration listy Column.14.Kliknąć kolejno przyciski Save i Close, aby powrócić do głównego oknadialogowego konstruktora zapytań.(por.Rysunek 11.13).Rysunek 11.13.Pole oknadialogowegoExpressionz konstruktorazapytań Delphi.Aby zobaczyć rezultat pracy, należy kliknąć ikonę SQL (ikona w kształcieokularów na pasku narzędziowym).Wygenerowany przez konstruktora zapytańkod SQL będzie wyglądał mniej więcej tak:SELECT WODETAIL.WORDER_NUMBER ,(sum( WORKTYPE.TASKDURATION)) as WorkDurationFROM WODETAIL WODETAIL, WORKTYPE WORKTYPEWHERE (WODETAIL.WORK_TYPE_CODE=WORKTYPE.WORK_TYPE_CODE)AND(( WODETAIL.WORDER_number= :WORDER_number ))GROUP BYWODETAIL.WORDER_NUMBERPo uproszczeniu zapytanie może wyglądać następująco:SELECT SUM ( WORKTYPE.TASKDURATION) WorkDurationFROM WODETAIL, WORKTYPEwhere WODETAIL.WORK_TYPE_CODE=WORKTYPE.WORK_TYPE_CODEand WORDER_NUMBER= :WORDER_NUMBERZapytanie sumuje czas pracy, określony w wykazie prac w rozbiciu na zadaniaelementarne [ Pobierz całość w formacie PDF ]