Sunteți pe pagina 1din 22

2.

12 Aplicaii cu formulare multiple (1)

Pentru realizarea unei aplicaii


complexe, este necesar s:
Apelm o form din alt modul
Definim funcionalitatea formularelor
multiple
Partajm date ntre formularele deschise

1
2.12 Aplicaii cu formulare multiple (2)

Comportament:
Navigare flexibil ntre ferestre
Conexiuni singulare sau multiple la baza de
date
Tranzaciile pot viza date din formulare diferite
Operaiile commit au loc n ordinea deschiderii
formelor, pornind de la forma curent
Legturi:
Schimbul de date se realizeaz cu ajutorul
variabilelor globale, listelor de parametri,
grupurilor globale de nregistrri, sau
variabilelor PL/SQL din bibliotecile partajate
Codul poate fi partajat, prin intermediul
bibliotecilor i al bazei de date
2
2.12 Aplicaii cu formulare multiple (3)

Sesiune cu formulare multiple

Forms
Form C
Runtime
Open
Open (Parameters)
Form A Form B
(Parameters)

Open
(Parameters)

Form D

Variabile globale
Grupuridenregistrriglobale
Variabile PL/SQL

3
2.12 Aplicaii cu formulare multiple (4)

Avantajele utilizrii formularelor


multiple:
Depanare mai simpl
Modularitate
Performan i scalabilitate

4
2.12 Aplicaii cu formulare multiple (5)

Pornirea unui modul nou:

OPEN_FORM

MDI MDI

FORM A FORM A
FORM B
OPEN_FORM
Modeless

5
2.12 Aplicatii cu formulare multiple (6)

Definirea funcionalitii formularelor multiple:


Scenariu:
Lansm n execuie formularele F_EMP i F_DEP n
aceeai sesiune, navignd ntre ele.
Se pot face modificri n aceeai tranzacie, n cadrul
mai multor formulare.
Toate formularele sunt vizibile simultan.

6
2.12 Aplicaii cu formulare multiple (7)

Aciuni:
1. Definirea ferestrelor i poziionarea lor, pentru fiecare
formular.
2. Stabilirea datelor partajate.
3. Implementarea trigger-ilor pentru:
Deschiderea altor formulare

Iniializarea datelor partajate din forma apelant

Utilizarea datelor partajate n formularele

deschise

7
2.12 Aplicaii cu formulare multiple (8)

Deschiderea condiional a unei forme

Exemplu:
IF ID_NULL(FIND_FORM(ORDERS)) THEN
OPEN_FORM(ORDERS);
ELSE
GO_FORM(ORDERS);
END IF;

8
2.12 Aplicaii cu formulare multiple (9)

nchiderea sesiunii

Form C Form B

Run-time
session Form A

9
2.12 Aplicaii cu formulare multiple (10)

nchiderea unui formular cu EXIT_FORM


Funcionalitatea implicit este aceeai ca n cazul
butonului Exit.
Argumentul commit_mode definete aciunea care
urmeaz s aib loc asupra modificrilor nesalvate.

ENTER;
IF :SYSTEM.FORM_STATUS = CHANGED THEN
EXIT_FORM( DO_COMMIT );
ELSE
EXIT_FORM( NO_COMMIT );
END IF;

10
2.12 Aplicaii cu formulare multiple (11)

Trigger-i utili
Trigger-ii care menin referinele i sincronizeaz datele
ntre formulare:
n forma printe:
When-Validate-Item

When-New-Record-Instance

n formele deschise: When-Create-Record


n orice form: When-Form-Navigate

11
2.12 Aplicaii cu formulare multiple (12)

Partajarea datelor ntre module


Datele pot fi transferate ntre module utiliznd:
Variabile globale
Liste de parametri
Grupuri globale de nregistrri
Variabile PL/SQL din pachete, n cadrul
bibliotecilor partajate

12
2.12 Aplicaii cu formulare multiple (13)

Legturi cu ajutorul variabilelor globale

F_EMP
Employee F_DEP
Dep_ID Department
Department_ID

GLOBAL.DEP_ID

13
2.12 Aplicaii cu formulare multiple (14)

Deschiderea unei forme cu ajutorul variabilelor globale


Exemplu:
:GLOBAL.dep_id := :BL_EMP.department_id;
OPEN_FORM(F_DEP);

