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:

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:


Pornirea si iesirea din SQL*Menu (Design)


Pornirea SQL*Menu (Design)


De la promptul sistemului de operare:

  1. Tipariti sqlmenu si tastati [RETURN].
  2. Introduceti numele dvs. de utilizator ORACLE si tastati [RETURN].
  3. 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)


  1. In meniul principal al interfatei de proiectare selectati Action.
  2. 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:


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:

  1. In meniul principal selectati Action.
  2. Selectati New din submeniul Action. Cutia de dialog New Menu Application va apare.
  3. Introduceti numele noii aplicatii. Acest nume trebuie sa fie unic. Pentru a afisa o lista a aplicatilor existente in baza de date apasati [LIST].
  4. Apasati [ACCEPT] pentru a crea o noua aplicatie.


Modificarea definitiei unei aplicatii


Pentru a modifica definitia aplicatiei:

  1. In meniul principal selectati Menu.
  2. Selectati Application din submeniul Menu.
  3. 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:

  1. In meniul principal selectati Menu.
  2. Selectati Menu din submeniul Menu. Forma de definire a meniului sau o tabela intinsa vor apare.
  3. Daca meniul deja exista apasati [INSERT RECORD] pentru a crea o inregistrare goala pentru noul meniu.
  4. Introduceti valorile relevante in campuri asa cum s-a detaliat in tabela de elemente.
  5. Pentru a crea un alt meniu apasati [INSERT RECORD] si completati noua inregistrare.
  6. Pentru a sterge un meniu pozitionati-va pe acea inregistrare si apasati [DELETE RECORD].
  7. 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.

  1. In meniul principal selectati Menu.
  2. Selecati Menu din submeniul Menu.
  3. Folositi [UP] sau [DOWN] pentru a va pozitiona pe meniul pe care vreti sa-l faceti curent.
  4. Apasati [ZOOM IN] pentru a misca forma de definire a unui articol din meniu.
  5. Apasati [INSERT RECORD] pentru a crea o inregistrare goala pentru noul articol din meniu.
  6. 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
    
    
  7. Selectand Grant Role Access va va pozitiona pe fereastra Item Role.

    1. 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.
    2. Pentru a revoca accesul unui rol articolului pozitionati cursorul pe numele rolului si apasati [DELETE RECORD].
    3. Apasati [ACCEPT] pentru a parasi fereastra Item Role si apasati [RETURN].

  8. Tipariti textul articolului in campul Item Text.
  9. Apasati [RETURN] si tipariti numele scurt al articolului.
  10. Selectati cutia Display Without Privilege doar daca doriti ca operatorul sa vada articolele la care nu va avea acces.
  11. In linia de comanda introduceti numele meniului sau al liniei de comanda care se potriveste cu campul Command Type.
  12. 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.
  13. Pentru a crea un alt articol de meniu, apasati [INSERT RECORD] si tipariti noua informatie.
  14. Pentru a crea un alt meniu curent apasati [ZOOM OUT] si pozitionati-va pe meniul dorit, apoi apasati [ZOOM IN].
  15. Pentru a elimina un articol din meniu pozitionati-va pe inregistrare si apasati [DELETE RECORD].
  16. 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:

  1. Selectati Action din meniul principal.
  2. Selectati Save din submeniul Action. Va apare cutia de dialog Save Menu cu numele aplicatiei curente in campul Name.
  3. 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:

  1. Selectati Action din meniul principal.
  2. 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].
  3. 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:
  1. Selectati Action din meniul principal.
  2. Selectati Execute din submeniul Action. Va apare cutia de dialog Execute Menu Application cu numele aplicatiei curente in campul Name.
  3. 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


  1. 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.

  2. 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.

  3. Pentru a verifica securitatea aplicatiei dvs. cu meniuri, iesiti din SQLMENU si rulati aplicatia folosint comanda RUNMENU si urmatoarele doua conturi:

    1. ADMIN / ADMIN - acest cont are doar rolul membru ADMIN.

    2. 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:

  1. Selectati Menu din meniul principal.
  2. Selectati Parameter din submeniul Menu.
  3. Apasati [INSERT RECORD] pentru a crea o inregistrare goala pentru parametru.
  4. Completati un cod al parametrului de doua caractere in campul Parameter. Apasati [RETURN].
  5. 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:
  6. 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].
  7. 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.
  8. Introduceti X in check-box-ul Fixed Check daca utilizatorul trebuie sa completeze toata marimea parametrului.
  9. Un X in check-box-ul Required va forta operatorul sa introduca o valoare pentru parametru.
  10. Introduceti un X in check-box-ul Upper Case daca doriti ca ceea ce introduce operatorul sa fie convertit in majuscule.
  11. Puteti specifica valoarea implicita a unui parametru in campul Default.
  12. 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:

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


  1. 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.

  2. Creati un submeniu al meniului Utilities, numit REPORT, cu urmatoarele articole:

    1. Vizionare fisier spool raport.
    2. 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:

  1. Sunt invalide in contextul meniului curent. Anumite functii si procedurile impachetate corespunzatoare lor nu au sens in anumite stari meniu.

  2. 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:

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:

  1. Selectati Procedure din meniul principal. Va apare forma de definire a procedurii.

  2. Daca procedura deja exista, creati o noua inregistrare prin apasarea [INSERT_RECORD].

  3. Tipariti numele procedurii in campul Procedure Name.

  4. Apasati [RETURN] pentru a va pozitiona pe zona de scroll Procedure Text si introduceti procedura PL/SQL.

  5. 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:

  1. In interfata de proiectare apasati [COPY OBJECT]. Va apare cutia de dialog pentru copiere/referentiere.
  2. 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.
  3. Introduceti numele si locatia obiectului in campul Source Object.
  4. Introduceti noul nume si locatia in campurile Target Object.
  5. 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:

  1. Selectati Action din meniul principal.

  2. Selectati Print doc din submeniul Action.

  3. Pentru o documentatie completa a aplicatiei selectati Detail din submeniul Print Documentation.

  4. 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.

  5. Pentru a tipari documentatia pe imprimanta implicita a sistemului pozitionati cursorul pe check-box-ul Send to Printer si apasati [Select].

  6. 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.

  7. Pentru a crea o lista scurta fara text de ajutor; selectati optiunea Summary din submeniul Print Documentation.

  8. 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


  1. In meniul principal adaugati doua articole suplimentare:
  2. Un articol Help care va arata in mod automat toate tastele.

  3. 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

  1. Definirea parametrilor

    1. Selectati Menu din meniul principal.
    2. Selectati Parameter din submeniul Menu.
    3. 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
      
  2. 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:

    1. Selectati Menu din meniul principal.
    2. Selectati Parameter din submeniul Menu.
    3. 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
      

    4. 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:

    1. View - type &rn.lis
    2. Print - print &rn.lis

    Pentru o masina UNIX folositi:

    1. View - cat &rn.list
    2. 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;