Fastreport ca mijloc de raportare corporativă - articol din blogul lui Michael Floynov

Implementarea unei baze de date și a unui program de lucru cu aceasta este doar o jumătate din poveste. Este foarte rar când datele trebuie pur și simplu stocate undeva. În majoritatea cazurilor, este necesar un instrument pentru a permite utilizatorilor să vizualizeze sau chiar să creeze propriile rapoarte și să le imprime.







Pentru țara noastră, opțiunea ideală, în opinia noastră, este raportul rapid al dezvoltării rusești. Când vedeți evoluții precum FastReport, vă dați seama că țara noastră se află într-adevăr în creștere în domeniul IT și se poate ridica și mai mult, lăsând nu numai India în urmă. Mai presus de toate, sunt fericit pentru faptul că locul de naștere al acestui pachet este orașul meu preferat Rostov-on-Don în care m-am născut și am crescut.

De ce am ales FastReport? Da, este suficient de puternic, convenabil, simplu și în capacitățile sale poate concura cu dezvoltarea unor companii mai eminente. Cu toate acestea, FastReport are un avantaj foarte serios pe piata noastra - rusa buna in interfata si simplitate pentru utilizatorul final. Suportul în limba rusă este, de asemenea, un mare plus. Generarea rapoartelor este jumătate din probleme, dar nu veți lucra cu acesta, dar utilizatorul final, care în limba engleză ar putea să nu fie puternic. În astfel de cazuri, interfața rusă este un mare plus.

Motorul FastReport acceptă multe limbi. Nu am cea mai recentă versiune, dar deja include resurse pentru 24 de limbi. Deci, dacă dezvoltați programe pentru alte țări, atunci nu vor exista probleme cu localizarea.

Un alt plus major este documentația bună, disponibilă în două versiuni - pentru dezvoltatori și programatori. Are aproape orice, pentru un început bun și cele mai simple rapoarte pe care le puteți crea în cinci minute de cunoaștere a sistemului. Pachetul complet de documentație durează 6 megabytes și vine în trei formate populare - chm, pdf și hlp. Rămâne doar să alegi unul care este mai convenabil pentru tine și poți începe să studiezi. Formatele chm și hlp sunt convenabile pentru ajutor rapid, iar PDF-ul este convenabil pentru imprimare.

Procesul de dating simplifică și un număr mare de exemple. Aici găsiți soluții gata pentru sarcinile tipice pe care le puteți întâlni în viața reală și pur și simplu copiați deja codul sau formularele deja pregătite pentru aplicația dvs.

Crearea unui raport în FastReport

1. Aceasta este o utilizare ineficientă a memoriei, deoarece sunt create mai multe instanțe ale componentelor de raportare. Dacă nu ați transferat întregul cod FastReport în biblioteci dinamice (care este o pierdere de timp), memoria se va scurge destul de repede.

2. Când raportarea formularelor este împrăștiată în diferite module de proiect, este mai dificil să lucrați cu acestea, mai ales dacă lucrați într-o echipă și utilizați un sistem de dezvoltare a codului colaborativ, de exemplu, Visual SourceSafe.

Aș recomanda crearea unui modul de date separat (DataModule) și plasarea în el a unei singure instanțe a componentei TfrxReport. Acum, când creați rapoarte, salvați-le în fișiere. FastReport vă permite să salvați rapoarte numai în formatul propriu, în fișierele cu extensia fr3, dar acest lucru este suficient. Fișierul conține toate informațiile necesare, deci, după ce le-ați descărcat, totul va funcționa.

Acum, pentru fiecare raport, trebuie să creați o procedură separată care va arăta astfel:

După aceea, din orice formă este suficient să numiți această metodă, pe care ar trebui să o creați în avans în modulul de date cu componentele raportului. Astfel, veți economisi nu numai memoria, ci și timpul și nervii, în cazul în care același raport trebuie apelat din diferite locuri din program (din diferite forme).

Cine ar trebui să creeze rapoarte

Faptul că raportarea este stocată într-un singur loc oferă un alt avantaj - diviziunea muncii. Mijloacele moderne de construire a rapoartelor sunt destul de complexe și au capacități bogate, inclusiv limbi de programare construite. Pachetul FastReport nu este o excepție și poate dura mult timp pentru un studiu aprofundat. Am lucrat cu FastReport pentru o lungă perioadă de timp, dar nu pot spune că știu perfect.

Când o întreagă echipă de dezvoltatori lucrează la proiect, nu aveți nevoie de toți programatorii să știe cum să creeze rapoarte. Este suficient ca o persoană să fie responsabilă pentru modulul dvs. de tipărire și să creeze toate rapoartele. Atunci când o persoană este special instruită și lucrează în mod constant cu același program, va face treaba mai repede și mai bine decât cineva care lucrează cu raportarea din când în când.

Schimbarea imprimantei

Uneori este nevoie să transmiteți documente simultan mai multor imprimante. De exemplu, trebuie să tipăriți o factură sau o foaie de parcurs în birou în timp ce imprimați un conosament în depozit în același timp, astfel încât depozitarul să înceapă pregătirea bunurilor. Pentru a vă asigura că utilizatorul nu trebuie să-și aleagă mai întâi imprimanta și apoi imprimanta de rețea din depozit, puteți implementa o schimbare de software.







În FastReport, imprimarea are loc pe imprimanta implicită, cu excepția cazului în care specificați altul. Schimbarea programului de imprimantă nu este destul de elegantă și pentru a înțelege această problemă, a trebuit să mă uit la codul sursă. Se pare că numele imprimantei poate fi specificat în două moduri:

