Sunteți pe pagina 1din 5

Dezvoltarea Aplicaiilor de Baze de Date - Anul 2 Master ID Laborator 3 (Oracle 9i Forms & Reports Developer) I.

Rapoarte
1. S se creeze un raport tabelar, ce va conine urmtoarele date: - din tabelul EMPLOYEES_PNU : first_name, last_name, job_id, commission_pct - din tabelul DEPARTMENTS_PNU: department_name Se va utiliza Query Builder pentru construirea interogrii corespunztoare. salary,

2. Utiliznd Report Wizard n modul reentrant s se realizeze urmtoarele modificri: - cererea va sorta datele n ordine descresctoare dup salariu - adugai un sumar care s indice valoarea total a salariilor - reducei dimensiunea cmpurilor SALARY i TOTAL la 6 - modificai eticheta COMMISSION_PCT n Comm i reducei dimensiunea la 4. - Salvai raportul dndu-i numele l3p2.rdf. Obs: Testai raportul ct mai frecvent posibil ! 3. Utiliznd Report Wizard n modul reentrant, modificai raportul pentru a crea un raport grupat (break). - setai stilul raportului Group above - titlul raportului va fi Angajati grupati pe departamente - grupai raportul dup numele departamentului - Salvai noul raport cu numele l3p3.rdf. 4. Creai un nou raport urmnd paii de mai jos : - utilizai Report Wizard - selectai stilul Mailing Labels - utiliznd Query Builder, creai o cerere care s conin urmtoarele date: prenumele, numele, adresa, oraul i ara n care lucreaz fiecare salariat, titlul job-ului acestuia i data angajrii. - n zona de text, includei prenumele, numele, adresa, oraul i ara, fiecare cmp fiind plasat pe o linie nou. - dai click pe Finish - salvai raportul cu numele l3p4.rdf 5. - Utiliznd wizard-ul n modul reentrant, s se modifice stilul raportului n Form Letter. - n zona de text, formai propoziiile: Dle/dna <first_name> <last_name>, ati fost angajat la data <hire_date> in functia <job_title>. Va multumim pentru colaborare si va oferim o marire de salariu de 30% - adugai i textul: La Multi Ani ! - Selectai un template diferit i dai click pe Finish. - Salvai raportul cu numele l3p5.rdf 6. - Creai un raport matricial, care va conine numele departamentelor n stnga paginii, codurile job-urilor n partea de sus a paginii, iar n fiecare celula se va gsi suma salariilor angajailor corespunztori departamentului i job-ului respectiv.

afiai totalurile valorilor din cellule, pe linii i pe coloane creai un sumar care afieaz totalul salariilor din firm. setai dimensiunea coloanei job_id la 6, iar cea a celor 4 totaluri la 7. modificai eticheta lui JOB_ID n Job. salvai raportul cu numele l3p6.rdf.

7. Modificai raportul matricial anterior astfel nct s se creeze un raport matricial cu grupuri. Pentru aceasta, modificai cererea astfel nct s selecteze i rile corespunztoare, iar raportul va fi grupat pe ri (la matrix group fields selectai cmpul country). Salvai raportul ca l3p7.rdf. 8. Deschidei raportul l3p2.rdf. Realizai modificrile urmtoare n Live Previewer : - coloanele SALARY i Comm s fie aliniate la dreapta; de asemenea, header-ul coloanei va fi aliniat corespunztor - adugai virgule i un symbol monetary pentru SALARY; adugai i dou zecimale - adugai o zecimal i un semn procentual lui Comm - modificai header-ul coloanei Comm, n Comm Pct. - Totalul de la sfritul raportului va fi aliniat la dreapta i i se vor aduga virgule, un simbol monetar i dou zecimale - Inserai data curent n partea de sus a paginii, la mijloc - Eticheta corespunztoare totalului va avea font-ul bold - Salvai raportul cu numele l3p8.rdf i nchidei-l - Invocai raportul ntr-un browser web 9. Deschidei raportul l3p3.rdf. Realizai urmtoarele modificri n Live Previewer : - eliminai chenarul din jurul totalului corespunztor fiecrui departament - adugai virgule i dou zecimale cmpului SALARY i totalului i aliniai aceste valori la dreapta; aliniai corespunztor i header-ul coloanei - aceleai modificri vor fi realizate la sfritul raportului; mutai totalul general astfel nct s fie aliniat cu cmpul SALARY - modificai n rou culoarea heading-ului corespunztor datelor angajatului (culoarea de fundal a ntreg capului de tabel) - salvai raportul cu numele l3p9.rdf 10. Deschidei raportul l3p6.rdf i realizai urmtoarele modificri: - aliniai la dreapta cmpul job_id - eliminai chenarul din jurul celulelor de valori i frame-ul printe - adugai o linie de culoare gri frame-urilor printe ale lui department_name i job_id - salvai raportul cu numele l3p10.rdf 11. Deschidei raportul l3p9.rdf i punei n eviden cmpul SALARY n mod condiional : - dac salariul este mi mic dect 3000, cmpul va fi tiprit cu caractere italice. - Dac salariul este mai mare dect 5000, cmpul va fi tiparit cu caractere bold italic, iar culoarea textului va fi roie. - Salvai raportul cu numele l3p11.rdf

