Construirea unei Aplicatii Simple
Scopurile acestui capitol
Aceasta sectiune este proiectata pentru a oferi o intelegere a
pasilor necesari pentru construirea unei aplicatii cu meniuri simple folosind
SQL*Menu (Design). In timpul acestui capitol se afla exercitii pentru
dumneavoastra de creere a unei aplicatii cu meniuri specificata in sectiunea
anterioara.
Subiectele acoperite in aceasta sectiune sunt:
- Pornirea si iesirea din SQL*Menu (Design).
- Definirea aplicatiei.
- Definirea unui meniu.
- Definirea unui articol din meniu.
- Acordarea accesului cu rol la articolele din meniu.
- Salvarea aplicatiei la baza de date.
- Generarea aplicatiei cu meniu.
- Rularea aplicatiei.
- Definirea parametrilor de substituire.
- SQL*Menu proceduri impachetate.
- Definirea procedurilor PL/SQL.
- Copierea sau referentierea obiectelor.
- Producerea documentatiei.
Relatii intre elementele meniului
+--------------------------------------------------------+
| +-----------+ |
| Aplicatie | ORDMENU |\ |
| +-----+-----+ \ |
| | \ Numele TREBUIE |
| | / sa fie identice |
| | / |
| +-----+-----+/ |
| Meniu Principal | ORDMENU | |
| +-----+-----+ |
| | |
| +---------------+---------------+ |
| | | | |
| +-----+-----+ +-----+-----+ | |
| | FORMS | | REPORTS | EXIT |
| +-----^-----+ +-----^-----+ ^ |
| | | | |
| Definita de doua ori: Definit ca articol |
| ca Meniu si ca Articol |
+--------------------------------------------------------+
Fig 25.1 Relatiile intre obiectele meniu
Diagrama de deasupra arata relatiile dintre diferite elemente ale
oricarei aplicatii cu meniuri. In timp ce construiti aplicatia
dumneavoastra cu meniuri, cateva puncte trebuie remarcate:
- Principalul meniu trebuie sa aiba acelasi nume ca si
aplicatia.
- Submeniurile sunt definite de doua ori:
- ca un articol meniu in meniul parinte,
- ca un meniu.
Pornirea si iesirea din SQL*Menu (Design)
Pornirea SQL*Menu (Design)
De la promptul sistemului de operare:
- Tipariti sqlmenu si tastati [RETURN].
- Introduceti numele dvs. de utilizator ORACLE si tastati [RETURN].
- Introduceti parola dvs. ORACLE si tastati [RETURN].
Alternativ puteti introduce sqlmenu nume_utilizator/parola si
tastati [RETURN].
Meniul principal al interfetei de proiectare va apare.
Iesirea din SQL*Menu (Design)
- In meniul principal al interfatei de proiectare selectati Action.
- Selectati Quit din submeniul Action.
Daca ati modificat aplicatia curenta, o casuta de avertizare va
aparea dandu-va sansa de a ramane in interfata de proiectare si de
a salva modificarile inainte de a iesi. Nu este suficient doar sa
va generati aplicatia - TREBUIE sa va salvati orice modificare pe
care doriti sa o pastrati.
Informatii de ajutor
Help-ul disponibil in SQL*Menu V5.0 este identic cu cel disponibil
in SQL*Forms V3.0, adica:
- Indicii si erori pe linia de mesaje.
- Ajutor pentru tastele functionale.
- Sistem de help senzitiv la context sau cu acces general.
Definirea unei aplicatii
+-------------------------------------------------------------------+
| Action Menu Procedure Help Options |
+-------------------------Application Definition--------------------+
| |
| |
| +-------------------------------------------------------------+ |
| | Short Name: ORDMENU | |
| | File Name: ORDMENU | |
| | Creation Date: 12-JUN-90 | |
| | Creator: BADDISON | |
| | Version Number: 1 | |
| | Last Release Date: | |
| | Directory: [train.sm5.build] | |
| | Identification: SQL*Menu V5.0 Course Demonstration | |
| +-------------------------------------------------------------+ |
| |
| |
| |
|Short name which will appear on application menu bar. |
|App: ORDMENU Mnu: BGM Rep |
| |
+-------------------------------------------------------------------+
Fig 25.2 Forma de definire a aplicatiei
Tabelul de deasupra arata elementele unei forme de definire a
aplicatiei.
Element Instructiuni
------- ------------
SHORT NAME Introduceti un nume scurt care urmeaza a fi
folosit in meniuri tip bar si pull-down.
Implicit este numele aplicatiei trunchiat
la 15 caractere.
FILE NAME Numele folosit pentru fisierele de biblioteca
ale aplicatiei. SQL*Menu adauga extensia .DNM.
Numele implicit al fisierului este numele
aplicatiei.
CREATION DATE Data la care aplicatia a fost creata, in
format ZZ-LUN-AA. Implicit este data curenta.
CREATOR Numele creatorului meniului, implicit fiind
numele de logare al utilizatorului.
VERSION NUMBER Numarul versiunii aplicatiei.
LAST RELEASE DATE Data ultimei revizuiri a aplicatiei in format
ZZ-LUN-AA.
DIRECTORY Calea directorului unde se afla fisierele de
biblioteca. Implicit este directorul curent
al utilizatorului.
IDENTIFICATION Descrierea aplicatiei (40 de caractere).
Implicit este numele aplicatiei. Aceasta
apare in meniul aplicatiei sau in linia de
mesaj in meniurile pull-down sau de tip bar,
sau alaturi de numarul aplicatiei in meniurile
de tip full-screen.
Crearea unei aplicatii noi
Urmatorii pasi descriu cum sa creati o aplicatie cu meniuri:
- In meniul principal selectati Action.
- Selectati New din submeniul Action. Cutia de dialog
New Menu Application va apare.
- Introduceti numele noii aplicatii. Acest nume trebuie sa fie unic.
Pentru a afisa o lista a aplicatilor existente in baza de date
apasati [LIST].
- Apasati [ACCEPT] pentru a crea o noua aplicatie.
Modificarea definitiei unei aplicatii
Pentru a modifica definitia aplicatiei:
- In meniul principal selectati Menu.
- Selectati Application din submeniul Menu.
- Pentru a schimba informatia aplicatiei introduceti noile valori
in campuri si apasati [ACCEPT]. SQL*Menu se va intoarce apoi la
meniul principal.
Modificarea unei aplicatii existente
Odata ce o aplicatie a fost salvata in baza de date, ea poate fi
deschisa folosind Open din submeniul Action, iar apoi modificata ca
mai sus.
Definirea unui meniu
+-------------------------------------------------------------------+
| Action Menu Procedure Help Options |
+--------------------------------Menu Definition--------------------+
+----------------------------------------------------------------+ |
| Menu Name: ORDMENU | |
| Title: Sales Order Application | |
| Subtitle: A Sample Menu Application | |
| Bottom title:Summit Sporting Goods | |
+----------------------------------------------------------------+ |
| - - - - - - - - - - - - - - - - Purpose - - - - - - - - - - - + |
| The orders menu is the main menu ............. | |
| | |
| | |
| | |
+----------------------------------------------------------------+ |
|Enter the name of the menu. |
|App: ORDMENU Mnu: BGM Rep |
+-------------------------------------------------------------------+
Fig 25.3 Forma de definire a meniului
Tabelul de deasupra arata elementele unei forme de definire a
meniului.
Element Instructiuni
------- ------------
MENU NAME Numele meniului (max. 30 de caractere).
Acest nume apare pe linia de stare si este
obligatoriu.
TITLE Titlu (max. 40 de caractere). Folosit in
bara de titlu, in ecrane full-screen. Acest
camp este obligatoriu.
SUBTITLE Subtitlu (max. 40 de caractere), folosit in
in meniuri full-screen. Acest camp este
obligatoriu.
BOTTOM TITLE Titlu de jos (max. 72 de caractere). Acest
text apare deasupra liniei de mesaj doar in
meniuri full-screen. Acest camp este optional.
PURPOSE Descrie scopul acestui meniu. Folositor pentru
comentariile constructorului si in scopuri de
documentare.
Crearea unui meniu
Urmatorii pasi descriu cum sa creati definti un meniu:
- In meniul principal selectati Menu.
- Selectati Menu din submeniul Menu. Forma de definire a meniului
sau o tabela intinsa vor apare.
- Daca meniul deja exista apasati [INSERT RECORD] pentru a
crea o inregistrare goala pentru noul meniu.
- Introduceti valorile relevante in campuri asa cum s-a detaliat in
tabela de elemente.
- Pentru a crea un alt meniu apasati [INSERT RECORD] si
completati noua inregistrare.
- Pentru a sterge un meniu pozitionati-va pe acea inregistrare si
apasati [DELETE RECORD].
- Apasati [ACCEPT] cand ati terminat definirea meniurilor pentru
aplicatie.
Principalul meniu pentru o aplicatie trbuie sa aiba acelasi nume ca
aplicatia.
Crearea unui meniu de fundal
Pentru a crea un meniu de fundal urmati pasii de deasupra, dand
meniului numele BGM. Fiecare aplicatie poate avea doar un meniu de
fundal.
Definirea unui articol din meniu.
+-------------------------------------------------------------------+
| Action Menu Procedure Help Options |
+--------------------------------Item Definition--------------------+
+----------------------------------------------------------------+ |
| Item: 2 Command Type: 1 Grant Role Access | |
+----------------------------------------------------------------+ |
| Item Text: | |
| Display the Utilities menu | |
| Short Item Name: Utilities [X] Display without Privilege | |
+----------------------------------------------------------------+ |
| - - - - - - - - - - - - - Command Line - - - - - - - - - - - - + |
| utilities | |
| | |
+----------------------------------------------------------------+ |
| - - - - - - - - - - - - - - Help Text - - - - - - - - - - - - + |
| This item goes ......... | |
| | |
+----------------------------------------------------------------+ |
|Enter the item number for this item. |
|App: ORDMENU Mnu: ORDMENU Rep |
| |
+-------------------------------------------------------------------+
Fig 25.4 Forma de deifinre a articolelor din meniu
Tabelul de deasupra arata elementele unei forme de definire a
meniului.
Element Instructiuni
------- ------------
ITEM Specifica ordinea de afisare.
COMMAND TYPE Numarul pentru tipul de comanda din linia de
comanda.
GRANT ROLE ACCES Selectand aceasta se va afisa fereastra
pentru rolul articolului. Rolurile reprezinta
accese date articolelor de meniu prezente.
ITEM TEXT Descriere (max. 70 de caractere). Afisat ca
un indiciu pentru meniurile pull-down si de
tip bar si langa numarul articolului in
ecranele tip full-screen.
SHORT ITEM NAME Descriere (max. 15 caractere). Apare ca un
articol de meniu in ecranele pull-down sau
de tip bar.
DISPLAY WITHOUT Aceasta va afisa articolul utilizatorilor
PRIVILEGE carora nu li se permite sa-l foloseasca.
Aceste articole nu vor fi evidentiate.
Implicit este ca operatorul sa nu vada
articole nedisponibile.
COMMAND LINE Aici se introduce un nume de meniu, macro sau
comanda. Tipul comenzii trebuie sa se
potriveasca cu cel specificat in COMMAND TYPE.
HELP TEXT Apare daca se apasa [HELP] atunci cand
cursorul este pozitionat pe articol.
Definirea unui articol din meniu
Inainte de definirea unui articol din meniu, meniul care contine
articolul trebuie sa fie meniul curent. Pasii urmatori descriu
cum se definesc articole de meniu.
- In meniul principal selectati Menu.
- Selecati Menu din submeniul Menu.
- Folositi [UP] sau [DOWN] pentru a va pozitiona pe meniul pe care
vreti sa-l faceti curent.
- Apasati [ZOOM IN] pentru a misca forma de definire a unui articol
din meniu.
- Apasati [INSERT RECORD] pentru a crea o inregistrare goala pentru
noul articol din meniu.
- Pentru tipul de comanda alegeti numarul potrivit din lista:
a. 1 - Invoca un submeniu
b. 2 - Executa o comanda a sistemului de operare
c. 3 - Executa o comanda a sistemului de operare, iar apoi
asteapta pentru raspunsul operatorului
d. 4 - Invoca SQL*Forms (ruleaza forma)
e. 5 - Invoca SQL*Plus
f. 6 - Executa o macro comanda
g. 7 - Executa un bloc PL/SQL
+-------------------------------------------------------------------+
| Action Menu Procedure Help Options |
+--------------------------------Item Definition--------------------+
+-------------------------------------+----------------------------+|
| Item: 1 Command Type: 1 Gran| Group Name ||
+--------------+-+--------------------| ||
| Item Text: | | Item | Find: ||
| Report +-+ Role +-+--------------------------+|
| Short Item N| +--------------------| | ADMIN ||
+--------------| | CLERKS +-+ CLERKS ||
| - - - - - - -| | MANAGERS | | MANAGE ||
| reports | | | | MANAGERS ||
| | | | | SYS_DES ||
+--------------| | | | ||
| - - - - - - -| | | | ||
| This item goe| | | | ||
| +-+ | | ||
| | | | | ||
| +-+--------------------| | ||
| +-+ ||
| | | ||
+-------------------------------------+-+--------------------------+|
| |
|App: ORDMENU Mnu: ORDMENU Rep |
| |
+-------------------------------------------------------------------+
Fig 25.5 Fereastra roluri acces articol - cu lista de valori
- Selectand Grant Role Access va va pozitiona pe fereastra Item Role.
- Pentru a da un rol de acces articolului din meniu inserati
numele rolului in aceasta fereastra. Apasati [INSERT RECORD]
pentru a crea o linie goala. Apasati [LIST] pentru o lista a
rolurilor valide.
- Pentru a revoca accesul unui rol articolului pozitionati
cursorul pe numele rolului si apasati [DELETE RECORD].
- Apasati [ACCEPT] pentru a parasi fereastra Item Role si
apasati [RETURN].
- Tipariti textul articolului in campul Item Text.
- Apasati [RETURN] si tipariti numele scurt al articolului.
- Selectati cutia Display Without Privilege doar daca doriti ca
operatorul sa vada articolele la care nu va avea acces.
- In linia de comanda introduceti numele meniului sau al liniei de
comanda care se potriveste cu campul Command Type.
- Apasati [RETURN] pentru a va pozitiona pe regiunea Help Text.
Introduceti orice text de ajutor pe care doriti ca operatorul
sa-l vada cand apasa [HELP] pentru acest articol.
- Pentru a crea un alt articol de meniu, apasati [INSERT RECORD] si
tipariti noua informatie.
- Pentru a crea un alt meniu curent apasati [ZOOM OUT] si
pozitionati-va pe meniul dorit, apoi apasati [ZOOM IN].
- Pentru a elimina un articol din meniu pozitionati-va pe
inregistrare si apasati [DELETE RECORD].
- Apasati [ACCEPT] pentru a va intoarce la meniul principal.
Salvarea unei aplicatii
Aplicatiile cu meniuri create sau modificate in interfata de
proiectare trebuie se fie salvate in baza de date inainte de a iesi
din SQL*Menu. Daca nu veti salva aplicatia in baza de date, veti
pierde definitiile obiectelor create sau modificate in timpul
sesiunii curente. SQL*Menu nu are un echivalent al fisierului .inp
produs in timpul generarii cu SQL*Forms.
Pasii urmatori descriu cum sa salvati o aplicatie in baza de date:
- Selectati Action din meniul principal.
- Selectati Save din submeniul Action. Va apare cutia de dialog
Save Menu cu numele aplicatiei curente in campul Name.
- Apasati [ACCEPT] pentru a salva aplicatia. Apasati
[LIST] pentru a vedea o lista a aplicatiilor salvate.
SQL*Menu va afisa mesajul "Working...", iar apoi se va intoarce la
meniul principal de interfata a proiectarii.
Generarea unei aplicatii
Inainte de a rula o aplicatie trebuie mai intai sa o generati. Atunci
cand generati o aplicatie cu meniuri, SQL*Menu creaza un fisier de
biblioteca denumit numefisier.DNM folosind numele de fisier si calea
directorului specificate in forma de definire a aplicatiei.
Generarea aplicatiei nu o va salva automat in baza de date.
Reamintiti-va sa o salvati in baza de date inainte de a o genera sau
de a iesi din SQL*Menu.
Pasii urmatori descriu cum sa generati o aplicatie cu meniuri:
- Selectati Action din meniul principal.
- Selectati Generate din submeniul Action. Va apare cutia de dialog
Generate Menu Application cu numele aplicatiei curente in campul
Name. Pentru a afisa o lista a valorilor pentru acest camp,
apasati [LIST].
- Apasati [ACCEPT] pentru a genera aplicatia.
SQL*Menu va afisa mesajul "Working...", iar apoi se va intoarce la
meniul principal.
Rularea unei aplicatii
Odata ce ati salvat si ati generat aplicatia cu meniuri puteti
executa aceasta aplicatie sau orice alta aplicatie la care aveti
acces.
Pasii urmatori descriu cum sa rulati o aplicatie cu meniuri:
- Selectati Action din meniul principal.
- Selectati Execute din submeniul Action. Va apare cutia de dialog
Execute Menu Application cu numele aplicatiei curente in campul
Name.
- Apasati [ACCEPT] pentru a executa aplicatia curenta sau introduceti
numele altei aplicatii, iar apoi apasati [ACCEPT]. (Apasati
[LIST] pentru a afisa o lista a aplicatiilor valide).
SQL*Menu va rula acum aplicatia, pornind de la meniul principal al
aplicatiei. Cand veti iesi din aplicatie va veti intoarce la
interfata de proiectare.
Capitolul 25 Exercitiul A - Construirea unei aplicatii simple
- Folosind informatia din capitolul precedent construiti-va o
aplicatie cu meniuri. Numiti aplicatia cu un sufix _Gn unde
n reprezinta numele dvs. de grup. Vi s-a acordat role de membru
pentru toate cele trei roluri.
- Salvati aplicatia in baza de date, generati-o si apoi rulati-o
pentru a o testa intensiv. Veti fi in stare sa vedeti toate
optiunile cu numele curent de utilizator / parola ORACLE.
- Pentru a verifica securitatea aplicatiei dvs. cu meniuri, iesiti
din SQLMENU si rulati aplicatia folosint comanda RUNMENU si
urmatoarele doua conturi:
- ADMIN / ADMIN - acest cont are doar rolul membru ADMIN.
- MANAGE / MANAGE - acest cont are doar rolul membru MANAGE.
Definirea unui parametru de substituire
Un parametru de substituire poate fi folosit pentru o linie de
comanda a unui articol din meniu sau pentru o procedura PL/SQL.
Parametri de substituire SQL*Menu au un nume format din doua
caractere precedate de "&" (folositi ":" in cod PL/SQL).
Parametri de substituire ai sistemului
Exista cinci parametri de substituire predefiniti care sunt
intotdeauna cunoscuti in SQL*Menu. Acestia sunt:
Parametru Descriere
--------- ---------
UN Numele utilizatorului curent.
PW Parola curenta. Daca se foloseste switch-ul -Z cu
comanda RUNMENU acesta va fi nul.
AD Directorul specificat in forma de definire a
aplicatiei. Acesta reprezinta locul unde fisierul de
biblioteca (app_name.dnm) va fi generat.
SO Ultimul articol de maniu selectat. Acesta consista
din numele meniului, o liniuta si numarul articolului,
de exemplu ORDMENU-2.
TT Numele de device al terminalului Oraterm folosit,
de exemplu VT220.
+-------------------------------------------------------------------+
| Action Menu Procedure Help Options |
+---------------------------Parameter Definition--------------------+
| |
| +---------------------------------------+----------------------+ |
| | Parameter: od | [ X ] Echo | |
| | Size: 9 | [ X ] Fixed Length | |
| | Prompt: Ending Date DD-MON-YY | [ ] Required | |
| | Select Menus | [ ] Upper Case | |
| +---------------------------------------+----------------------+ |
| | Default: 31-DEC-99 | |
| | Hint: Enter an ending date for the report, .... | |
| | | |
| +---------------------------------------+----------------------+ |
| |
| |
| |
|Enter the parameter text string (2 characters) |
|App: ORDMENU Mnu: ORDMENU Rep |
| |
+-------------------------------------------------------------------+
Fig 25.6 Forma de definire a parametrilor
Tabelul de deasupra arata elementele formei de definire a
parametrilor:
Element Continut
------- --------
PARAMETER Abreviere de doua caractere pentr parametru.
SIZE Numarul maxim de caractere pe care
utilizatorul le poate introduce.
PROMPT Textul care va apare ca prompt pentru
utilizator in cutie.
SELECT MENUS Afiseaza fereastra cu numele meniului.
Folosit pentru a asocia parametri cu meniuri
doar in stil full-screen.
ECHO Un X introdus aici va afisa parametrul pe
masura ce acesta este tiparit. Deselecati
pentru parole si folosirea valorilor ascunse.
FIXED LENGTH Un X introdus aici va indica ca utilizatorul
trebuie sa introduca numarul maxim de
caractere.
REQUIRED Un X introdus aici va face parametrul
obligatoriu.
UPPER CASE Un X introdus aici va converti parametrul in
majuscule in mod automat.
DEFAULT Specifica o valoare implicita pentru parametru
atunci cand este folosit prima data. O
folosire ulterioara va afisa ultima valoare
pe care utilizatorul a folosit-o sau a
introdus-o.
HINT Text de ajutor care va apare pe linia de
mesaj. Folositor pentru o lista de valori,
sugestii etc.
Pasi in definrea unui parametru de substituire
Pasii urmatori descriu cum sa creati un parametru de substituire:
- Selectati Menu din meniul principal.
- Selectati Parameter din submeniul Menu.
- Apasati [INSERT RECORD] pentru a crea o inregistrare goala
pentru parametru.
- Completati un cod al parametrului de doua caractere in campul
Parameter. Apasati [RETURN].
- Completati campurile pentru marime si prompt soliciate.
In stil full-screen un parametru poate fi asociat doar cu un
meniu intreg. Valoarea introdusa pentru acel parametru este apoi
disponibila pentru toate articolele din acel meniu. Pentru a
folsi aceasta optiune:
- Apasati [SELECT] pe butonul Select Menu. Va apare fereastra Menu
Name. Introduceti numele meniului, sau al meniurilor, pe care doriti
sa le asociati cu acest parametru si apasati [ACCEPT].
- Introduceti X in check-box-ul Echo daca doriti sa afisati parametrul
cand acesta este tiparit. Lasand aceasta casuta goala veti ascunde
ceea ce introduce operatorul.
- Introduceti X in check-box-ul Fixed Check daca utilizatorul trebuie
sa completeze toata marimea parametrului.
- Un X in check-box-ul Required va forta operatorul sa introduca o
valoare pentru parametru.
- Introduceti un X in check-box-ul Upper Case daca doriti ca ceea ce
introduce operatorul sa fie convertit in majuscule.
- Puteti specifica valoarea implicita a unui parametru in campul
Default.
- In campul Hint descrieti tipul valorii cerute pentru parametru
si listati niste valori posibile.
Pentru a crea alt parametru apasati [INSERT RECORD] si repetati
procesul de desupra. Pentru a starge un parametru pozitionati cursorul
pe inregistrarea respectiva si apasati [DELETE RECORD]. Apasati
[ACCEPT] pentru a va intoarce la meniul principal.
Asocierea unui parametru cu un articol din meniu
Pentru a asocia un parametru de substituire cu un articol din meniu,
folositi parametrul in linia de comanda a articolului atunci cand il
definiti.
De ex:
sqlplus -s @report1 &sd &ed
unde sd reprezinta data de
inceput, iar ed data de sfarsit pe care le va folosi raportul.
Cand operatorul va selcta articolul din meniu va apare cutia de
dialog pentru introducere si i se va cere utilizatorului sa introduca
valorile parametrilor.
Setarea optiunilor in SQL*Menu (Design)
Forma de selectare a optiunilor in SQL*Menu (Design) va permite sa
setati diverse optiuni pentru a fi utilizate de fiecare data cand
folositi interfata de proiectare impreuna cu SQL*Forms V3.0. Optiunile
urmatoare pot fi activate sau dezactivate pentru sesiunea curenta:
Optiune Descriere
------- ---------
Use Forms as Default Aceasta optiune seteaza formele la stilul de
ecran implicit pentru toate ecranele de
definitii.
Show List of Values Afiseaza automat o lista de valori daca
aceasta exista pentru contextul curent al
interfetei de proiectare.
Generate Before Genereaza in mod automat un nou fisier de
Executing Menu biblioteca pentru aplicatie inainte de a o
executa.
Suppress Hints Ascunde mesajele cu indicii care in mod normal
apar in linia de mesaje. Setarea acestei
optiuni nu va afecta afisarea mesajelor de
eroare.
Disable PL/SQL Opreste compilarea automata PL/SQL.
Compilation Compilarea tuturor PL/SQL va avea totusi loc
la generare.
Auto Restrict Aceasta optiune restrictioneaza lista
List of Values valorilor doar la acelea care se potrivesc cu
sablonul de cautare din acest camp.
Show Detailed Aceasta optiune va afisa mesajele detaliate
Working Message in loc de mesajul "Working...", mai ales in
timpul operatiunilor Generate si Grant New
User.
Menu Display Style Selecteaza tipul ecranului de meniu care
urmeaza a fi folosit atunci cand aplicatia se
ruleaza din interfata de proiectare.
Setarea optiunilor
Forma de selectare a optiunilor contine check-box-ur si butoane radio
pentru schimbarea optiunilor. Acestea pot fi setate din interiorul
interfetei de proiectare sau din fisierul SQLMENU.CFG, folosind
optiunile pe care le doriti din lista urmatoare:
- Use_forms_as_defaults = on|off
- Show_list_of_values = on|off
- Generate_before_executing_menu = on|off
- Suppress_hints = on|off
- Disable_pl/sql_compilation = on|off
- Auto_restrict_list_of_values = on|off
- Show_detailed_working_message = on|off
- Menu_style = bar|full_screen|pull_down
- Mapping = vt220 (sau orice alt nume de resursa Oraterm
valida)
Remarcati ca spatiul dinainte si dupa semnul de egal este necesar,
altfel optiunea va fi ignorata de catre SQL*Menu. Aceste setari nu
sunt senzitive la majuscule/minuscule.
Capitolul 25 Exercitiul B - Parametri si Optiuni
- Imbunatatiti aplicatia dvs. simpla prin aceea ca operatorul are
posibilitatea sa aleaga un nume de fisier sau un tip de fisier
ce urmeaza a fi listat atunci cand s-a selecatat articolul de
selecatare al directorului.
- Creati un submeniu al meniului Utilities, numit REPORT, cu
urmatoarele articole:
- Vizionare fisier spool raport.
- Tiparire fisier spool raport.
Va trebui sa creati si sa folositi o variabila de substituire
pentru aceste doua articole.
Proceduri impachetate PL/SQL
Procedurile impachetate din SQL*Menu sunt proceduri PL/SQL built-in,
asemenea procedurilor impachetate din SQL*Forms V3.0.
Fiecare
procedura impachetata efectueaza o anumita functie, de exemplu:
pozitionarea in meniul principal sau executarea unui articol din
meniul fundal.
Ele pot fi folosite pentru a inlocui anumite taste
functionale, pentru a reduce cantitatea de date care se repeta
introduse de catre operatori, pentru a controla calea pe care unui
operator i se permite sa o urmeze intr-o aplicatie si pentru a
modifica procesarea implicita ca de exemplu validarea sau blocarea.
Ele sunt apelate printr-un articol din meniu dintr-o procedura
PL/SQL.
Starile meniului
Urmatoarele reprezinta stari valide pentru SQL*Menu (Runmenu):
- LOGIN
- Logare, se modifica in AMENU sau MENU
- AMENU
- Meniul aplicatiei, se modifica in MENU cand o
aplicatie este selectata.
- MENU
- Meniu, poate fi schimbat in AMENU, MENU, AFORM, MFORM
sau IFORM.
- AFORM
- Starea Application Parameter Form, daca cutia de
dialog Enter Parameter Value este afisata pentru
paramterii aplicatiei. Modificari in MENU la iesirea
din cutia de dialog.
- MFORM
- Starea Menu Parameter Form. Pentru stilul de ecran
full-screen cu parametrii meniului. Modificari in
MENU sau IFORM.
- IFORM
- Starea Item Parameter Form. Modificari in MENU dupa ce
este executata sau cutia de dialog este anulata prin
functia [Cancel].
Proceduri impachetate SQL*Menu
Fiecare procedura impachetata este descrisa in cele ce urmeaza
impreuna cu macro-ul sau echivalent, starile de meniu valide si
conditiile de esec.
Numele Procedurii Descriere
----------------- ---------
APPLICATION_MENU Sintaxa: APPLICATION_MENU;
Descriere: Navigheaza prin meniul aplicatiei
al unei aplicatiei. Nu este disponibila daca
SQL*Forms a apelat meniul.
Stari Valide: MENU, AFORM, MFORM, IFORM
APPLICATION_PARAMETER Sintaxa: APPLICATION_PARAMETER;
Descriere: Afiseaza toti parametrii asociati
cu aplicatia curenta si valorile lor curente,
in cutia de dialog Enter Parameter Values.
Stari Valide: MENU, MFORM
Esec: Daca pentru aplicatia curenta nu sunt
definiti parametri se obtine mesajul de eroare
MNU-10201: No parameters needed.
BACKGROUND_MENUn Sintaxa: BACKGROUND_MENU(1 to 10);
Descriere: Executa articolul din meniul
fundal.
Stari Valide: MENU, AFORM, MFORM, IFORM
Esec: Daca articolul din meniul fundal nu
exista se obtine eroarea
MNU-10204: No command defined for the selected
background item. Daca articolul din meniul
fundal incearca sa navigheze intr-un meniu
mesajul de eroare este MNU-10209:
No 'next menu' from background in this context
DEBUG_MODE Sintaxa: DEBUG_MODE;
Macro echivalent: DEBUG
Descriere: Activeaza/dezactiveaza modul debug.
Stari Valide: MENU
DISABLE_ITEM Sintaxa:DISABLE_ITEM(menu_name,item_short_name);
Descriere: Face articolul din meniu
inaccesibil, afisand articolul din meniu ca
non-bold chiar daca Dispaly without Privilege
este dezactivat pentru acel artivol.
Stari Valide: MENU.
ENABLE_ITEM Sintaxa:ENABLE_ITEM(menu_name,item_short_name);
Descriere: Face articolul din meniu accesibil,
depasind privilegiile de acces ale
utilizatorului. Cu toate acestea se pot
activa doar articolele vizibile din meniu.
Stari Valide: MENU.
EXIT_MENU Sintaxa: EXIT_MENU(message_string);
Descriere: Iese din meniu cu un mesaj, daca
acesta este specificat.
Stari Valide: LOGIN, AMENU, MENU, AFORM, MFORM,
IFORM.
MAIN_MENU Sintaxa: MAIN_MENU;
Descriere: Navigheaza in meniul principal al
aplicatiei curente.
Stari Valide: MENU, AFORM, MFORM, IFORM.
Esec: Daca SQL*Menu este deja in meniul
principal mesajul de eroare este MNU-10200:
Illegal function in this context.
MENU_CLEAR_FIELD Sintaxa: MENU_CLEAR_FIELD;
Descriere: Curata campul din pozitia
cursorului pana la sfarsitul campului.
Daca cursorul se afla la dreapta ultimului
caracter se va curata intreful camp, valoarea
sa devenind NULL.
Stari Valide: LOGIN, AMENU, MENU, AFORM, MFORM,
IFORM.
MENU_HELP Sintaxa: MENU_HELP;
Descriere: Afiseaza indiciul pe linia de
mesaje pentru articolul din curent din meniu.
Stari Valide: LOGIN, AMENU, MENU, AFORM, MFORM,
IFORM.
Esec: Daca nu exista informatie de ajutor,
mesajul de eroare este MNU-10215: No help
available.
MENU_MESSAGE Sintaxa: MENU_MESSAGE(message_string);
Descriere: Afiseaza meniul specificat pe
linia de mesaje.
Stari Valide: LOGIN, AMENU, MENU, AFORM, MFORM,
IFORM.
MENU_NEXT_FIELD Sintaxa: MENU_NEXT_FIELD;
Descriere: Navigheaza la urmatorul camp din
forma sau cutie de dialog
Stari Valide: LOGIN, AMENU, MENU, AFORM, MFORM,
IFORM.
MENU_PARAMETER Sintaxa: MENU_PARAMETER;
Descriere: Afiseaza toti parametri meniului
curent si valorile lor in cutia de dialog.
Enter Parameter Values.
Stari Valide: MENU, MFORM (in stil de afisare
full-screen).
Esec: Daca pentru meniu nu sunt definiti
parametri se obtine mesajul de eroare
MNU-10201: No parameters needed.
MENU_PREVIOUS_FIELD Sintaxa: MENU_PREVIOUS_FIELD;
Descriere: Revine la campul precedent din
forma sau cutie de dialog.
Stari Valide: LOGIN, AFORM, MFORM, IFORM.
MENU_REDISPLAY Sintaxa: MENU_REDISPLAY;
Descriere: Redeseneaza ecranul in Runmenu.
Stari Valide: LOGIN, AMENU, MENU, AFORM, MFORM,
IFORM.
MENU_SHOW_KEYS Sintaxa: MENU_SHOW_KEYS;
Descriere: Afiseaza ecranul Show Keys pentru
Runmenu.
Stari Valide: LOGIN, AMENU, MENU, AFORM, MFORM,
IFORM.
NEW_APPLICATION Sintaxa: NEW_APPLICATION(application_name);
Descriere: Schimba aplicatia cu meniuri
curenta.
Stari Valide: LOGIN, AMENU, MENU, AFORM, MFORM,
IFORM.
Esec: Daca aplicatia specificata nu exista
in baza de date sau nu aveti privilegiu de
acces mesajul de eroare este MNU-10244:
Application name does not exist.
NEW_USER Sintaxa: NEW_USER(login_string);
Descriere: Delogheaza utilizatorul curent si
logheaza noul utilizator cu numele
login_string. Aceasta procedura nu este
permisa in SQL*Forms.
Stari Valide: AMENU, MENU, AFORM, MFORM, IFORM.
NEXT_MENU_ITEM Sintaxa: NEXT_MENU_ITEM;
Descriere: Navigheaza la urmatorul articol
din meniul curent.
Stari Valide: AMENU, MENU.
OS_COMMAND Sintaxa: OS_COMMAND(command_string);
Descriere: Executa comanda sistemului de
operare specificata in command_string. Tipul
comenzii poate fi 2, 3, 4 sau 5.
Exemplu:
os_command('(TYPE=4)runform ordentry');.
Implicit tipul este 2.
Stari Valide: MENU, AFORM, MFORM, IFORM.
PREVIOUS_MENU Sintaxa: PREVIOUS_MENU;
Descriere: Revine la meniul precedent.
Stari Valide: MENU, AFORM, MFORM, IFORM.
PREVIOUS_MENU_ITEM Sintaxa: PREVIOUS_MENU_ITEM;
Descriere: Navigheaza la articolul precedent
din meniul curent.
Stari Valide: AMENU, MENU.
QUERY_PARAMETER Sintaxa: QUERY_PARAMETER(paramter_string);
Descriere: Interogheaza SQL*Menu pentru
valorile curente ale listei de parametri de
substituire. Numele parametrului trebuie sa
fie prefixat de un ampersand (&), desi doua
puncte (:) sunt folosite in PL/SQL care
folosesc aceste valori.
Stari Valide: MENU, AFORM, MFORM, IFORM.
SHOW_BACKGROUND_MENU Sintaxa: SHOW_BACKGROUND_MENU;
Descriere: Afiseaza meniul fundal.
Stari Valide: MENU, AFORM, MFORM, IFORM.
Esec: Daca nu exista meniu de fundal definit
pentru aplicatia curenta, mesajul de eroare
este MNU-10207: No background menu present.
TERMINATE Sintaxa: TERMINATE;
Descriere: Sfarseste introducerea intr-o forma
sau intr-o cutie de dialog. Este echivalent
cu apasarea de catre operator a tastei
[Accept].
Stari Valide: LOGIN, AMENU, MENU, AFORM, MFORM,
IFORM.
WHERE_DISPLAY Sintaxa: WHERE_DISPLAY;
Descriere: Activeaza/dezactiveaza afisarea
optiunii de navigatie Where.
Stari Valide: AMENU, MENU (doar in stil
afisare full-screen).
Esecul procedurilor impachetate
Procedurile impachetate esueaza din dou motive:
- Sunt invalide in contextul meniului curent. Anumite functii si
procedurile impachetate corespunzatoare lor nu au sens in anumite
stari meniu.
- Se pot executa incorect, de ex. folosirea procedurii
BACKGROUND_MENUn atunci cand nu exista maniuri de fundal.
Testarea executiei procedurilor impachetate
SQL*Menu furnizeaza urmatoarele functii PL/SQL care pot fi folosite
pentru a testa rezultatul unei proceduri impachetate:
MENU_SUCCESS ERROR_TYPE
MENU_FAILURE ERROR_CODE
MENU_FATAL ERROR_TEXT
Fiecare dintre aceste functii testeaza valoarea unei variabile
specifice de eroare care este setataa atunci cand procedura
impachetata este executata. Acestea inregistreaza:
- Daca cea mai recenta actiune a reusit, a esuat sau a cauzat
o eroare fatala.
- Tipul, numarul si textul mesajului de eroare asociat.
Deoarece fiecare procedura impachetata seteaza valoarea intoarsa de
aceste functii cand se executa, ele vor reflecta doar informatia
despre ultima procedura executata. Alte actiuni ca de exemplu
apasarea unei taste functionale seteaza deasemenea aceste valori.
Deci daca intentionati sa folositi aceste valori trebuie sa le
testati intotdeauna imediat dupa actiunea pe care doriti sa o testati.
Prin testarea valorii cu functia PL/SQL relevanta puteti modifica
desfasurarea procesarii in functie de valoarea lor.
De asemenea este disponibila o functie impachetata numita ITEM_ENABLED
care poate fi utilizata pentru a verifica daca un anume articol este
activat sau nu. Ea intoarce valoarea booleana True pentru functii
activate si False pentru functii dezactivate sau pentru articole
inexistente.
SINTAXA: ITEM_ENABLED(menu_name, item_short_name);
Definirea unei proceduri PL/SQL
Proceduri
In SQL*Menu se pot crea proceduri pe care le puteti utiliza oriunde
in aplicatie. Procedurile trebuie sa foloseasca urmatoarea sintaxa:
SINTAXA: PROCEDURE nume_procedura [lista_argumente] IS
declaratii
BEGIN
instructiuni_procedura;
END;
+-------------------------------------------------------------------+
| Action Menu Procedure Help Options |
+---------------------------Procedure Definition--------------------+
+----------------------------------------------------------------+ |
| Procedure Name: enable_disable_query_items | |
+----------------------------------------------------------------+ |
| - - - - - - - - - - - - Procedure Text - - - - - - - - - - - | |
| procedure enable_disable_query_items is | |
| begin | |
| enable_item('Query', 'Last Criteria'); | |
| disable_item('Query', 'Cancel'); | |
| ........ | |
| | |
| | |
| | |
| | |
| | |
| | |
+----------------------------------------------------------------+ |
|Enter the name of the PL/SQL procedure |
|App: DEFAULTMEN Mnu: ACTION Rep |
+-------------------------------------------------------------------+
Fig 25.7 Forma de definire a procedurii
Element Continut
------- --------
Procedure Name Numele folosit pentru a identifica
procedura - respecta conventiile de denumire
ORACLE.
Procedure Text Aici este introdus blocul PL/SQL.
Definirea unei proceduri PL/SQL
Pasii urmatori descriu cum sa definiti o procedura cu nume:
- Selectati Procedure din meniul principal. Va apare forma de
definire a procedurii.
- Daca procedura deja exista, creati o noua inregistrare prin
apasarea [INSERT_RECORD].
- Tipariti numele procedurii in campul Procedure Name.
- Apasati [RETURN] pentru a va pozitiona pe zona de scroll
Procedure Text si introduceti procedura PL/SQL.
- Apasati [ACCEPT] pentru a va intoarce la meniul principal.
Apelul unei proceduri PL/SQL
Pentru a folosi o procedura PL/SQL introduceti 7 in campul Command
Type al formei de definire a articolului si introduceti numele
procedurii in zona de scroll Command Line.
De exemplu: Pentru a apela o procedura numita 'Prev_menu' linia de
comanda va contine:
prev_menu;
Copierea sau referentierea unui obiect
Din SQL*Menu puteti copia sau referentia un obiect din orice
aplicatie cu meniuri in aplicatia curenta. Puteti copia sau
referentia un meniu, un articol, un parametru sau o procedura.
Copierea unui obiect creaza un nou obiect care poate fi apoi
modificat la noua locatie.
Referentiera unui obiect creaza un pointer catre un obiect salvat.
Nu puteti referntia un obiect din cadrul aceleasi aplicatii.
+-------------------------------------------------------------------+
| Action Menu Procedure Help Options |
+---------------------------------SQL*Menu--------------------------+
| +------------------------------------------------+ |
| | Source Object | |
| | | |
| | Copy or Reference Object: Copy | |
| | Applic: DEFAULTMENUAPP | |
| | Menu: HELP | |
| | Item: | |
| | Parameter: | |
| | Procedure: | |
| | | |
| | Target Object | |
| | | |
| | Menu: HELP | |
| | Item: | |
| | Parameter: | |
| | Procedure: | |
| +------------------------------------------------+ |
|Enter either 'Copy' or 'Reference' |
|App: ORDMENU Mnu: BGM List Rep |
| |
+-------------------------------------------------------------------+
Fig 25.8 Cutia de dialog copiere/referentiere
Pasii urmatori descriu cum sa copiati sau sa referentiati un obiect:
- In interfata de proiectare apasati [COPY OBJECT]. Va apare cutia
de dialog pentru copiere/referentiere.
- In campul Copy or Refernce introduceti Copy pentru a face o copie
independenta a obiectului sau Reference pentru a face copie care
refera obiectul original.
- Introduceti numele si locatia obiectului in campul Source Object.
- Introduceti noul nume si locatia in campurile Target Object.
- Apasati [ACCEPT] si SQL*Menu va face o copie sau o referinta si
se va intoarce la meniul principal.
Documentatie
Este posibil sa tipariti informatia legata de aplicatie din interiorul
SQL*menu (Design). In mod alternativ documentatia poate fi produsa
din sistemul de operare folosind comanda DOCMENU (vezi Anexa G). In
interiorul interfetei de proiectare exista trei optiuni disponibile:
Optiune Descriere
------- ----------
Detail Documentatie completa a aplicatiei.
Summary Lista scurta fara text de ajutor.
Object Ref Documentatie despre referintele catre
obiecte specifice.
Tiparirea informatiei aplicatiei
Pasii urmatori descriu cum sa copiati sau sa listati definitiile
obiectelor pentru o aplicatie cu meniuri sau pentru un obiect
referentiat, fie intr-un fisier, fie direct la imprimanta:
- Selectati Action din meniul principal.
- Selectati Print doc din submeniul Action.
- Pentru o documentatie completa a aplicatiei selectati Detail din
submeniul Print Documentation.
- Va apare cutia de dialog Print Dialogue. Aceasta va avea ca valori
implicite numele aplicatiei curente in campul Name si numele
fisierului pentru aplicatia curenta in campul File.
- Pentru a tipari documentatia pe imprimanta implicita a sistemului
pozitionati cursorul pe check-box-ul Send to Printer si apasati
[Select].
- Apasati [ACCEPT] sau [NEXT FIELD] pentru a crea un fisier de
documentatie numit numefisier.DOC in directorul implicit.
In mod implicit numefisier este numele fisierului in care se
gaseste aplicatia. Pentru a schimba acest nume introduceti noul
nume in campul File inainte de a apasa [Accept]. SQL*Menu va crea
fisierul document si il va trimite la imprimanta, daca acest lucru
a fost specificat, inainte de a reveni la meniul principal.
- Pentru a crea o lista scurta fara text de ajutor; selectati
optiunea Summary din submeniul Print Documentation.
- Pentru a documenta referintele la obiecte specifice selectati
Object Ref din submeniul Print Documentation. In cutia de dialog
Print Documentation introduceti contextul complet pentru obiectul
dorit.
Capitolul 25 Exercitiul C - PL/SQL
- In meniul principal adaugati doua articole suplimentare:
- Un articol Help care va arata in mod automat toate tastele.
- Un articol Exit care va apela o procedura. Creati aceasta
procedura si numiti-o exmenu. Aceasta procedura va iesi din
meniul aplicatiei cu mesajul urmator:
SQL*Menu Session Terminated.
Capitolul 25 Solutii
Exercitiul A - Construirea unei aplicatii simple - fara solutie
Exercitiul B - Parametri si optiuni
- Definirea parametrilor
- Selectati Menu din meniul principal.
- Selectati Parameter din submeniul Menu.
- Completati forma de definire a parametrului asa cum este
indicat mai jos:
Parameter: fn [X] Echo
Size: 10
Prompt: Enter file type:
Default: *.frm
Hint: Enter the type of file you want listed
- Crearea submeniului REPORT
Aceasta consta in crearea meniului fundal cu doua articole si crearea
unui parametru care va fi folosit de ambele articole. Pentru a crea
parametrul:
- Selectati Menu din meniul principal.
- Selectati Parameter din submeniul Menu.
- Completati forma de definire a parametrului asa cum este
indicat mai jos:
Parameter: rn [X] Echo
Size: 10
Prompt: Report::
Default: *
Hint: Enter the name of the report
- Apasati [ACCEPT] pentru a reveni la meniul principal.
Creati meniul numit REPORT folosind ecranul de definire al meniului.
Creati cele doua articole din meniu. Liniile de comanda sunt specifice
tipului de calclulator.
Pentru un VAX acestea vor fi:
- View - type &rn.lis
- Print - print &rn.lis
Pentru o masina UNIX folositi:
- View - cat &rn.list
- Print - printp &rn.lst
Nota: Comanda printp este disponibila doar in sesiunile noastre de
pregatire. Ea nu este o comanda standard a sistemului de operare.
Exercitiul C - PL/SQL
1a. Articolul Help:
Command type: 7
Item text: Show function keys
Short Item Name: Show keys
Command line: menu_show_keys;
1b. Articolul Exit:
Command type: 7
Item text: Exit the menu application
Short Item Name: Exit
Command line: exmenu;
Sintaxa procedurii:
procedure exmenu is
begin
exit_menu('SQL*Menu Session Terminated.');
end;