Sunteți pe pagina 1din 3

Aplicaţii profesionale în baze de date orientate obiect

Anul 1 Master „Baze de date şi tehnologii web”


Laborator 1 (Oracle Forms Developer)

1. Analizaţi diagrama exemplu HR (Human Resources), observând cheile primare şi


externe ale tabelelor, precum şi relaţiile dintre tabele.
2. Iniţiaţi o conexiune la baza de date indicată la laborator. Analizaţi structura tabelelor
din schema HR şi listaţi conţinutul acestor tabele.
Exemplu:
DESC employees
SELECT * FROM employees;
3. Dacă lucraţi într-un cont de grupă, să se creeze câte o copie a tabelelor
EMPLOYEES, DEPARTMENTS, JOBS şi JOB_HISTORY. Noile tabele se vor numi
EMPLOYEES_PNU, DEPARTMENTS_PNU, JOBS_PNU, JOB_HISTORY_PNU,
unde sufixul “PNU” este format astfel: P = prima literă din prenumele dumneavoastră,
NU = primele două litere din nume.
4. Să se creeze o formă, numită F_EMP, care să conţină informaţii referitoare la
angajaţi şi joburile lor precedente.
a) Creaţi cu ajutorul Data Block Wizard câte un bloc de date pe baza tabelelor
EMPLOYEES si JOB_HISTORY. Blocurile se vor numi BL_EMP,
BL_HISTORY.
b) Blocul BL_EMP va fi blocul master al lui BL_HISTORY.
c) BL_HISTORY va avea layout tabelar. În editorul Layout, repoziţionati
elementele în mod convenabil (mai întâi redimensionaţi canvas-ul şi frame-ul).
d) Informaţiile vor fi afişate pe un canvas numit CV_EMP.
e) Salvaţi forma într-un fişier numit F_EMP.fmb.
5. - Executati modulul creat anterior.
- Executaţi o cerere nerestrictionată.
- Executaţi o cerere restricţionată pentru a găsi informaţii referitoare la angajaţii
având codul job-ului SA_REP.
- Executaţi o cerere restricţionată pentru a găsi informaţii referitoare la angajaţii al
căror job_id incepe cu litera “S” şi al căror salariu este mai mare decât 2500.
- Executaţi o cerere restricţionată pentru determinarea angajaţilor al căror salariu se
află în intervalul 4500-5000 sau care au a treia literă din nume “A”.
Indicaţie: în item-urile corespunzătoare câmpurilor salary, respectiv last_name se
scrie :a, :b. La execuţia cererii va apărea o fereastră în care se poate introduce
condiţia:
:a between 4500 and 5000 or lower(:b) like ‘__a%’
Ce observaţi?
6. - Adăugaţi o nouă înregistrare în blocul corespunzător lui EMPLOYEES. Vizualizaţi,
în SQL*Plus, conţinutul tabelului. Apare şi noua înregistrare?
- Salvaţi înregistrarea introdusă şi vizualizaţi din nou conţinutul tabelului..
- Actualizaţi data angajării pentru înregistrarea introdusă anterior şi salvati.
2

7. - Creaţi un nou modul de tip formă.