12. Pentru fiecare departament (department_name) i, n cadrul acestuia, pentru fiecare job (job_title), s se afieze numele, prenumele, data angajrii i salariul angajailor (raport master-detail). - raportul va fi de tip Group Left - Realizai gruprile n dou moduri : pe acelai nivel i pe niveluri diferite. Care este diferena ? Analizai modelul de date n fiecare dintre cele dou cazuri. - Salvai raportul cu numele l3p12.jsp. 13. Modificai raportul anterior astfel nct s se afieze doar angajaii avnd salariul mai mare de 3500. Obs: n Property Inspector avem posibilitatea introducerii unui filtru la nivel de grup, prin selectarea proprietii Filter Type. Setnd proprietatea acesteia la valoarea PL/SQL, vom putea specifica o funcie boolean pentru stabilirea filtrului. Corpul acestei funcii, n cazul nostru, va fi de forma urmtoare :
If :salary < 3500 Then return (false); End if; Return (true);

14. S se modifice raportul anterior adugnd manual o nou coloan care va reprezenta vechimea n ani a angajatului respectiv. Obs: n Data Model se d click pe butonul Formula Column, iar apoi n gruparea creia i va aparine noua coloan (ultima grupare din model). Acionnd butonul corespunztor proprietii PL/SQL Formula vom putea insera codul PL/SQL ce se va executa la fiecare instanta a grupului caruia ii apartine campul curent. Functia care va calcula valoarea dorit are corpul:
Return round((sysdate hire_date)/365, 2);

Atenie! Modificarea manual a machetei raportului este o operaie deosebit de dificila, care trebuie efectuata cu multa atentie. Deplasarea elementului grafic ce desemneaza un cmp n afara grupului caruia ii apartine respectivul cmp (n Object Navigator) duce la o eroare fatala i la imposibilitatea rularii raportului.

II. Meniuri. Legturi ntre meniuri, forme i rapoarte


Meniurile sunt module care se creeaz n Forms Builder (sub nodul Menus din Object Navigator). Legturi cu formele Pentru deschiderea unei forme, se utilizeaz built-in-ul CALL_FORM. De exemplu:
call_form('e:\work_dev\f_dep');

Pentru activarea unei fome deschise deja, se utilizeaz built-in-ul GO_FORM. Pentru nchiderea formei se utilizeaz built-in-ul deja cunoscut, EXIT_FORM.

Legturi cu rapoartele Pentru afiarea unui raport, se procedeaz n modul urmtor: La nodul Reports al formei, se adaug rapoartele care vor fi utilizate n form (inclusive ntr-un meniu asociat acesteia). n cazul nostru, acestea sunt l3p12 i l3p7. Proprietile unui element adugat n nodul Reports sunt urmtoarele:

Codul PL/SQL asociat opiunii din meniu sau trigger-ului WHEN-BUTTON-PRESSED al unui buton care va determina afiarea raportului este de forma urmtoare:
DECLARE repid REPORT_OBJECT; v_rep VARCHAR2(100); rep_status VARCHAR2(20); repid := FIND_REPORT_OBJECT('l3p7'); -- se mentioneaza numele --prin care raportul este --referit in nodul Reports al formei v_rep := RUN_REPORT_OBJECT(repid); HOST('"C:\Program Files\Internet Explorer\iexplore" d:\work_dev\l3p7.html'); --modificati calea corespunzator END;

-BEGIN

Am pornit server-ul de rapoarte, dnd la prompt-ul MS-DOS comanda:

rwserver server=rep_computer

De remarcat c acest server este referit i n fereastra anterioar de proprieti. Acesta este server-ul default, al crui nume este alctuit astfel: rep_<nume_calculator>. Va aprea o fereastr care indic faptul c server-ul de rapoarte este pornit:

Exemplu: Dac numele calculatorului, aa cum apare el la My Computer ->click dreapta > Properties-> Computer name, este computer. atunci numele server-ului implicit de rapoarte este rep_computer. Se compileaz meniul (dac exist), apoi forma. Se execut forma si raportul se deschide din meniu sau cu ajutorul unui buton din form. 15. S se creeze un meniu de forma urmtoare (atenie i la cerina exerciiului 16!): Forme Angajati Departamente Iesire Aciunile asociate opiunilor acestui submenu sunt urmtoarele: - Angajai: deschiderea formei F_EMP creat n laboratorul 1 - Departamente: deschiderea formei F_DEP creat n laboratorul 1 - Ieire: nchiderea formei - Submeniurile meniului Raportare corespund afirii rapoartelor l3p12 i l3p7. 16. Salvai modulul anterior cu numele menu_principal.mmb. Compilai (n urma compilrii se va obine fiierul menu_principal.mmx). Obs: Compilarea nu are loc cu succes pn cnd toate nodurile terminale din meniu nu au o aciune asociat (cod PL/SQL). De aceea, vom introduce opiunile meniului treptat, pe msur ce este posibil scrierea codului PL/SQL corespunztor. 17. S se creeze un nou modul de form cruia i se va asocia meniul menu_principal.mmx creat anterior. Obs: Asocierea se face n fereastra de proprieti a formei, la nodul Functional. Raportare Departamente, job-uri Tari, departamente Help Index About

S-ar putea să vă placă și