Sunteți pe pagina 1din 15

Tema Nr.

5 Aprofundarea notiunilor APEX

Partea A: Crearea unei aplicatii tip Calendar


Studentul se va loga in APEX , folosind workspace-ul, username-ul si parola de la laboratorul 3. Se va realiza o aplicatie pornind de la un fisier excel: Exemplu.csv Fisierul excel se va crea de catre student si va contine campuri text (de exemplu: nume, adresa, eveniment, etc), campuri de tip numeric (de exemplu: CNP, numar de telefon, varsta, etc) si un camp de tip data calendaristica (de exemplu: 10-05-2010). Primul rand din fisierul excel va contine denumirile coloanelor (Nume, Adresa, etc...), urmatoarele continand valorile efective.

Cu ajutorul wizard-ului se va face upload-ul datelor din format .csv in baza de date si se va realiza o tabela pe baza acestora.

Se alege fisierul .csv dorit si se seteaza separatorul folosit (in general ;).

Se seteaza tipurile de date asociate coloanelor, precum si dimensiunile acestora. In cazurile din viata reala, cand se incarca fisiere mari, se pot selecta doar anumite coloane sa fie uploadate.

Se seteaza etichetele ce vor fi afisate in aplicatie, corespunzatoare numelor coloanelor. (Acestea pot fi identice cu numele coloanelor sau pot fi diferite)
3

Se seteaza modul de creare al aplicatiei: Read and Write si tipul de raport implementat: Interactive. Mai apoi se alege o tema de design.

Dupa apasarea butonului Create si rularea aplicatiei, se va obtine un ecran similar cu cel de mai jos.

In cadrul Paginii 1 din aplicatie se alege crearea unei noi regiuni unde se va afisa calendarul. In wizardul de creare a unei noi regiuni se alege Calendar.

Se ofera un titlu regiunii si se alege tabela din baza de date de unde vor fi extrase informatiile ce se doresc afisate in calendar. In cazul de fata: tabela Agenda.

Se alege care este coloana de tip data si care este coloana ce va fi afisata in interiorul calendarului. Dupa crearea regiunii si rularea aplicatiei, se va obtine ceva similar cu imaginea de mai jos.

Pasul urmator este transformarea evenimentelor afisate in calendar in linkuri catre pagina de update a aplicatiei. Pentru aceasta se va edita regiunea calendar creata anterior.

Setati la Column Link: Target is a URL si apoi inserati la URL Target: f?p=107:3:6729514024098769::::P3_ID:#ID# Linkul de mai sus trebuie customizat in functie de aplicatia fiecarui student. Pentru identificarea acestui link se poate accesa una din intrarile din raport pentru updatare (aplicatia va apela pagina de update a informatiilor din raport, transmitand ca parametru id-ul inregistrarii respective). Se va copia din URL-ul afisat in bara de adrese a browserului tot de la f?p pana la _ID:. P3_ID in linkul de mai sus reprezinta denumirea campului din formularul paginii 3 corespunzator coloanei ID (primary key in baza de date, camp ascuns in aplicatie) din tabela bazei de date de unde sunt preluate datele. #ID# este un string de subtitutie
10

ce transmite ca parametru valoarea efectiva a id-ului inregistrarii pe care s-a facut click, astfel ca pagina afisata va avea formularul completat cu detaliile inregistrarii cu id-ul #ID#. Dati Apply Changes si apoi Run.

In acest moment fiecare intrare din calendar apare sub forma unui link, pe care daca se da click, user-ul este redirectionat catre pagina 3 de update, transmitandu-se ca parametru id-ul intrarii respective. Astfel va rezulta, pentru apasarea link-ului Parapanta din figura de mai sus:

11

12

Partea B: Folosirea SQL Workshop pentru manipularea obiectelor bazei de date


1. Se vor crea noi tabele din sectiunea SQL Workshop -> Object Browser din cadrul APEX. 2. Se vor crea triggeri asupra tabelei create. Un exemplu de trigger ar fi verificarea la update/insert a datelor introduse pentru o constrangere de tipul: numarul de telefon sa nu aiba mai mult de 10 cifre, popularea automata la insert a coloanei primary key a tabelei bazata pe un sequence deja creat in prealabil, etc. Model de trigger (scop strict orientativ):
create or replace trigger "BIU_REG_USER" BEFORE insert or update on "REG_USER" for each row begin :NEW."USERNAME" := lower(:NEW."USERNAME"); if :NEW."ID" is null then select "SF_REG_USER_SEQ".nextval into :NEW."ID" from dual; end if; if :NEW."CREATED" is null then :NEW."CREATED" := sysdate; end if; :NEW."UPDATED" := sysdate; if :NEW."TEMP_PWD" is not null then :NEW."PASSWORD" := custom_hash(:NEW."USERNAME",:NEW."TEMP_PWD"); :NEW."TEMP_PWD" := null; end if; end;

Exemplul de mai sus creeaza un trigger care realizeaza anumite constrangeri inainte de inserarea/actualizarea unei inregistrari intr-o tabela de useri (REG_USER) ai unei aplicatii. Constrangerile sunt: Modificarea username-ului introdus in litere mici lower(:NEW.USERNAME)
13

Verificarea campului ID (primary key in tabela din baza de date) daca acesta este null (in cazul in care se introduce un user nou) atunci se va completa cu valoarea urmatoare din secventiatorul SF_REG_USER_SEQ.nextval Completarea campurilor Created si Updated cu data calendaristica a zilei curente in functie de caz (daca se introduce un user nou sau se actualizeaza unul deja existent) Se realizeaza o criptare a parolei introduse in formular pentru inserarea valorii criptate in baza de date. (Masuri de securitate) Pentru mai multe detalii despre folosirea SQL Workshop se pot consulta urmatoarele linkuri:
http://www.oracle.com/technology/obe/apex/obe30/apexdev30.htm http://www.oracle.com/technology/obe/11gr2_db_prod/appdev/apex/ apexstart/apexstart_a/apexstart_a_oow.htm

14

Partea C: Definirea si vizualizarea campurilor de tip BLOB cu ajutorul APEX


Se va folosi ca reper tutorialul: http://www.oracle.com/technology/obe/apex/apex31nf/apex31blob.ht m#t1 Se va descarca arhiva blob.zip mentionata in tutorial si se vor customiza scripturile de modificare a tabelelor, in functie de tabelele deja existente in schema/aplicatia APEX a studentului. Spre exemplu, pentru modificarea tabelei Agende folosita pentru crearea calendarului descris mai sus, scriptul va arata:
alter table "AGENDE" add ("PHOTO" BLOB NULL, "FILENAME" VARCHAR2(255) NULL, "MIMETYPE" VARCHAR2(255) NULL, "LAST_UPDATE_DATE" DATE NULL) /

Tutorialul are doar rol orientativ, studentul urmand sa customizeze toate setarile in functie de tabele existente in schema sa si de aplicatia APEX dezvoltata.

15

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