X


[ Pobierz całość w formacie PDF ]
.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.Podczas pracy programu pole WORDER_NUMBER jest wypełnionewartościami, więc zapytanie będzie dodawało jedynie wartości rekordówodpowiadających aktualnemu numerowi zestawienia prac. 370 Część IIPracę kończymy zamykając okna SQL Statement oraz konstruktora zapytań.Nowezapytanie zostanie zachowane automatycznie, jako właściwość SQL komponentuquWorkDuration.Wykorzystanie zapytania w formularzuAby móc wykorzystać zapytanie w formularzu, należy:1.Kliknąć podwójnie właściwość Params nowego komponentu quWorkDurationi określić typ danych parametru WORK_ORDER_NUMBER na Integer;wciskając klawisz OK zachować wprowadzone zmiany.2.Podwójnie kliknąć na komponencie Query, aby otworzyć edytor pól.3.Prawym klawiszem myszy kliknąć na edytorze i wybrać opcję Add fields.4.Wybrać z listy pozycję WorkDuration, kliknąć OK i zamknąć edytor pól.Umożliwi to łatwe odwoływanie się do kolumny poprzez jej nazwę.Zdarzenie AfterPostPo skompletowaniu zapytania jesteśmy gotowi do połączenia go z tabeląWODETAIL.W tym celu klikamy komponent taWODETAIL, a następnie stronęEvent inspektora obiektów.Podwójnie klikamy na zdarzeniu AfterPosti dodajemy następujący kod:with quWorkDuration do beginif Active then Close;ParamByName( WORDER_NUMBER ).AsInteger:=taWODETAILWORDER_NUMBER.�' AsInteger;Open;taWORDEREndDate.AsFloat:=taWORDERStartDate.AsFloat+quWorkDurationWorkDuration.AsFloat;end;Arytmetyka dat w DelphiNastępny fragment programu uruchamia zapytanie, po czym dodaje jego rezultatdo kolumny StartDate w tabeli WORDER, określając datę zakończenia prac.Takiepodejście oparte jest na dwóch podstawowych przesłankach.Pierwsza wynika zesposobu przechowywania daty i czasu (w postaci liczby zmiennoprzecinkowej).Jej część całkowita określa liczbę dni od 31 grudnia 1899 r., zaś część ułamkowaczas obliczony jako ułamek doby.Umożliwia to dodanie dni do daty przezzsumowanie całkowitych części liczb.Drugie założenie to przyjęcie, że edycjabieżącego rekordu tabeli WORDER wskazuje go jako właściwy zbiór danych.Innymi słowy, zaznaczenie zestawienia prac w formularzu tabelarycznym wybieraautomatycznie właściwe elementy tabeli WORDER.Odpowiedni rekord pozostaje Formularze 371bieżącym w tabeli, dopóki nie przeniesiemy kursora w inne miejsce.Oznacza to,że nie trzeba przeszukiwać tabeli WORDER celem uaktualnienia właściwegorekordu.Zdarzenie AfterDeleteZdarzenie Post nie jest jedynym, które powinno powodować ponowne przeliczenieczasu trwania prac.Program powinien zareagować tak samo również na usunięcierekordu z tabeli WODETAIL.W tym celu, w inspektorze obiektów należyzaznaczyć zdarzenie AfterDelete, kliknąć na liście rozwijalnej i wybraćpozycję taWODETAILAfterPost.W ten sposób oba zdarzenia będąpowodowały jednakowe skutki.Testowanie rozszerzeńUruchamiamy aplikację i wprowadzamy oraz usuwamy kilka pozycji zakresurobót.Podczas edycji data zakończenia powinna się odpowiednio zmieniać.Formularz jest automatycznie aktualizowany podczas zmiany kolumny EndDatew formularzu modułu danych fmRENTMAN.Jednocześnie odświeżanie terminuzakończenia pracy po każdej zmianie w szczegółowym wykazie prac nie wykluczawpisania przez użytkownika (w miejsce skalkulowanego terminu) własnej datyukończenia zadania [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • wpserwis.htw.pl