- Creaţi un bloc singular, folosind Data Block Wizard, pe baza înregistrărilor din
DEPARTMENTS şi includeti toate coloanele. Blocul se va numi BL_DEP. Afişati blocul
pe un canvas nou, numit CV_DEP; se va afişa câte o singură înregistrare. Titlul frame-
ului va fi “departamente”.
- Salvaţi noul modul într-un fişier numit F_DEP.
- Rulaţi modulul si executaţi o cerere (să se găsească departamentele al căror nume
începe cu litera M).
- In Object Navigator, schimbati numele modulului in “F_DEP”.
8. - Creati manual un bloc nou şi redenumiţi acest bloc Control. Setaţi proprietăţile
Database Data Block, Query Allowed, Insert Allowed, Update Allowed şi Delete
Allowed la valoarea “No”. Setaţi proprietatea Query Data Resource Type la “None”.
Celelalte proprietăţi se vor lăsa cu valorile lor implicite. Mutaţi blocul Control după
blocul DEPARTMENTS (drag&drop în Object Navigator).
- Asiguraţi-vă că înregistrările corespunzătoare blocului DEPARTMENTS sunt
sortate după codul departamentului. (ORDER BY department_id în Properties Palette)
- Setaţi proprietăţile frame-ului pentru blocul DEPARTMENTS astfel: ştergeti titlul
frame-ului şi setaţi proprietatea Update Layout la Manually.
- Salvaţi şi rulaţi forma.
9. În forma (modulul) F_DEP, creaţi un LOV (list of values) pentru a afişa codurile
locaţiilor şi oraşele corespunzătoare. Setaţi proprietatea Name la ID_lov, proprietăţii
Title daţi-i valoarea “Locaţii”, proprietăţile X=30, Y=30, Width=200, Height=250. Pentru
coloana location_id setaţi, ca element de întoarcere, departments.location_id.
Obs: Cu excepţia numelui formei, toate celelalte proprietăţi se setează cu ajutorul lui
LOV Wizard.
10. Creaţi un buton în blocul de control al formei F_DEP; numiţi acest buton
ID_lov_button. Modificaţi-i proprietatea Label = “Locatii” şi setaţi canvas-ul, iar apoi
poziţionaţi corespunzător butonul în Layout Editor.
Obs: Pentru crearea butonului se poate proceda astfel: prin click pe nodul Items al
blocului Control se creează un element nou, iar apoi, prin Property Palette se
stabileşte tipul elementului (Push Button), numele şi label-ul.
11. În forma F_DEP, scrieţi un trigger pentru a afişa ID_lov când este apăsat butonul
ID_lov_button.
Indicaţie:
Trigger WHEN-BUTTON-PRESSED la nivelul butonului ID_lov_button
IF show_lov('ID_lov') THEN null;
end if;
12. Creaţi un trigger When-Window-Closed la nivel de formă pentru a ieşi din aceasta.
Indicaţie:
WHEN-WINDOW-CLOSED la nivelul formei
exit_form;
13. Creaţi un bloc de control în forma F_EMP, în care adăugaţi un buton numit
exit_button. Scrieţi un trigger care determină ieşirea din formă când este selectat
exit_button. Textul butonului va fi “Ieşire”. Unde trebuie plasat blocul de control?
Indicaţie:
3

WHEN-BUTTON-PRESSED la nivelul butonului "exit_button"


exit_form;
14. Modificaţi fereastra din forma F_EMP. Schimbaţi-i numele în WIN_EMP şi titlul în
“Informatii angajati”. Verificaţi dacă dimensiunea şi poziţia sunt corespunzătoare.
Salvaţi, compilaţi şi executaţi forma pentru a testa modificările.
15. Creaţi un nou bloc, numit BL_JOBS bazat pe tabelul JOBS (fără a crea relaţii cu
celelalte blocuri), pentru a fi afişat conţinutul acestuia pe un canvas diferit, de tip
content, numit CV_JOB. Se vor afişa câte 4 linii şi se va folosi un layout tabelar, în
care se va include şi un scrollbar. Titlul frame-ului va fi “functii”.
16. În forma F_EMP, creaţi o nouă fereastră numită WIN_JOB. Dimensionaţi
fereastra corespunzător. Titlul ferestrei va fi JOB, iar proprietatea “Hide on Exit” va fi
setata Yes. Plasaţi noua fereastră într-o poziţie potrivită relativ la WIN_EMP. Asociaţi
ferestrei WIN_JOB canvas-ul CV_JOB.
17. În forma EMP, creaţi un canvas de tip toolbar orizontal, numit Toolbar, în fereastra
WIN_EMP. (proprietatea Window)
18. Creaţi cele 3 butoane de mai jos în blocul de control şi plasaţi-le pe canvas-ul
Toolbar. Exit_button a fost creat anterior, este nevoie doar să îi modificăm
proprietăţile. Toate proprietăţile, cu excepţia lui Label şi a numelor butoanelor, pot fi
setate simultan, printr-o selecţie multiplă.
Buton Detalii
Job_button Label: JOB;
Mouse Navigate: No;
Keyboard Navigable: No;
Canvas: Toolbar
Show_help_button Label: Show Help;
Mouse Navigate: No;
Keyboard Navigable: No;
Canvas: Toolbar
Exit_button Label: Exit;
Mouse Navigate: No;
Keyboard Navigable: No;
Canvas: Toolbar
19. Creaţi un canvas de tip stacked numit CV_HELP pentru a afişa help-ul în
fereastra WIN_EMP a formei F_EMP. Dimensiunile vizibile recomandate sunt
Viewport Width 270, Viewport Height 215 (pt). Adăugaţi un text corespunzător în acest
canvas.
20. Pozitionaţi canvas-ul precedent în aşa fel încât să apară în centrul ferestrei
WIN_EMP; organizaţi CV_HELP astfel încât să fie ultimul canvas din secvenţă.
21. Comutaţi pe No proprietatea Visible a lui CV_HELP şi apoi creaţi un buton în
blocul de control pentru a ascunde informaţia din Help atunci când nu mai este
necesară. Afişaţi acest buton pe CV_HELP. Butonul se va numi Hide_Help_Button
(Label: Ascunde Help; Canvas: CV_HELP).

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