Podstrony
- Strona startowa
- Weber Ringo tom 4 Nas niewielu
- Tcp Ip Biblia Pl (Helion)
- Jablonski Miroslaw P Czas wodnika (3)
- Eden Cole Reluctant Mate 3
- Hobb Robin Wyprawa Skrytobojcy
- Herrmann Horst Jan Pawel II zlapany za slowo
- abc systemu winxp
- Jon Trace Tom Shaman 01 Spisek Wenecki
- Twain Mark Krolewicz i zebra
- Rushdie Salman Szatanskie wersety
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- patryk-enha.pev.pl
[ Pobierz całość w formacie PDF ]
.Ponieważ Borland Pascal zostaÅ‚ zaprojektowany jako jÄ™zyk programowaniaogólnego przeznaczenia, posiada wszystkie narzÄ™dzia, których można oczekiwaćod jÄ™zyka programowania trzeciej generacji takiego jak C, Basic czy Pascal.Object Pascal zaimplementowany w Delphi jest dostatecznie silnym narzÄ™dziem,by przy jego pomocy utworzyć raport na miarÄ™ każdych oczekiwaÅ„.Umieszczamy nowy komponent Query w module danych dmRENTMAN.Nadajemy mu nazwÄ™ quTaskList i wprowadzamy nastÄ™pujÄ…cy kod SQL:SELECT E.Name, P.Address, P.City, P.Addition, T.Description,¥' T.TaskDurationFROM EMPLOYEE E,WORDER W,PROPERTY P,WODETAIL D,WORKTYPE T,WHERE E.EMPLOYEE_NUMBER=W.EMPLOYEE_NUMBERand W.WORDER_NUMBER=D.WORDER_NUMBERand W.PROPERTY_NUMBER=P.PROPERTY_NUMBERand D.WORK_TYPE_CODE=T.WORK_TYPE_CODEand W.StartDate=: ListDateORDER BY E.Name, P.Address, P.City, P.Addition, T.DescriptionPowyższe zapytanie bÄ™dzie Å‚Ä…czyć tabele EMPLOYEE, WORDER, PROPERTY,WODETAIL i WORKTYPE - celem stworzenia poszerzonej listy zadaÅ„zwiÄ…zanych z okreÅ›lonÄ… datÄ….Zauważmy, że zapytanie definiuje pojedynczyparametr :ListDate, który musi być okreÅ›lony, aby procedura dziaÅ‚aÅ‚aprawidÅ‚owo.WykorzystujÄ…c edytor wÅ‚aÅ›ciwoÅ›ci do skonfigurowania wÅ‚asnoÅ›ciParams komponentu Query, ustawiamy typ parametru ListDate na Date.NastÄ™pnie okreÅ›lamy DatabaseName jako dbRENTMAN, dwukrotnie klikamykomponent i dodajemy wszystkie jego pola jako elementy TField.W tym momencie jesteÅ›my gotowi do napisania kodu sÅ‚użącego do utworzeniaraportu.Do projektanta formularzy wczytujemy główny formularz aplikacji -fmRSYSMAN0 i dwukrotnie klikamy na komponencie MainMenu, aby otworzyćnarzÄ™dzie do projektowania menu.Wybieramy opcjÄ™ Reports\Task Listi ustawiamy klawisz skrótu na F10.Dwukrotnie klikamy na opcji Task Listi zmieniamy obsÅ‚ugÄ™ zdarzenia OnClick zgodnie z listingiem 12.2.Listing 12.2.Procedura obsÅ‚ugi zdarzenia TaskList1Click.procedure TfmRSYSMAN0.TaskList1Click(Sender: TObject);varLastName : String;CurrentLine : Byte;procedure PrintColumnHeadings;beginWriteln(PrintFile,' '+Pad('Address',30),¥' Pad('City',20), Pad('Addition',20),Pad('Work',30),¥' Pad('Time (Days)',15));end;begininherited;If (MessageDlg('Print the Task List report?',¥' mtConfirmation,mbYesNoCancel,0)mrYes) then Exit;tryCursor:=crHourGlass;With dmRENTMAN, quTaskList do beginParamByName('ListDate').AsDate:=StrToDate( 04/05/97 );//Supply a valid date here based on your tests data// ParamByName('ListDate').AsDate:=Date;Open;tryBeginReport(poPortrait,Caption);tryWhile not eof do beginCurrentLine:=9;400 Część IIPrintHeader('RTSKLST0',Caption,'Employee Task¥' List',ParamByName('ListDate').AsString);PrintColumnHeadings;While (not eof) and (CurrentLinePageLength) dobeginWriteln(PrintFile);Writeln(PrintFile,'EMPLOYEE:'+quTaskListName.¥' AsString);Inc(CurrentLine,2);RepeatLastName:=quTaskListName.AsString;Writeln(PrintFile,' '+Pad(quTaskListAddress.AsString,30),Pad(quTaskListCity.AsString,20),Pad(quTaskListAddition.AsString,20),Pad(quTaskListDescription.AsString,30),¥' Pad(quTaskListTaskDuration.AsString,15));Next;Inc(CurrentLine);Until (eof) or (CurrentLine=PageLength) or(quTaskListName.AsStringLastName);end;end;finallyEndReport;end;finallyquTaskList.Close;end;end;finallyCursor:=crDefault;MessageDlg( Task List Report Finished ,mtInformation,¥' [mbOK],0);end;end;Elementy napisanego wyżej programu wymagajÄ… wielu innych funkcji i procedur.W module RSYSMAN0, bezpoÅ›rednio przed procedurÄ… TaskList1.Click,należy wpisać kod zawarty w listingu 12.3.Listing 12.3.Funkcje narzÄ™dziowe potrzebne do raportu TaskList.function Pad(InStr : String; TotalLen : Integer) : String;beginResult:=InStr;While (Length(Result)
[ Pobierz całość w formacie PDF ]