CREAREA FORMATELOR
Continutul acestui capitol
Acest capitol prezinta interfata SQL*Forms Designer si mecanismul
implicit de bloc al SQL*Forms prevazut pentru crearea rapida a unui format
bazat pe date de dictionar.
Subiectele discutate includ:
- Pasii desenarea unui format
- Meniul principal SQL*Forms (Design)
- Sistemul Help On-line
- Crearea unui bloc implicit
- Generarea si executia unui format
- Construirea unui format master/detail cu legare automata a
blocurilor.
PROCESUL CONSTRUIRII FORMATELOR
- Pasii de urmat
- Intelegerea scopului formatului
- Stabilirea tabelelor de folosit:
- tabele de baza/views
- tabele lookup
- Definirea blocurilor
- Construirea formatului implicit
- Crearea altor campuri suplimentare
- Redefinirea campurilor existente
- Marirea vizibilitatii formatului
- Definirea trigger-elor
- Documentati-va pe parcurs
- Generati si testati frecvent
PROCESUL CONSTRUIRII FORMATELOR
Ce face Designer-ul ?
Cineva care creeaza o baza de date si scrie specificatii pentru module
poate fi definit drept un designer. In contextul SQL*Forms un designer poate
fi si persoana care construieste formate.
Pasii de desenare:
In continuare sunt enumerati pasii pe care trebuie sa-i urmati, ca
designer,in desenarea si construirea de formate.
- Clarificati-va obiectivele. Ce doriti sa realizeze acest format ?
- Determinati tabelele folosite in format.
- Determinati ce blocuri va contine formatul. Determinati ordinea de
dispunere a blocurilor in format. Luati in consideratie ce
operatii va avea nevoie sa faca operatorul mai intai sau mai
des.
- Folositi posibilitatea de bloc implicit pentru a crea o varianta
bruta a formatului. (Cap. 3)
- Creati celelalte campuri suplimentare necesare in format. (Cap. 7)
- Modificati si redimensionati campurile implicite. Adaugati casute de
optiune si suplimentati valorile implicite, listele de valori
si alte criterii ale campului. (Cap. 4 si 7)
- Mariti vizibilitatea formatului adaugand text si subliniind anumite
parti ale formatului prin linii si cutii. (Cap. 4)
- Definiti trigger-ele. Un trigger este un set de comenzi ce sunt
executate de un anumit eveniment atunci cand este rulat
formatul. (De la Cap. 8)
Documentati-va in legatura cu fiecare din pasii de mai sus. Detalierea
pasilor 1 - 3 a fost facuta in Cap. 1. Ceilalti pasi sunt prezentati in
capitolele indicate inter paranteze.
De-a lungul procesului construirii formatului,generati si testati frecvent.
NAVIGAREA PRIN INTERFATA DESIGNER-ULUI: MENIUL PRINCIPAL AL
SQL*FORMS
- Meniurile sunt pricipala metoda de navigare
- Optiunile meniului va permit sa determinati:
- Ce actiune sa urmati
- Ce element sa mutati
- Optiunile active sunt iluminate
- Selectati optiunea folosind:
- Selectia majusculei
- [Select] pentru optiunea dorita
- Mouse-ul
Logarea in SQL*Forms Designer
Logarea se realizeza executand urmatoarea comanda din sistemul de operare:
sqlforms [ username/password ]
Navigarea prin interfata Designer-ului:
Meniul principal SQL*Forms
In SQL*Forms toate obiectele pot fi accesate direct din meniul principal
care afiseaza in partea de sus a ecranului, cu selectiile "active" scrise
bold:
_Action_foRm_Block_Field_Trigger_Procedure_Image_Help_Options_
Majoritatea optiunilor meniului au submeniuri; optiunile Trigger, Procedure
si Options nu au submeniuri. Daca selectati una dintre aceste optiuni sunteti
trimisi direct intr-un alt ecran.
Submeniurile pentru celelalte optiuni sunt prezentate mai jos:
Action foRm Block Field Image Help
--------------------------------------------------------------------------
New Modify Modify Mofify Modify Help system
Open Trigger Trigger Trigger Painter Show keys
----- Default Tables
Copy Columns
Rename List forms
Delete Blocks
Load Fields
Print doc >
-----------
Generate
Execute
--------
Save
Form security
Quit
SISTEMUL HELP ON - LINE
- Senzitiv la context
- Ofera informatii despre navigarea prin interfata SQL*Forms (Design)
- Diverse optiuni maresc accesabilitatea informatiei
Sistemul Help On-line
- Sistemul Help On-line este senzitiv la context. Puteti obtine oricand
informatii referitoare la localizarea curenta in interfata apasand
[Help]. De asemenea, puteti accesa direct nivelul de inceput
al sistemului de help selectand optiunea Help System din meniul Help.
Daca sistemul Help este activ, apasati [Menu] pentru a accesa
meniul principal al helpului.
- Sistemul Help On-line ofera informatii despre navigarea prin
interfata de desenare. Aceste informatii nu se intalnesc in
documentatie.
- Sistemul Help are o varietate de optiuni ce maresc accesabilitatea
informatiei:
- Index
-
Indexul este aranjat in ordine alfabetica, pe subiecte
si este structurat cu intrari principale, sub-intrari
si referinte. Pentru a selecta un subiect din lista,
folositi tastele directionale pentru pozitionare si
apasati [Select].
- Content
-
Continutul listeaza subiectele principale si secundare
ce sunt discutate in sistemul de help. Pentru a
selecta un subiect din lista, se procedeaza ca mai sus
- Cuvinte
subliniate
-
Pe orice ecran help, cuvintele iluminate reprezinta
subiecte legate de subiectul curent. Selectarea unui
cuvant se realizeaza ca mai sus.
- Bookmark
-
Bookmark permite stabilirea unui semn in sistemul de
help astfel incat sa te poti intoarce oricand in acel
punct, apasand [Bookmark].
- History
-
Tabloul History afiseaza o lista a tuturor subiectelor
pe care le-ati vizitat in timpul sesiunii curente de
lucru.
- Retrace
-
Permite sa se revina secvential prin toate ecranele
help vizitate anterior. Pentru a vedea ecranul vizitat
inaintea celui curent, alegeti Retrace din meniu.
- Next si
Previous
-
Va pozitioneaza pe subiectul urmator, respectiv,
anterior.
CONSTRUIREA UNUI FORMAT IMPLICIT
- Creati un format nou
- Creati unul sau mai multe blocuri implicite
- Generati o versiune executabila
- Executati formatul
- Testati formatul
Crearea unui format nou
- Din meniul Action selectati optiunea New.
Va apare o casuta de dialog New Form.(vezi mai jos)
- Scrieti numele noului format in campul Name. Apasati [ACCEPT].
-------------------------------------------------
| New Form |
| --------------------------------- |
| Name: | CUSTOMER | |
| --------------------------------- |
| |
-------------------------------------------------
Regulile de nume pentru obiectele SQL*Forms sunt aceleasi ca
pentru oricare alte obiecte ORACLE; acestea fiind, pana la 30 de caractere,
incepand cu o litera si continand orice combinatie de litere, numere si
caractere speciale ($, #, @ si _). Nu trebuie duplicat numele unui alt
obiect de acelasi tip sau folosit un cuvant rezervat ORACLE sau SQL*Forms.
POSIBILITATEA DE BLOC IMPLICIT
FORMATUL DEFAULT BLOCK
_________________________________________________________________________
| Action foRm Block Field Trigger Procedure Image Help Options |
| --------------------- Default Block -------------------- |
| ___________________________________________________________________ |
| | Block Name: ........................ | |
| | Base Table: | |
| |-------------------------------------------------------------------| |
| | Sequence Number: 1 Select Columns [ ] Use Constrains | |
| | Records Displayed: 1 Page Number: 1 Base Line: 1 | |
| |-------------------------------------------------------------------| |
| | Master Block: [ ] Delete Details | |
| |-------------------------------------------------------------------| |
| | ----------------------- Join Condition --------------------- | |
| | | |
| | | |
| | | |
| | | |
| |___________________________________________________________________| |
| Enter the name of the block |
| Frm: DEMO Blk: Fld: Trg: Insa |
| |
|_________________________________________________________________________|
Posibilitatea de bloc implicit
Acesta este cel mai rapid si cel mai usor mod de a crea blocuri. Cu un
minim de intrari din partea ta, SQL*Forms construieste un bloc perfect
functional folosind definitii stocate in Data Dictionary. Dupa ce blocul
este creat, puteti schimba orice caracteristica dorita.
Formatul de blocuri implicite
Pentru a crea un bloc implicit folositi formatul Default Block. In
interfata designer-ului, un format este o pagina ce defineste un obiect
SQL*Forms.
Cum se creeaza un bloc implicit ?
- Din meniul Block selectati optiunea Default.
- Completati formatul Default Block.
Vi se cere sa specificati:
- Block Name
-
folositi o versiune prescurtata a numelui
tabelei de baza sau o referire a blocului
standard
- Base Table
-
se pune la dispozitie o lista de valori
Celelelalte caracteristici cerute ale blocului sunt urmatoarele:
- Sequence Number
-
determina ordinea intrarii in bloc a cursorului
si se poate modifica ulterior
- Select Columns
-
implicit sunt selectate toate coloanele;apasati
[Select] pentru a afisa lista. Pentru a
exclude coloana,va pozitionati pe numele ei si
apasati [Select]
- Record Displayed
-
implicit 1; modificati daca blocul are mai
multe linii
- Page Number
-
identifica pagina pe care vor fi localizate
initial toate campurile blocului
- Base Line
-
textul blocului incepe pe linia Base Line+1
Campul Use Constraints:
In formatul Default Block exista o casuta de optiune Use Constraints pe
care o vom ignora momentan. Daca selectati aceasta optiune, SQL*Forms va
genera trigger-e pentru apelarea rutinelor de constrangere specificate
pentru tabela de baza, in Data Dictionary.
GENERAREA SI EXECUTAREA FORMATULUI
Aria de lucru SQL*Forms
______________________________
| |
------------| GENERARE |
| | |
| __________\| INCARCARE SAVE |-----------
| | /| | |
| | ------| EXECUTARE OPEN |/__ |
| | | |______________________________|\ | |
\|/| | | \|/
___| | | _________
/ \ | | / DB \
|\____/| | | |\_________/|
| | | | | SQL*Forms |
| .INP | | |__| Base |
\_____/ | | Tables |
| | \__________/
| |
\|/_ |
/ \ |
|\____/| |
| |/_| RUNFORM
| .FRM |\
\____/
Generarea si executarea formatului
Generarea formatului
Generarea unui format converteste definitiile formatului intr-un
fisier ce poate fi rulat de SQL*Forms. Un format trebuie generat inainte
ca oricine sa-l poata rula sau testa. Formatul trebuie generat de fiecare
data cand i se fac modificari; altfel s-ar putea intampla sa rulati o
versiune veche cu acelasi nume.
De fapt, generarea scrie formatul in doua fisiere diferite: un fisier
sursa cu extensia .INP si un fisier executabil cu extensia .FRM.
Cum se genereaza un format:
- Din meniul Action selectati optiunea Generate.
Va apare casuta de dialog Generate Form. Campurile Name si File sunt
setate implicit cu numele formatului curent.
- Scrieti numele formatului ce doriti sa-l generati si apasati
[Next Field].
- Scrieti numele fisierului in care doriti sa generati formatul si apasati
[Accept].
Executarea formatului
Puteti executa un format fara a iesi in sistemul de operare. SQL*Forms
(Design) invoca SQL*Forms (Runform) si ruleaza formatul indicat. La iesirea
din format va reintoarceti in meniul principal al SQL*Forms (Design).
Cum se executa un format:
- Din meniul Action selectati optiunea Execute.
Va apare casuata de dialog Execute Form. Campul Name este setat implicit
cu numele formatului curent.
- Scrieti numele formatului ce doriti sa-l rulati.
- Apasati [Accept].
CREAREA UNUI FORMAT MASTER/DETAIL CU LEGARE AUTOMATA A BLOCURILOR
- Mai intai se creeaza blocul master
- Se creeaza blocul detail
- se introduce numele blocului
- se indica detaliile de sters
- se specifica conditiile de fuzionare
- Exemplu:
_________________________________________________________________________
| |
| Action foRm Block Field Trigger Procedure Image Help Options |
| -------------------------- Default Block ---------------------------- |
| ___________________________________________________________________ |
| | Block Name: EMP | |
| | Base Table: EMP | |
| |-------------------------------------------------------------------| |
| | Sequence Number: 1 Select Columns [ ] Use Constrains | |
| | Records Displayed: 5 Page Number: 1 Base Line: 1 | |
| |-------------------------------------------------------------------| |
| | Master Block: DEPT [ ] Delete Details | |
| |-------------------------------------------------------------------| |
| | ----------------------- Join Condition --------------------- | |
| | DEPTNO | |
| | | |
| | | |
| | | |
| |___________________________________________________________________| |
| |
| |
|_________________________________________________________________________|
Formatul implicit master/detail
O caracteristica puternica a sistemului de bloc implicit este
abilitatea de definire a unui bloc ce este "legat" la un bloc master.
Ce reprezinta legarea blocurilor ?
Daca specificati ca un block sa fie legat la un bloc master, SQL*Forms
va genera trigger-ele si informatiile de control necesare pentru realizarea
acestui lucru:
- Atunci cand o inregistrare este afisata in blocul master, inregistrarile
referite de ea din blocul detail sunt in mod automat afisate.
- Cand blocul master este sters (curatat), si blocul detail este sters.
- Cand operatorul incearca sa stearga o inregistrare din blocul master
- ori SQL*Forms va refuza sa stearga inregistrarea master daca mai exista
inregistrari detail,
- ori SQL*Forms va sterge in mod automat atat inregistrarea master, cat
si inregistrarile detail referite.
Crearea unui format master/detail cu legare automata a blocurilor
Mai intai trebuie creat blocul master. Apoi folositi optiunea blocului
implicit pentru crearea blocului detail, asigurandu-va ca ati specificat
atributele master-detail.
Atribute Descriere
-------- ---------
Master Block Name specifica numele blocului master
Delete Details specifica daca inregistrarile detail vor fi sau nu
sterse atunci cand inregistrarea master pe care o
refera este stearsa
Join Condition un predicat SQL care specifica modul de fuzionare
a blocurilor master si detail. Daca blocurile
fuzioneaza printr-un camp comun, se specifica doar
numele acelui camp.
Conditii de fuzionare valabile:
DEPTNO
BLOCK1.ITEMNO = BLOCK2.ITEM_ID
EMP.DEPTNO = DEPT.DEPTNO
RELATIILE MASTER/DETAIL
- Trigger-ele si alte atribute sunt generate automat
- Blocul detail poate fi bloc master pentru un alt bloc
- Un bloc master poate avea mai mult de un bloc detail
- Restrictii:
- trebuie sa folositi optiunea de bloc implicit pentru blocul detail
- atributele master/detail nu sunt considerate caracteristici ale
blocurilor
- un bloc detail are doar un singur bloc master
Relatia master/detail
Atunci cand creati blocul detail, SQL*Forms genereaza in mod automat
trigger-ele si atributele necesare pentru mentinerea relatiei. Trigger-ele si
atribulele pot fi editate.
Un bloc detail poate fi in acelasi timp bloc master
Un bloc detail poate fi master-ul unui alt bloc. Daca faceti acest
lucru, trebuie sa faceti mici modificari trigger-elor blocului master original.
Trebuie sa modificati trigger-ele care apeleaza si sterg blocul detail astfel
incat sa apeleze si sa stearga al doilea bloc detail.
Un master poate avea mai multe blocuri detail
Pot fi mai mult de un bloc detail pentru un bloc master. In acest caz,
SQL*Forms corecteaza trigger-ele existente pentru a legarea la noul bloc
(noile blocuri).
Restrictii master/detail
Exista cateva restrictii privind relatia master/detail:
- Fereastra Default Block este singurul mod de creare a legarii
automate a blocurilor master-slave.
- Atributele master/detail nu apar in tabela Block Definition; de
aceea, ele nu pot fi modificate dupa crearea blocului implicit
decat prin rescrierea trigerr-elor.
- Nu poate exista decat un bloc master pentru un bloc detail.
EXERCITII
Exercitiul A: Crearea unui format de un bloc.
- Logati-va in SQL*Forms (Design) executand din sistemul de
operare:
sqlforms username/password
- Va apare meniul principal SQL*Forms. Creati un nou format CUSTOMER.
- Creati un bloc:
- Apasati B (Block) si D (Default).
- Scrieti CUS drept numele blocului si apasati [Next Field].
- Apasati [List of Values] pentru a vedea ce tabele puteti accesa.
Alegeti CUS.
- Lasati restul la valorile implicite, pentru moment.
- Apasati [Accept]pentru a ve reintoarce la meniul principal.
Apasand [Cancel] renuntati la crearea formatului.
- Generati formatul in aria de lucru pentru a crea o versiune executabila
- Alegeti optiunea Generate din meniul Action. Numele formatului si
al fisierului vor apare intr-o casuta de dialog. Apasati
[Accept].
- Executati si testeti formatul.
- Alegeti optiunea Execute din meniul Action. Un nume de fisier va
apare intr-o casuta de dialog. Apasati [Accept].
- Odata formatul activ, testati-l executand cateva chestionare.
- Observati anumite caracteristici al formatului implicit:
- Numele blocului este afisat ca titlu si numele coloanelor bazei
de date sunt afisate ca prompturi pentru campuri.
- CUSTID are lungime de 8 caractere, desi e definit ca NUMBER(6)
in baza de date. SQL*Forms mareste toate campurile numerice cu
2 pentru a se putea scrie semnul, punctul zecimal si simboluri
de moneda.
- Campurile numerice sunt aliniate stanga.
Exercitiul B: Crearea unui format implicit Master/Detail
- Creati un format nou numit ORDER.Alegeti Action/New. Raspundenti Yes
la intrebarea 'Modified form will be lost. Continue?'
- Folosind optiunea Default in submeniul Block, creati un bloc numit
ORD, bazat pe tabela ORD. Deselectati coloana MAXLINE. Lasati celelalte
caracteristici ale bloculuii la valorile implicite.
- Creati un al doilea bloc numit ITEM, bazat pe tabela ITEM. Acest bloc
trebuie sa:
- afiseze 3 inregistrari
- aiba ca bloc Master, blocul ORD, legat prin coloana ORDID.
- Generati si executati formatul.
- Executati un query global pentru a testa leagrea blocurilor. Defilati
peste cateva inregistrari ordonate.
- Iesiti din format. Ati revenit in interfata SQL*Forms Designer.
Exercitiul C: Folosirea sistemului Help On-line
SOLUTII
Exercitiul A.
3.
_________________________________________________________________________
| |
| -------------------------- Default Block ---------------------------- |
| ___________________________________________________________________ |
| | Block Name: CUS | |
| | Base Table: CUSTOMER | |
| |-------------------------------------------------------------------| |
| | Sequence Number: 1 Select Columns [ ] Use Constrains | |
| | Records Displayed: 1 Page Number: 1 Base Line: 1 | |
| |-------------------------------------------------------------------| |
| | Master Block: [ ] Delete Details | |
| |-------------------------------------------------------------------| |
| | ----------------------- Join Condition --------------------- | |
| | | |
| | | |
| | | |
| | | |
| |___________________________________________________________________| |
| Enter the name of this block's base |
| Frm: DEMO Blk: Fld: Trg: List Ins |
|_________________________________________________________________________|
Exercitiul B
2.
_________________________________________________________________________
| |
| -------------------------- Default Block ---------------------------- |
| ___________________________________________________________________ |
| | Block Name: ORD | |
| | Base Table: ORD | |
| |-------------------------------------------------------------------| |
| | Sequence Number: 1 Select Columns [ ] Use Constrains | |
| | Records Displayed: 1 Page Number: 3 Base Line: 1 | |
| |-------------------------------------------------------------------| |
| | Master Block: [ ] Delete Details | |
| |-------------------------------------------------------------------| |
| | ----------------------- Join Condition --------------------- | |
| | | |
| | | |
| | | |
| | | |
| |___________________________________________________________________| |
| |
| |
|_________________________________________________________________________|
_________________________________________________________________________
| |
| -------------------------- Default Block ---------------------------- |
| ___________________________________________________________________ |
| | Block Name: ITEM | |
| | Base Table: ITEM | |
| |-------------------------------------------------------------------| |
| | Sequence Number: 2 Select Columns [ ] Use Constrains | |
| | Records Displayed: 3 Page Number: 3 Base Line: 9 | |
| |-------------------------------------------------------------------| |
| | Master Block: ORD [ ] Delete Details | |
| |-------------------------------------------------------------------| |
| | ----------------------- Join Condition --------------------- | |
| | ORDID | |
| | | |
| | | |
| | | |
| |___________________________________________________________________| |
| |
| |
|_________________________________________________________________________|