Controlul trece imediat n forma F_DEP;


nu sunt procesate instruciunile care se
afl dup OPEN_FORM.
Dac argumentul activate_mode are
valoarea NO_ACTIVATE, controlul este
reinut n forma curent.
Dac nu a fost salvat nainte, tranzacia
continu.

14
2.12 Aplicaii cu formulare multiple (15)

Cereri restricionate la deschidere


When-New-Form-Instance

Execute_Query;

Pre-Query

:BL_DEP.department_id := :GLOBAL.dep_id;

15
2.12 Aplicaii cu formulare multiple (16)

Atribuirea valorilor variabilelor globale n forma deschis


DEFAULT_VALUE asigur existena variabilelor
globale.
Variabilele globale pot fi utilizate pentru a comunica
faptul c forma este deschis.
Exemplu (Pre-Form):
DEFAULT_VALUE(, GLOBAL.dep_id);

16
2.12 Aplicaii cu formulare multiple (17)

Legarea formelor cu ajutorul parametrilor


Parametrii:
Sunt obiecte ale modulului
Proprieti:
Name

Parameter Data Type

Maximum Length

Parameter Initial Value

Pot primi opional o valoare nou la runtime:

http://myhost:8889/forms/frmservlet
?form=emp.fmx&otherparams=deptno=140

17
2.12 Aplicaii cu formulare multiple (18)

Legarea cu ajutorul listelor de parametri: forma apelant


Exemplu:
DECLARE
pl_id ParamList;
pl_name VARCHAR2(10) := 'tempdata';
BEGIN
pl_id := GET_PARAMETER_LIST(pl_name);
IF ID_NULL(pl_id) THEN
1 pl_id := CREATE_PARAMETER_LIST(pl_name);
ELSE
DELETE_PARAMETER(pl_id,'deptno');
END IF;
2 ADD_PARAMETER(pl_id,'deptno',TEXT_PARAMETER,
to_char(:departments.department_id));
3 OPEN_FORM('called_param',ACTIVATE,NO_SESSION,pl_id);
END;

18
2.12 Aplicaii cu formulare multiple (19)

Legarea cu ajutorul listelor de parametri: forma apelat


Exemplu:
Forma apelat When-New-Form-Instance Trigger
IF :parameter.deptno IS NOT NULL THEN
SET_BLOCK_PROPERTY('employees',
DEFAULT_WHERE,'department_id =
'||:parameter.deptno);
SET_WINDOW_PROPERTY('window1',
TITLE,'Employees in Department
||:parameter.deptno);
END IF;
GO_BLOCK('employees');
EXECUTE_QUERY;
Crearea unui parametru Utilizarea numelui parametrului,
nform precedat de :parameter

19
2.12 Aplicaii cu formulare multiple (20)

Legarea cu ajutorul grupurilor de nregistrri globale


1. Crearea grupului de nregistrri (record group) la nivel global:
DECLARE
rg_name VARCHAR2(40) := 'LIST';
rg_id RecordGroup;
Error_Flag NUMBER;
BEGIN
rg_id := FIND_GROUP(rg_name);
IF ID_NULL(rg_id) THEN
rg_id := CREATE_GROUP_FROM_QUERY('LIST',
'Select last_name, to_char(employee_id)
from employees',GLOBAL_SCOPE);
END IF;
2. Popularea grupului de nregistrri:
Error_Flag := POPULATE_GROUP(rg_id);

3. Utilizarea grupului de nregistrri n orice form.

20
2.12 Aplicaii cu formulare multiple (21)

Legarea cu ajutorul variabilelor PL/SQL partajate


Avantaje:
Folosesc mai puin memorie dect variabilele
globale
Pot avea orice tip
Cum se folosesc:
1. Se creeaz o bibliotec PL/SQL
2. Se creeaz o specificaie de pachet cu variabile
3. Se ataeaz biblioteca mai multor forme
4. Se stabilesc valori ale variabilelor n forma
apelant
5. Se utilizeaz OPEN_FORM cu opiunea
SHARE_LIBRARY_DATA
6. Se utilizeaz variabilele n forma deschis

21
2.12 Aplicaii cu formulare multiple (22)

Legarea cu ajutorul variabilelor PL/SQL partajate

OPEN_FORM(called_lib,ACTIVATE,
NO_SESSION,SHARE_LIBRARY_DATA);

22

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