Documente Academic
Documente Profesional
Documente Cultură
Oracle Forms Developer este o componenta a lui Oracle Developer Suite 10g şi
oferă un set de instrumente ce permit dezvoltatorilor să construiască aplicaţii rapid şi
uşor. Oferă un mediu de dezvoltare integrat ce utilizeaza limbajul SQL şi PL/SQL şi
Java.
Include urmatoarele componente: Form Builder, Form Compiler (citeşte definiţia
modulului şi creează un fişier executabil), Forms, fişierul executabil).
Oracle Forms Developer are 3 componente executabile:
Form Builder - componenta care permite construirea de aplicaţii, proiectarea şi
stocarea definiţiilor formelor, meniurilor şi bibliotecilor.
Form Compiler – componenta care permite compilarea aplicaţiilor create de
Form Builder.
Form Runtime – componenta care permite lansează în execuţie, pe Web a
aplicatiei realizate si compilate cu Form Builder, respectiv Form Compiler.
FORMS BUILDER
Componente principale
Object Navigator
Property Palette – propietăţile obiectelor pot fi vizualizate şi modificate
Layout Editor - pentru crearea şi aranjarea elementelor videorfomatului
PL/SQL Editor - trigeri, proceduri, funcţii, pachete, biblioteci PL/SQL
Property Palette
Object Library
Menu Editor
Layout Editor, Form Builder ataseaza item-ul automat blocului curent. Se poate schimba
blocul curent din lista cu blocuri disponibila in partea dreapta-sus.
Rigla orizontala si verticala poate fi afisata sau ascunsa folosind optiunile din meniu
View-Rules. Unitatea de masura poate fi schimbata cu ajutorul optiunilor din meniu
Format-Layout Options-Ruler.
In partea de jos se gaseste linia de stare care afiseaza informatii despre:
Pozitia cursorului mouse-ului
Lupa
Dimensiunile obiectelor la crearea/mutarea lor cu mouse-ul
In Layout Editor se poate lucra cu un singur canvas in acelasi timp.
Object Library - este o fereastra asemanatoare cu Property Palette care poate fi utilizata
pentru crearea, stocarea, intretinerea si distribuirea obiectelor reutilizabile.
Avantajele principale in utilizarea bibliotecilor de obiecte:
Bibliotecile de obiecte se deschid automat la pornirea programului Form Builder,
facand astfel obiectele imediat utilizabile.
Se pot asocia mai multe biblioteci de obiecte unei aplicatii, astfel incat aplicatia sa
se inscrie in anumite standarde.
Crearea rapida a aplicatiilor folosind obiecte predefinite prin tehnica drag-and
drop, sporind astfel productivitatea in dezvoltarea de aplicatii
Afisarea ferestrei Object Library se realizeaza folosind optiunile din meniu Tools-Object
Library.
Facultatea de Științe Economice - SIG - Oracle – Laboratorul 12
Definirea modulelor
Forms Builder suportă mai multe tipuri de formate pentru salvarea şi stocarea
modulelor. Există 2 opţiuni pentru salvarea modulelor:
1. In fişiere sistem: fişierele au extensia FMB. Ele pot fi deschise pentru modificări
ulterioare.
2. În baza de date: modulele sunt salvate în tabele speciale din baza de date.
Este responsabilitatea administratorului bazei de date de a identifica metoda de stocare
optimă pentru modulele aplicaţiei.
Modulele pot exista în 3 tipuri de formate:
Binar - formatul binar poate fi utilizat pe mai multe platforme. Din acest format
se poate genera fişiere executabile pentru diferite sisteme de operare.
Text - Formatul text este un format citibil. Acest format poate fi generat din
formatul binar folosind Form Builder; formatul text descrie obiectele şi codul
fiind utilizat pentru întocmirea documentaţiei aplicaţiei.
Facultatea de Științe Economice - SIG - Oracle – Laboratorul 12
Developer generează fişiere text cu extensia ERR. Aceste fişiere conţin mesajele de
eroare care apar la compilare, fiind astfel utile la depanarea aplicaţiei.
Aplicaţiile pot avea mai multe module, iar un modul poate avea mai multe obiecte.
Numele unui modul poate sa contina maxim 30 caractere si trebuie sa inceapa cu o
litera. Poate contine orice combinatie de litere si caractere speciale ($,”,etc),
exceptand cuvinte rezervate Oracle si duplicate.
Compilarea modulelor
Din meniu se folosesc optiunile File-Administration-CompileFile sau folosind optiunile
Program-Compile.
Exista posibilitatea de a compila automat inainte de a rula un program Tools-Preferences-
Build Before Running
Se pot rula doar modulul Form, restul modulelor meniu si biblioteci nu pot fi rulate
separat ci numai legate de modulul Form. Form Builder incarca automat modulele meniu
si bibliotecile de care are forma nevoie atunci cand rulezi o forma.
Etape de realizare:
Crearea unui modul “gol” –Object Navigator
Creare blocurilor de date şi a elementelor componente –Data Block Wizard
Modificarea modulului (Layout wizard sau Layout Editor)
Setarea propietăţilor (Property palette)
Ataşarea codului (PL/SQL editor)
Testarea modulului (Forms Runtime)
Canvas de tip Toolbar este utilizat pentru a crea un toolbar ataşat unei ferestre.
Poate fi de tip vertical sau orizontal. Toolbar-ul de tip orizontal se afişează la
începutul ferestrei, sub bara de meniu.
Frame (un obiect grafic ce apare într-un canvas)
Trigeri de aplicaţie (de exemplu triggerul WHEN_BUTTON_PRESSED)
Proceduri, funcţii şi pachete
Alte obiecte (alerte, parametri)
Variabilele nu trebuie
declarate, se utilizeaza doar
la nivelul runtime
Blocurile
Blocul reprezinta un container care grupeaza obiecte, cum ar fi butoane, liste etc.
Blocurile nu au o reprezentare fizica, ele fiind regasite mai mult la nivelul logic al unei
aplicatii. Doar elementele grupate intr-un bloc sunt vizibile la nivelul interfetei utilizator.
Blocurile pot fi grupate in 2 tipuri:
Data Block – blocuri care sunt asociate cu o tabela dintr-o baza de date. Blocurile
pot fi single-record adica afiseaza un singur tuplu la un moment dat sau multi-
record care permit vizualizarea mai multor tupluri deodata.
Control Block – blocuri care nu sunt asociate cu date, ele fiind concepute ca
elemente de control.
Un frame este o cale predefinita de aranjare a cimpurilor unui bloc care stabileste
marginile blocului, distanta dintre item-uri si textul asociat fiecaruia.
Sursele de date pentru Data Block:
Tabelele si view-urile sunt cele mai folosite ca sursa de date pentru blocurile de date.
Daca nu exista cerinte speciale, tabela ramane cea mai buna alegere ca sursa de date.
Cand se creaza un bloc bazat pe tabela Forms Builder genereaza automat la nivel de
forma:
Rutine SQL care permit inserari, modificari, stergeri si interogari.
Rutine care preiau constrangerile tabelei.
Creaza elemente de interfatacare corespund cu coloanele tabelei.
Un block poate fi asociat doar unei singure tabele.
Procedurile stocate returneaza date pentru blocurile de date prin utilizarea uneia din cele
2 tipuri:
reference cursor – se creaza un cursor care se deschide si este populat cu date
in urma unei instructiuni SELECT. Acesta varianta permite doar interogari si
nu permite folosirea de intructiuni DML.
table of records – este o structura PL/SQL care se aseamana cu o matrice de
inregistrari. Este o metoda extrem de eficienta pentru a salva traficul de retea
WINDOWS SI CANVAS
La construirea unei forme se utilizeaza ferestrele (windows) si suprafetele (canvases)
pentru a prezenta elementele vizuale ale formei. O singura forma poate avea mai multe
ferestre si canvases-uri.
Relatia dintre windows si canvases
Pentru fiecare fereastra creata trebuie creata una sau mai multe suprafate, deci fiecare
suprafata trebuie sa aibe o fereastra. Definirea unei relatii dintre elemente, suprafete si
ferestre se reduce la setarea unor proprietati.
Window – este asemanatoare cu rama unui tablou. Ea poate fi mutata sau modificata.
Cand se creaza o noua forma automat Form Builder creeaza o fereastra implicita numita
WINDOW1. Se pot adauga noi ferestre, iar fereastra implicita se poate sterge sau
redenumi.
O singura forma poate avea mai multe ferestre.
In Form Builder se pot crea urmatoarele tipuri de ferestre:
modal window – este o fereastra la care utilizatorul trebuie sa raspunda pentru a trece
la alta fereastra. Forteaza utilizatorul sa lucreze in interiorul unei singure ferestre cind
fie accepta sau nu modificarile care au fost facute. Bara de instrumente si meniul nu
sunt accesibile. O fereastra modala este folosita cind utilizatorul trebuie sa termine un
proces anume inainte de a continua.
modless window – este o fereastra nerestrictiva, din care utilizatorul poate iesi
oricand. Permite utilizatorului sa interactioneze cu orice alta fereastra precum si cu
bara de instrumente si cu meniul principal. Ferestrele modeless sunt folosite in
principal in interfetele grafice unde utilizatorul este liber sa aleaga unul dintre
procesele existente
Container (MDI) –contine toate celelalte ferestre. De obicei, dar nu intotdeauna
contine bara de instrumente si meniul principal.
O fereastra contine urmatoarele elemente:
Titlul ferestrei
Bara de meniu si submeniuri
Butoane si alte controale care nu corespund datelor
Item-urile corespunzatoare datelor din baza de date
Linia de mesaje si linia de stare
Facultatea de Științe Economice - SIG - Oracle – Laboratorul 12
Cand se creeaza o fereastra trebuie specificata stilul ei. In Form Builder exista 2 stiluri
pentru ferestre:
Document windows – afiseaza in mod obisnuit principalele suprafete si arii de lucru
ale aplicatiilor.
Dialog windows – sunt ferestra de dialog, cer interventia utilizatorului.
Pasi pentru crearea unei ferestre noi:
1. Se selecteaza nodul Window din Object Navigator.
2. Se apasa butonul CREATE (+).
3. Se seteaza proprietatile din Property Palette.
Canvas – este asemanatoare cu suprafata pe care se picteaza. Pe aceasta suprafata se
aseaza obiectele cand se realizeaza interfata aplicatiei. Implicit canvas-urile pe care le
creezi sunt asignate ferestrei cu numele WINDOW1. Pentru a schimba fereastra se
seteaza proprietatea WINDOW din Property Palette.
Canvas-view – este suprafata pe care se pot aseza obiectele.
In Form Builder se pot defini mai multe tipuri de canvas-uri. Exista 4 tipuri:
content –ocupa intreaga suprafata a ferestrei in care este afisat. Fiecare fereastra
contine cel putin un content canvas.
Stacked-este afisat deasupra sau in cadrul canvas-ului content corespunzator ferestrei
curente.
tab –un set de tab-uri care permit gruparea si afisarea unui numar mare de informatii
inrudite pe un singur canvas dinamic
toolbar-este folosit pentru a crea bare de instrumente pentru ferestre individuale.
Fiecare fereastra poate afisa unul sau mmai multe canvas-uri. De asemenea se poate afisa
conditionat un canvas intr-o fereastra, in functie de anumite conditii care sunt indeplinite.
chart item
check box
display item
image item
list item
radio group
sound item
text item
OLE container
ActiveX control
Item-urile pot fi grupate in 2 categorii:
1. Input item - accepta introducerea datelor
text item
check box
list item
radio group
OLE container
ActiveX control
2. Non-input item – nu accepta introducerea datelor
button
display item
image item
sound item
chart item
TEXT ITEM
Text Item este un obiect vizual cu ajutorul caruia utilizatorul poate interoga, insera, sterge
date. In mod normal, text item corespunde unei coloane unui tabel din baza de date.
Fiecare item din forma trebuie sa se afle in cadrul unui bloc.
Sunt 2 cai principale pentru a crea un text item:
folosind Layout Editor
1. Se selecteaza butonul TEXT ITEM.
2. Se pozitioneaza cursorul mouse-ului in locul unde se doreste item-ul.
3. Cu un singur click text item-ul apare pe canvas .
4. Se apeleaza fereastra de proprietati.
folosind Object Navigator
1. Se selecteaza un item din cadrul blocului unde dorim sa creem butonul.
2. Se apasa tasta CREATE (+).
CHECK BOX
Check box este un obiect grafic care permite alegerea unei stari din 2 posibile (ex.
ON/OFF sau A/F). Check Box poate stoca valori de tip char, number si date. Cand se
defineste un check box se poate specifica valorile pentru fiecare stare, setand proprietatile
din Property Palette (Value when Checked, Value when Unchecked).
Sunt 2 cai principale pentru a crea un Check Box:
Facultatea de Științe Economice - SIG - Oracle – Laboratorul 12
RADIO GROUPS
Radio Group este un set de butoane radio. Fiecare buton reprezinta o alta valoare. Intr-un
grup pot exista 2 sau mai multe valori statice. Este o alternativa la List Item cu 2 – 3
optiuni.
Sunt 2 posibilitati pentru a crea un Radio Group:
folosind Layout Editor
1. Se selecteaza butonul RADIO GROUP.
2. Se pozitioneaza cursorul mouse-ului in locul unde se doreste sa apara.
3. Cu un singur click butonul radio apare pe canvas .
4. Daca este primul buton radio pe canvas se creaza automat grupul.
5. La crearea urmatoarelor butoane va apare suplimentar intrebarea daca butonul
respectiv intra sau nu intr-un grup existent de butoane radio.
6. Se apeleaza fereastra de proprietati.
LIST ITEM
List Item este un obiect grafic care afiseaza un set de optiuni, iar la fiecare optiune ii se
poate atasa o valoarea specifica. Se utilizeaza un List item cand se doreste selectarea unei
singure optiuni din mai multe posibile. Fiecare optiune din List Item poate contine pana
la 30 de caractere. Este o alternativa la folosirea butoanelor radio, permitand
economisirea spatiului pe canvas. Exista 3 stiluri:
Pop List – afiseaza optiunea cu un buton in partea dreapta; prin selectarea butonului
apare o lista derulanta; nu accepta adaugare de noi elemente la rulare
T-List – afiseaza optiunile avand atasat in partea dreapta un scroll bar
Combo Box – afiseaza optiunile avand in partea dreapta un buton, dar care nu este
atasat de optiuni (ca la Pop List); accepta adaugarea de noi optiuni la rulare
Sunt 2 alternative pentru a crea un List Item:
folosind Layout Editor
Facultatea de Științe Economice - SIG - Oracle – Laboratorul 12
BUTTON
Form Builder permite existenta a 2 tipuri de butoane:
buton text – are afisat pe buton o eticheta text.
buton iconic – are afisat o imagine pe buton.
Butonul icon poate fi afisat numai in mod grafic.
Butonul text poate fi afisat atat in mod grafic cat si in mod text. In mod grafic apare ca
un dreptunghi cu textul in mijloc, iar in mod caracter apare textul intre paranteze.
Sunt 2 cai principale pentru a crea un buton:
folosind Layout Editor
Se selecteaza butonul BUTTON.
Se pozitioneaza cursorul mouse-ului in locul unde se doreste butonul.
Cu un singur click butonul apare pe canvas.
Se apeleaza fereastra de proprietati.
folosind Object Navigator
Se selecteaza un item din cadrul blocului unde dorim sa creem butonul.
Se apasa tasta CREATE (+).
Din Property Palette se modifica Item Type in Push Button.
DISPLAY ITEM
Display Item este asemanator cu text item, exceptand faptul ca este read-only, avand
numai rolul de afisare. El nu poate fi editat, interogat, fiind folosit doar la afisarea unor
valori, atat referitoare la baza de date cat si valori calculate.
Sunt 2 cai principale pentru a crea un Display Item:
folosind Layout Editor
Se selecteaza butonul DISPLAY ITEM.
Se pozitioneaza cursorul mouse-ului in locul unde se doreste sa apara.
Cu un singur click display item-ul apare pe canvas .
Se apeleaza fereastra de proprietati.
IMAGE ITEM
Image item este un obiect vizual care permite afisarea imaginilor scanate sau vectoriale.
Ca si text item poate stoca si afisa varchar2, number sau date ca valori si in plus imagini.
Afisarea imaginilor se poate face atat din baza de date, cat si din fisiere externe bazei.
Cand salvezi imagini in baza de date Oracle foloseste un mecanism propriu de compresie.
Image Item
Format
BMP Read/Write
JFIF Read/Write
PCX Read Only
PICT 1&2 Read/Write
GIF Read/Write
CALS Read/Write
PCD Read Only
RAS Read/Write
TIFF 4,5&6 Read/Write
Sunt 2 cai principale pentru a crea un Image Item:
folosind Layout Editor
1. Se selecteaza butonul IMAGE ITEM.
2. Se pozitioneaza cursorul mouse-ului in locul unde se doreste sa apara item-ul.
3. Cu un singur click image item-ul apare pe canvas.
4. Se apeleaza fereastra de proprietati.
folosind Object Navigator
1. Se selecteaza un item din cadrul blocului unde dorim sa creem item-ul.
2. Se apasa tasta CREATE (+).
3. Din Property Palette se modifica Item Type in Image Item.
LOV(List Of Value)
LOV-urile sunt obiecte ale modulului Form. Ele sunt definite la nivelul formei, aceasta
insemnand ca pot fi folosite de orice text item din orice bloc. LOV este un obiect vizual
care permite utilizatorilor de a vedea, selecta si de a se deplasa printre inregistrarile
stocate curent intr-un record group.
LOV asigura urmatoarele functionalitati:
Poate fi afisata la cererea utilizatorului, cand acesta se deplaseaza la un text item care
are asociat un LOV.
Contine facilitati de cautare in functie de valori specifice.
Poate fi atasata la unul sau mai multe text item.
Valorile unui LOV sunt derivate dintr-un grup de inregistrari.
La nivelul runtime FormBuilder afiseaza eticheta <LIST> in linia de stare, cand este
disponibila o lista de valori. Utilizatorul nu poate lucra intr-o alta fereastra cand lista de
valori este afisata. Lista de valori poate fi mutata sau redimensionata.
Listele de valori preiau datele dintr-o structura de date interna numita record group.
Primul pas in crearea unui LOV este de a defini un record group.
Facultatea de Științe Economice - SIG - Oracle – Laboratorul 12
RECORD GROUP poate avea un numar nelimitat de coloane de tipul char, long, number
sau date daca se incadreaza in 64K.
Un record group este o structura de linii si coloane stocata in memoria Forms si este
asemanatoare cu structura unei tabele. Record group-ul tine in memorie inregistrarile care
pot fi refolosite si de alte aplicati, reducand astfel accesul repetat la datele externe.
Record group poate asigura date pentru:
Liste de valori (LOV)
List item
crearea rapoartelor si graficelor
alte aplicatii
Cand se creaza o lista de valori trebuie specificate coloanele care se gasesc in record
group si se doresc afisate in LOV. Coloanele din record group sunt intotdeauna afisate in
fereastra LOV in ordinea in care se gasesc in record group.
Valorile din record group pot fi statice sau dinamice, in functie de sursa de date:
valorile statice nu se modifica in timpul rularii aplicatiei , valorile dinamice care sunt
bazate pe o declaratie SELECT si se pot modifica in timpul rularii aplicatiei.
Triggeri de aplicatie
Un trigger de aplicatie este un program care se executa atunci cand apare un eveniment.
Fiecare trigger la definirea lui are asociat un eveniment specific. Form Builder defineste o
mare varietate de evenimente carora se pot atasa triggere, ca de exemplu:
Evenimente raportate la interogari
Evenimente legate de introducerea datelor si/sau validarea lor
Navigarea mouse-ului
Evenimente legate de interactiuni cu obiectele din forma
Evenimente interne ale functionalitatii aplicatiei
Evenimente legate de aparitia erorilor si mesajelor de eroare si tratarea lor
Triggerele in Form Builder sunt scrise in PL/SQL.
Trebuie avute in vedere urmatoarele aspecte atunci cand se proiecteaza un trigger:
Tipul trigger-ului – defineste evenimentul specific care cauzeaza aparitia trigger-ului
Codul trigger-ului – blocurile PL/SQL care definesc operatiile pe care le executa
trigger-ul
Scopul trigger-ului – nivelul la care se defineste trigger-ul
Tipul de trigger este determinat de evenimente. Form Builder pune la dispozitie peste
100 de triggere, fiecare fiind identificate prin nume specifice. Astfel in functie de numele
trigger-ului se poate deduce tipul de trigger. Numele unui trigger poate contine mai multe
cuvinte separate prin semnul ‘-‘.
Trigger Prefix Descriere
PRE- Triggerul se executa inainte de producerea unui anumit eveniment
POST- Triggerul se executa dupa producerea unui anumit eveniment
Facultatea de Științe Economice - SIG - Oracle – Laboratorul 12
SET_WINDOW_PROPERTY
(window_name VARCHAR2,
property NUMBER,
value VARCHAR2);
SET_ITEM_PROPERTY
(item_name VARCHAR2,
property NUMBER,
value VARCHAR2);
Exemplu:
SET_ITEM_PROPERTY('EMPLOYEE_ID', VISIBLE, PROPERTY_TRUE);
SET_ITEM_PROPERTY('EMPLOYEE_ID', ENABLED, PROPERTY_TRUE);
:employees.employee_id:=:global.employee_id;
Exemplu:
SET_ITEM_PROPERTY('EMPLOYEE_ID', VISIBLE, PROPERTY_FALSE);
PROCEDURE READ_IMAGE_FILE
(file_name VARCHAR2,
file_type VARCHAR2,
item_name varchar2);
Tipuri de fişiere: BMP, CALS, GIF, JFIF, JPG, PICT, RAS, TIFF, or TPIC.
Exemplu:
read_image_file('c:\poze\poza.jpg', ‘jpg', 'imagine');
Facultatea de Științe Economice - SIG - Oracle – Laboratorul 12
Exemplu:
execute_query;
Exemplu:
SET_WINDOW_PROPERTY
(FORMS_MDI_WINDOW,
TITLE, 'Fereastra principala');
Butonul Inainte:
IF :SYSTEM.LAST_RECORD='TRUE' THEN
MESSAGE('ULTIMA INREGISTRARE');
ELSE
NEXT_RECORD;
END IF;
Butonul Inapoi
IF :SYSTEM.CURSOR_RECORD='1' THEN
MESSAGE('PRIMA INREGISTRARE');
ELSE
PREVIOUS_RECORD;
END IF;
Butonul Prima
if :system.CURSOR_RECORD='1'THEN
message('PRIMA INREGISTRARE');
ELSE
first_record;
END IF;
Butonul Ultima
if :system.LAST_RECORD='TRUE' THEN
message('ULTIMA INREGISTRARE');
ELSE
LAST_record;
Facultatea de Științe Economice - SIG - Oracle – Laboratorul 12
END IF;
Butonul Iesire
SET_ALERT_PROPERTY('ALERTMESAJ', ALERT_MESSAGE_TEXT, 'DORITI SA
PARASITI FORMA?' );
IF SHOW_ALERT('ALERTMESAJ')=ALERT_BUTTON1 THEN
EXIT_FORM;
END IF;
Sau
SET_ALERT_PROPERTY('ALERTMESAJ', ALERT_MESSAGE_TEXT, 'DORITI SA
PARASITI FORMA?' );
IF SHOW_ALERT('ALERTMESAJ')=ALERT_BUTTON1 THEN
EXIT_FORM (no_commit);
END IF;
SHOW_ALERT(alert_id Alert);
SHOW_ALERT(alert_name VARCHAR2);
Butonul Salvare
SET_ALERT_PROPERTY('ALERTMESAJ', ALERT_MESSAGE_TEXT, 'DORITI SA
SALVATI?' );
IF SHOW_ALERT('ALERTMESAJ')=ALERT_BUTTON1 THEN
COMMIT_FORM;
END IF;
v_cod facultati.codfac%type;
v_cod1 catedre.codcat%type;
alerta number;
found boolean;
found1 boolean;
cursor cp is select codfac from facultati where codfac=:facultati.codfac;
cursor cp1 is select codcat from catedre where codcat=:catedre.codcat;
begin
open cp;
open cp1;
fetch cp into v_cod;
fetch cp1 into v_cod1;
found :=cp%found;
found1:=cp1%found;
SET_ALERT_PROPERTY('ALERTMESAJ', ALERT_MESSAGE_TEXT, 'DORITI SA
SALVATI?' );
IF SHOW_ALERT('ALERTMESAJ')=ALERT_BUTTON1 THEN
if (found or found1) and :system.record_status='INSERT' then
alerta:=show_alert('alertduplicat');
raise form_trigger_failure;
END IF;
commit_form;
end if;
close cp;
close cp1;
end;