Dar acest lucru nu este suficient. După setarea numelui, trebuie să apelați și metoda SelectPrinter. Din moment ce schimb numele, SelectPrinter ar trebui să fie apelat automat. Dacă într-adevăr trebuie să specificați numele imprimantei, dar să nu-l instalați (deși nu-mi pot imagina), puteți adăuga o altă metodă SelectPrinter, care va primi numele imprimantei ca parametru și o salva imediat în PrintOptions și o va instala.

Fastreport ca mijloc de raportare corporativă - articol din blogul lui Michael Floynov

Aceasta nu este o reproșare, ci o dorință adresată dezvoltatorilor. Sper că vor citi acest articol și vor îmbunătăți schimbarea imprimantelor.

Dacă te uiți la codul sursă al procedurii SelectPrinter, poți observa că trece prin toate imprimantele instalate și dacă găsește lista dorită din listă, o face curentă. Există două dezavantaje:

1. Dacă imprimanta nu este instalată pe acest computer, nu va fi selectată;

2. Select Printer este o procedură și nu întoarce un rezultat, ceea ce înseamnă că nu știm dacă imprimanta solicitată a fost selectată ca una curentă sau nu.

Pentru a rezolva acest dezavantaj, aș recomanda să faceți următoarele: Înainte de a apela numele imprimantei, apelați metoda Clear (frxRepInv.PrintOptions.Clear). Această metodă resetează setările de imprimare și face totul implicit. După instalarea imprimantei, trebuie să verificați numele imprimantei selectate pentru rapoarte și să găsiți indexul curent ca: frxPrinters.PrinterIndex.

Imprimați conținut

Recent, la slujba mea principală, trebuia să fac imprimarea listei de prețuri. Aceasta nu este o sarcină atât de dificilă, dar problema a fost aceea de a crea conținut. Acest subiect este, din anumite motive, descris insuficient în documentație, așa că am decis să arăt cum am rezolvat această problemă, mai ales că și dumneavoastră vă puteți confrunta.

Fastreport ca mijloc de raportare corporativă - articol din blogul lui Michael Floynov

Astfel, prima pagină va fi cea mai simplă și va consta doar din trei coloane - articolul, numele grupului și pagina. Pe a doua pagină a raportului puteți adăuga un antet care să conțină logo-ul companiei și contactele și să creeze și un tabel în care să fie afișat produsul în sine.

Fastreport ca mijloc de raportare corporativă - articol din blogul lui Michael Floynov

Acum mergeți la marcajul cu formularul de conținut. În cazul meu, sunt trei coloane aici - articolul, numele grupului și pagina. Numele grupului va fi preluat automat pentru setul de date dat, dar pagina este ușor de definit. Selectați componenta Memo, care ar trebui să conțină numărul paginii (am Memo26) și să creez un handler de evenimente OnBeforePrint pentru aceasta. Aici scriem următorul cod:

Pentru a determina numărul paginii, se numește metoda GetAnchorPage, care trebuie să fie trecută cu numele ancorei. Numele ancorei noastre coincid cu numele grupurilor de mărfuri, astfel încât parametrul "NAME" este parametrul, unde am numele grupului.

Dar asta nu e tot. Când motorul FastRoport generează un raport, acesta rulează toate datele o dată și stabilește ancorele. În același timp, în timpul formării conținutului, nu vor exista ancore, astfel încât nu veți vedea numere de pagini în raport. Pentru ca totul să fie afișat corect, trebuie să activați parola dublă. În timpul celei de-a doua treceri, toate ancorele vor fi deja plasate, iar numerele paginilor vor apărea în conținut. Deci, alegeți meniul Report \ Options și setați o bifare în Double Pass.

Fastreport ca mijloc de raportare corporativă - articol din blogul lui Michael Floynov

optimizare

Este destul de dificil să optimizați ceva în Rapid însuși. Viteza de funcționare depinde în principal de viteza de achiziție a datelor. Dacă setul de date returnează rapid datele necesare, atunci raportul va apărea instantaneu. Dacă interogarea SQL care returnează datele nu este optimizată, atunci raportul poate fi format foarte, foarte lung. Prin urmare, primul lucru care trebuie început este optimizarea interogărilor SQL. Dar optimizarea cererilor depinde de aceeași bază de date pe care o utilizați.

Uneori, un raport trebuie să trimită unul sau doi parametri care depășesc setul de date principal de ieșire. Să presupunem că creați un raport privind salariile și trebuie să includeți angajații unui anumit departament. Setul principal de date este o listă de angajați, dar va fi convenabil dacă numele unității este afișat în antetul raportului. Din cauza unui singur nume, crearea unui set de date (DataSet) este ineficientă. În FastReport există un mecanism foarte convenabil - variabile. Folosește-o mai bine. Acest subiect este foarte bine descris în sistemul de ajutor.

Viteza raportului este influențată de scripturile pe care le scrieți în raport. Nu supraîncărcați raportarea codului suplimentar, deoarece analizează în timpul executării programului. Este mai bine să efectuați toate calculele necesare în Delphi și să transferați datele finalizate prin variabile sau seturi de date.

Sper că sfaturile descrise în acest articol vă vor ajuta în munca dvs. și datorită acestor recomandări, munca dvs. va deveni mai productivă și mai convenabilă. Trimiteți-ne dacă aveți întrebări sau preocupări legate de acest articol. Dacă doriți să mă contactați personal, este mai bine să faceți acest lucru prin mesaje personale pe site, le verific în mod regulat.

Atenție, vă rog. Dacă copiați acest articol pe site-ul dvs., lăsați un link direct la această pagină. Vă mulțumim pentru înțelegere







Trimiteți-le prietenilor: