UTILIZAREA UNEI FORME

Continutul acestui capitol

Acest capitol este introdus pentru a va putea familiariza cu interfata de operare a SQL*Forms (Runform). Este esential sa intelegeti cum opereaza o forma pentru a putea construi o aplicatie user-prietenoasa.

Subiectele discutate includ:


STARTUL

Executia unei forme

Daca sunteti un utilizator final, invocati SQL*Forms (Runform) prin editarea urmatoarei comenzi la prompt-ul sistemului de operare:

           runform form_name
Apoi sunteti introdus intr-un ecran de securitate care va va cere userid-ul (de Oracle) si parola. altfel, daca securitatea nu este asigurata, puteti introduce userid-ul/parola in comanda runform din linia de comanda:
           runform form_name scott/ocelot

Pentru dumneavoastra, ca proiectant, este mai placut sa rulati o forma din interfata SQL*Forms (Design). In acest caz, sunteti deja logat ca un user Oracle si trebuie sa selectati doar Execute din meniul Action al SQL*Forms.

Este de asemenea posibil sa invocati Runform din SQL*Plus. Introduceti RUNFORM la prompt-ul SQL*Plus. Va fi folosit login-ul curent de Oracle.


Navigarea in cadrul unei forme

O forma contine blocuri care sunt afisate pe una sau mai multe pagini. Puteti trece de le un bloc la altul apasand cheile [Next Block] si [Previous Block]. Intr-un bloc folositi cheile [Next Field] si [Previous Field] pentru a muta cursorul de la un camp la altul. Toate aceste patru chei lucreaza in mod circular; de exemplu, daca sunteti la ultimul camp al inregistrarii, apasand [Next Field] va veti duce pe primul camp din inregistrare. In Runform nu exista cheile [Next Page] si [Previous Page]. O pagina se va afisa cand cursorul se muta pe un camp din pagina. Cu alte cuvinte, apasand una din cheile mentionate anterior se va afisa o pagina diferita daca obiectul tinta (camp sau bloc) este in acea pagina.


Un cuvant despre functia cheilor

Dupa cum am mentionat anterior, SQL*Forms este condus de functia cheii si pentru ca ruleaza pe multe platforme hardware, cheile de miscare folosite pentru a executa o functie depind de terminalul folosit. Din acest motiv, cartea refera cheile prin functia lor si nu prin nume. Cea mai importanta cheie de localizare este [Show Keys], care afiseaza o lista completa a cheilor disponibile user-ului in orice moment.

Formatul ecranului

Un ecran tipic SQL*Forms afiseaza text explicativ, elemente grafice si campuri care accepta valori de date. In partea de jos a ecranului se afla linia de mesaj si linia de stare.

                _______________________________________________________
               |                                                       |
               |  ---------------------------------------------------  |
               |  ORDERS                                               |
               |                                                       |
               |  Order ID   610           Order Date    07 JAN 87     |
               |  Client ID                Client Number TKB SHOP      |
               |  ---------------------------------------------------  |
               |  ITEMS                                                |
               |                                                       |
               |  OrderID  ItemNo  Code  ActPrice  Quantity ItemTotal  |
               |   610       1    100860   35.00      1       35.00    |
               |   610       2    100870    2.80      3        8.40    |
      Message  |   610       3    100890   58.00      1       58.00    |
      Line-----|-->FRM 42531 Enter a query pFind to execute&F4to cancel|
      Status---|-->Count:=0        ENTER QUERY               Replace   |
      Line     |_______________________________________________________|



Linia de mesaj

Linia de mesaj afiseaza atat mesaje SQL*Forms cat si mesaje specifice aplicatiei.


Linia de stare

De la stanga la dreapta, linia de stare poate contine:

Count:
Indica numarul inregistrarilor refacute si afisate de o cerere. De fiecare data cand afisati o inregistrare adusa de o cerere contorul este crescut. cand ati adus ultima inregistrare, un asterisc (*) este afisat inaintea contorului.
^
Indica faptul ca in bloc, inaintea inregistrarii curente se afla alte inregistrari.
Indica faptul ca in bloc, dupa inregistrarea curenta se afla alte inregistrari.
ENTER QUERY
Indica faptul ca ati apasat [Enter Query] si nu ati apasat inca [Execute Query] sau [Exit/Cancel].
List
Afiseaza cand exista o lista d valori asociata campului curent.
Insert or Replace
Afiseaza modul caracter curent, atat Insert cat si Replace.

UTILIZAREA FORMELOR PENTRU INTEROGAREA BAZEI DE DATE


Doua tipuri de interogare

Inregistrari de interogare

Adesea un operator foloseste o forma doar pentru a cere informatii de la baza de date. Puteti face efectiv cereri prin SQL*Forms fara a avea cunostinte de sintaxa SQL. Pe de alta parte, daca sunteti un user experimentat de SQL, este posibil sa completati procesarea implicita SQL*Forms cu propriile dumneavoastra predicate SQL. Exista doua tipuri generale de cereri:


CONDITII VALIDE DE CAUTARE :

        Camp          Valoare         Comentarii
        -----         --------        -----------

        EMPNO         7902            urmareste potrivirea exacta.
                      7800            introducere valida a unui numar de camp.
                      %900            implicat operatorul LIKE.

        ENAME         JONES           nu sunt necesare cote.
                      _R%             implicat operatorul LIKE.

        HIREDATE      10-jan-90       urmareste potrivirea exacta.
                      <10-jan-90      nu are nevoie de cote.

        SAL           3000            urmareste potrivirea exacta.
                      <>3000          urmareste nepotrivirea exacta!
                      #between 1200   # permite operatori SQL.
                      and 2000

        JOB           MANAGER         urmareste potrivirea exacta
                      :J              asigneaza campului un nume variabil cu J
                                      si produce mutarea lui QUERY WHERE pentru
                                      afisare.
                      :               asigneaza campului un nume de variabila
                                      implicit (:1,:2,etc) si produce mutarea
                                      lui Query Where pentru afisare.



Conditii de cautare

Exemple de conditii valide de cautare sunt expuse in pagina anterioara. Blocul este bazat pe tabela EMP. Dupa ce sunt introduse valorile/conditiile de cautare, user-ul apasa [Execute Query].SQL*Forms va construi o declaratie de selectie, care reprezinta un SI logic intre toate conditiile specificate. Iata cateva puncte de referinta despre conditiile de cautare:



Query Where pentru cereri complexe

In timpul introducerii unui criteriu de cautare intr-o forma, cand operatorul tipareste o coloana (:) in pozitia primului caracter al campului, este triggerat mecanismul Query Where din SQL*Forms. La introducerea lui :J ( pe pagina opusa), de exemplu, coloana prefix identifica pe J ca variabila care poate fi folosita pentru a referi coloana JOB in Query Where pe care SQL*Forms il afiseaza acum.

Folositi Query Where pentru:

Pentru a restrictiona cererea la angajatii care detin slujba de MANAGER sau PRESIDENT, user-ul introduce urmatoarele informatii:

         _____________________________________________________________
        |                                                             |
        |               SWEENEY TODD'S BEANSPROUT FACTORY             |
        |  --DEPARTMENT---------------------------------------------  |
        | |   Dept. No.:     Name:           Location:              | |
        | |_________________________________________________________| |
        |    _____________________________________________________    |
        |  _|                   Query Where                       |_  |
        | | |                                                     | | |
        | | | Criteria:  :j = 'MANAGER' OR :j = 'PRESIDENT'       | | |
        | | |                                                     | | |
        | | |_____________________________________________________| | |
        | |_________________________________________________________| |
        |                                                             |
        | Press Do to execute query, PF4 to return to enter query mode|
        | Count: *0             ENTER QUERY             Replace       |
        |_____________________________________________________________|
         Fig.2.1: Folosirea lui Query Where

User-ul apasa apoi [Accept] pentru a executa cererea. SQL*Forms va face un SI logic intre conditiile Query Where si orice alte conditii introduse in campuri si va formula o declaratie de selectie. Query Where poate fi folosit si pentru a specifica o coloana sau mai multe pentru a ordona datele asa cum se arata in urmatorul exemplu:

         ____________________________________________________________
        |                                                            |
        |                                                            |
        |    ____________________________________________________    |
        |  _|                   Query Where                      |_  |
        | | |                                                    | | |
        | | | Criteria:  ORDER BY :J                             | | |
        | | |                                                    | | |
        | | |____________________________________________________| | |
        | |________________________________________________________| |
        |                                                            |
        |                                                            |
        |____________________________________________________________|
        Fig.2.2:Folosirea lui Query Where pentru a ordona linii

Puteti prescurta procesul de asignare de nume variabile campurilor doar prin introducerea unei coloane (:) in fiecare camp pe care doriti sa-l referiti in Query Where; in acest caz, referiti campurile prin numere (:1, :2, etc.). De exemplu, daca plasati o coloana in campurile EMPNO, JOB si HIREDATE, introducerea dvs. in Query Where poate arata astfel:

         ____________________________________________________________
        |                                                            |
        |                                                            |
        |    ____________________________________________________    |
        |  _|                   Query Where                      |_  |
        | | |                                                    | | |
        | | | Criteria:  :J = 'MANAGER' and :3 > '31 dec 60'     | | |
        | | |            order by :1                             | | |
        | | |                                                    | | |
        | | |____________________________________________________| | |
        | |________________________________________________________| |
        |                                                            |
        |                                                            |
        |____________________________________________________________|
        Fig.2.3:Nume variabile implicite in Query Where


Utilizarea SQL*Forms pentru a executa SELECT-urile

Urmatoarele exemple prezinta functiile Forms care trebuie folosite pentru a extrage seturi de date din baza de date si apoi declaratiile SQL construite de SQL*Forms pentru a realiza refacerea.

        Declaratie SQL             Functie SQL*Forms
        --------------             -----------------

        SELECT * FROM EMP          [Execute Query]

        SELECT * FROM EMP          1. [Enter Query]
        WHERE JOB = 'CLERK'        2. [Next Field] in campul job
           AND...                  3. Tastati in plus parametrii cererii care
                                      corespundcampurilor
                                   4. [Execute Query]

        SELECT COUNT (*)           1. Setati conditiile Enter Query daca doriti
        FROM EMP                   2. Apasati [Count Query Hits] in loc de
                                      [Execute Query]

        SELECT * FROM EMP          1. [Enter Query]
        WHERE HIREDATE BETWEEN     2. Tipariti :D (sau :)
        '1-JAN-91' AND             3. [Execute Query]
        '30-APR-91'                4. In partea de sus tastati:
                                        
                                        :D between '1-JAN-91' AND
                                                '30-APR-91'
        
                                   5. [Accept/Commit] executa cererea




Ce trebuie sa retineti despre interogare:

OPERATII DML PRIN FORME




Operatii DML prin forme

Modul Insert este cel implicit

La intrarea intr-o forma tipica sunteti in modul insert. Orice cheie de miscare QWERTY faceti este interpretata de SQL*Forms ca o incercare de inserare a unei noi inregistrari. Deci, in scopul inserarii unei noi inregistrari, tot ce se cere este sa incepeti sa tastati!
Exista o cheie numita [Create Record] care este folosita cand exista inregistrari afisate pe ecran si cand doriti sa creati spatiu pentru o noua inregistrare in locatia curenta a cursorului. Nu este nevoie sa folositi aceasta cheie daca cursorul se afla deja pe o inregistrare vida.

Duplicarea inregistrarilor si campurilor la inserare


Pentru a insera o inregistrare care este asemanatoare cu una existenta, mai intai afisati inregistrarea. Alcatuiti inregistrarea pe care doriti s-o copiati si apasati [Create Record]. Acum este realizata o inregistrare vida, si inregistrarea existenta este imediat deasupra ei. Puteti folosi [Duplicate Record] si [Duplicate Field] pentru a copia o parte sau toata inregistrarea precedenta in cea curenta. Dupa apasarea ambelor chei, puteti modifica valorile campului care a fost copiat. Aplicarea lui Update

In scopul executiei actiunii de update asupra unei linii din baza de date, trebuie mai intai sa executati o cerere pentru a afisa linia. Faceti inregistrarile dorite in inregistrarea de pe ecran. Stergerea inregistrarilor

Ca si la update, trebuie sa cereti mai intai ca linia sau liniile sa fie sterse. Apasati [Delete] pentru a muta inregistrarea pe ecran si marcati-o pentru stergere. Schimbari permanente

De fiecare data cand doriti sa realizati o operatie DML folosind SQL*Forms, lucrati cu o copie a tabelelor din baza de date. Pentru a putea face inserare, update sau stergere permanenta trebuie sa le 'commit' din baza de date. Pur si simplu apasati [Commit].
Daca mesajul

FRM-40400: Transaction complete --1 records posted and commited

apare in linia de mesaj, veti sti ca baza de date a fost update-ata.

Folosirea functiilor SQL*Forms pentru a executa DML

        Declaratie SQL          Functie SQL*Forms
        --------------          -----------------

        UPDATE EMP              1. Cererea inregistrarii lui SMITH
        SET SAL = 500           2. [Next Field] in campul Sal
        WHERE ENAME = 'SMITH'   3. Modificare intrare la 500
                                4. [Commit] scrie modificarile in baza de date

        INSERT INTO EMP         1. Tipariti in noua inregistrare a angajatului
        (...) VALUES (...)      2. [Commit] scrie inregistrarea in baza de date

                                Nota: Modul INSERT este modul implicit
                                SQL*Forms. Daca forma nu este in Enter Query
                                Mode SI cursorul este pe o inregistrare vida,
                                sunteti in modul INSERT.

        DELETE FROM EMP         1. Cererea inregistrarii lui SMITH
        WHERE ENAME = 'SMITH'   2. [Delete Record]
                                3. [Commit] muta inregistrarea din baza de date

        COMMIT                  [Commit]

        ROLLBACK                [ClearForm/Rollback]

Iesirea dintr-o forma

1. Apasati [Exit/Cancel] Daca nu suntem in timpul unor modificari, va veti intoarce in locul care ati invocat RUNFORM. Daca, cumva, au ramas modificari neefectuate SQL*Forms va va cere intr-o cutie de dialog sa le realizati sau sa le anulati inaintea iesirii din forma.

EXECUTAREA COMENZILOR FOLOSIND SELECTIILE DIN MENU


Linia de sus a figurii de mai jos reprezinta meniul care se afiseaza de fiecare data cand apasati [Menu] in SQL*Forms(Runform). Fiecare selectie de meniu principal reprezinta un submeniu pull-down; submeniul Action este prezentat mai jos:
         ____________________________________________________________
        | Action  Edit  Block  Field  Record  Query  Help            |
        | -------------Sweeney Todd's Beansprout Factory------------ |
        |  _|Rollback| ENT ________________________________________  |
        | | |Commit  |                                             | |
        | | |reFresh |    Name: ACCOUNTING    Location: NEW YORK   | |
        | | |Print   |                                             | |
        | | |Exit    |                                             | |
        | |_|________|_____________________________________________| |
        |                                                            |
        |  ___EMPLOYEES____________________________________________  |
        | |                                                        | |
        | | ID   Surname Job       Mgr# Started Salary Commision Gr| |
        | | 7782 CLARK   MANAGER   7893 09/06/81 2450.00         3 | |
        | | 7839 KING    PRESIDENT      17/11/81 5000.00         5 | |
        | | 7934 MILLER  CLERK     7782 23/01/82 1300.00         2 | |
        | |________________________________________________________| |
        |                                                            |
        |  Count: 1                                     Replace      |
        |____________________________________________________________|
        Fig.2.5:Meniul de operare al SQL*Forms

In figura de mai jos, fiecare submeniu este afisat sub alegerea din meniu. Bineinteles, in modul run, doar un subeniu poate fi afisat la un moment dat.

        Action   Edit  Field     Block      Record       Query         Help
        ------   ----  -----     -----      ------       -----         ----
        Rollback Cut   Previous  Previous   Previous     Enter         Help
        Commit   cOpy  Next      Next       Next         eXecute       Keys
        reFresh  Paste Clear     Clear      scroll Up    Last criteria List
        Print    Edit            Duplicate  Scroll down  Cancel        Display
        Exit                                Clear        count Hits
                                            Remove       Fetch next set
                                            Insert
                                            Duplicate
                                            Lock

Executia comenzilor folosind selectiile din menu

Doar daca nu este dezactivat in mod explicit de catre proiectant, un meniu de operare este disponibil in fiecare forma.

User-ul poate forta afisarea meniului principal prin apasarea cheii [Menu]. Meniul apare de-a lungul partii de sus a ecranului si prima selectie din meniu, Action, este supraluminata. Fiecare selectie din meniu reprezinta un submeniu pull-down de comenzi.

Cele mai multe chei de operare au o selectie de meniu echivalenta. Un user neexperimentat poate deveni as in SQL*Forms Version 3 fara a trebui sa invete multe functii de chei.
Meniul principal este prezentat mai jos:

           Action  Edit  Block  Field  Record  Query  Help
           -----------------------------------------------
Exista cateva cai de selectare a unei optiuni din meniu:


Pentru a iesi din meniu (adica meniu inactiv) apasati [EXIT].

Nota: Cand meniul este activ, majoritatea cheilor functionale sunt dezactivate.

Lista pop-up de valori

O lista de valori este o fereastra care apare pe ecran care permite user-ului sa vizualizeze, sa caute sau sa copieze valorile valide curente ale campului. De fiecare data cand o lista de valori este disponibila campului curent, va fi luminat coltul din dreapta-jos al ecranului. Pentru a accesa lista, apasati [List].

         ______________________________________________________________
        |                                                              |
        |              SWEENEY TODD'S BEANSPROUT FACTORY               |
        |  ____DEPARTMENT____________________________________________  |
        | |                        ______________                    | |
        | |  Dept. No.: 10  Name: |  Valid Jobs  |                   | |
        | |_______________________|              |___________________| |
        |                         |  Find:       |                     |
        |  ____EMPLOYEES__________|______________|___________________  |
        | |                       |_| ANALYST    |                   | |
        | |                       | | CLERK      |                   | |
        | |                       | | MANAGER    |                   | |
        | |  ID  Surname Job      | | PRESIDENT  |y   Commission Gr  | |
        | | 2782 CLARK   MANAGER  | | SALESMAN   |0.00           3   | |
        | | 7839 KING    PRESIDENT| |            |0.00           5   | |
        | | 7934 MILLER  CLERK    |_|            |0.00           2   | |
        | |                       |_|____________|                   | |
        | |__________________________________________________________| |
        |                                                              |
        |                                                              |
        |______________________________________________________________|
        Fig.2.6:Exemplu de lista de valori

Pentru a face o selectie intr-o lista, folositi cheile [Down] si [Up] pentru a va muta pe selectia dorita si apasati [Accept]. Restrictionarea listei de valori

Este posibil ca intr-o fereastra a listei sa faceti restrictii folosind facilitatea FIND. Folositi cheia [Next Field] pentru a va muta in campul FIND si introduceti o restrictie. Un % va fi apendad la sfarsitul fiecarei conditii de cautare. Folositi wildcard-uri unde 'ajutati' in mod necesar cautarile. Cand ati introdus conditia de cautare apasati [Next Field] sau [List] pentru a afisa lista astfel restrictionata.


                        __________________________
                       |            ____________  |
                       |  Find:    |            | |   2 Inroduceti valorile de
                 1  -->|           |____________| |---               cautare
                   |   |__________________________|   |
                   |   |                          |   |
                   |---|                          |< --|    3 [Next Field]
         Next Field    |                          |              or [List]
                       |                          |
                       |__________________________|

Daca sunt intoarse mai multe selectii, alegeti-o pe cea dorita folosind [Down]. Apasati [Accept] pentru a copia selectia in ecranul campului.

Editor de texte pentru campurile pop-up

Fiecare camp introductibil pe ecran are o versiune pop-up care apare de fiecare data cand mutati cursorul pe camp si apasati [Edit]. Editarea ofera facilitati de suprimare, adaugare, cautare si cautare cu inlocuire.

Este in mod particular folositor pentru campurile de tip long sau char. Pentru a accesa un editor pentru un camp particular:

  1. Pozitionati cursorul pe camp.
  2. Apasati [Edit].
  3. Introduceti textul folosind cheile de editare corespunzatoare.


Chei de editare texte


Urmatoarele functii sunt folosite doar in editorul campului pop-up:
[Beginning Line]
muta cursorul pe primul caracter din linie.
[Copy]
copiaza o zona de text, dupa ce a fost selectata cu [select], intr-un buffer.
[Cut]
suprima zona de text dupa ce a fost selectata cu [Select] si o stocheaza in buffer.
[DeleteLine]
sterge linia curenta si o stocheaza in buffer.
[End of Line]
muta cursorul la dreapta ultimului caracter din linie.
[First Line]
muta cursorul in partea de sus a textului din fereastra.
[Last Line]
muta caracterul pe ultimul caracter din text.
[Paste]
lipeste orice reprezinta buffer curent la locatia curenta a cursorului.
[Return]
insereaza o linie separatoare in orice punct al campului pop-up; daca cursorul este pozitionat pe primul caracter, insereaza o linie vida.
[Search]
afiseaza o cutie de dialog pentru a introduce criteriile de cautare si inlocuire; face cautariinaintea sau dupa pozitia curenta a cursorului.
[Select]
marcheaza un punct de pe ecranul editorului care este folosit de SQL*Forms pentru 'decuparea' textului.

Bineinteles ca si alte chei de editare precum cheile cursorului, [Insert Replace], [Delete Character] si [Delete Backward] sunt folosite in editorul campului pop-up.

Cutii Alert

Toate prompturile SQL*Forms apar intr-o cutie de dialog Alert. Alert este o fereastra care apare in mijlocul ecranului, acoperind partial afisajul curent. Alert-urile va indica o conditie rezultata in timpul ultimei actiuni. Trebuie sa raspundeti la aceasta conditie in ordinea in care a provenit.

         _______________________________________________________________
        |                                                               |
        |             SWEENEY TODD'S BEANSPROUT FACTORY                 |
        |  _______DEPARTMENT__________________________________________  |
        | |                                                           | |
        | |  Dept. No.: 10    Name: ACCOUNTING   Location: NEW YORK   | |
        | |___________________________________________________________| |
        |         _______________________________________________       |
        |  __EMPL|                                               |____  |
        | |      |  CAUTION                                      |    | |
        | |  ID  |                                               |n Gr| |
        | | 7782 |  Do you want to commit the changes ?          |  3 | |
        | | 7839 |                                               |  5 | |
        | | 7934 |     Yes         No          Cancel            |  2 | |
        | |______|_______________________________________________|____| |
        |                                                               |
        |                                                               |
        | Press Tab to move between choices, Select to select           |
        | Count: 1                                    Replace           |
        |_______________________________________________________________|
        Fig.2.7: O cutie Alert

De exemplu, cand apasati [Enter Query] pentru modificari, fereastra Alert prezentata mai sus va apare pe ecran. Trebuie sa selectati (Yes) care va face modificarile, (No) ca sa le anulati, sau (Cancel) care lasa modificarile nealterate inainte sa se produca procesarea.


Capitolul 2 Exercitii


Utilizarea unei forme


Aceste exercitii trebuie sa va familiarizeze cu functiile disponibile SQL*Forms.


Exercitiul A: Cereri<



  1. Logarea la SQL*Forms (Runform):
                    runform fm3_demo userid/password

    Dupa ce forma a aparut pe ecran, observati meniul de comanda din partea de sus a paginii. Puteti folosi oricare din functiile cheie din meniu pentru a executa comenzi sau apasati o cheie functioanala.

  2. Apasati [Show Keys]

    Va apare pe ecran o fereastra care prezinta o lista de functii si cheile lor corespunzatoare. Sageata in jos din partea stanga-jos a ecranului indica ca exista mai multe inregistrari de afisat. Apasati [Scroll Down] pentru a vedea restul listei. Apasati [Select] pentru a va intoarce in forma.

  3. Executati o cerere globala:

    Apasati [Execute Query]. Pe ecran va apare order 601 cu optiunile asociate.

  4. Apasati [Down] pentru a afisa urmatoarea inregistrare

    Retineti ca, cand se afiseaza o noua inregistrare, liniile de relatare sunt si ele automat afisate. Blocurile ORD si ITEM sunt legate printr-o relatie "master/detail" care e specificata programatorului in momentul in care blocurile au fost create.

  5. Apasati [Enter Query]

    Observati ca valorile implicite pentru Order Number, Date Ordered si Commplan au fost sterse. Campurile implicite sunt utile pentru inserarea de noi inregistrari, dar nu au influenta asupra cererilor.

  6. Incercati executarea urmatoarelor cereri:
               Faceti cautari dupa:                     Inregistrarile intoarse:
            a. Order Number 612                                     1
            b. Order Date sau dupa 1 January 1987                   12
            c. Order Total intre 500 si 1500                        5
            d. Commplan B                                           3
    


  7. Fara sa le afisati, determinati cate inregistrari satisfac ultimul set de conditii de cerere.

    Apasati [Enter Query] de doua ori pentru a trimite ultimul criteriu de cerere. Apoi apasati [Count Query Hits] pentru a afla cate inregistrari satisfac conditia de cerere. Va aflati inca in modul de interogare. Apasati [Cancel] pentru a anula cererea.

  8. Cereti relatii dupa order 612

    Afisati order 612 pe ecran. Mergeti la blocul Item si executati o cerere sa afisati toate item-urile cu criteriul Quantity mai mare decat 100. Va trebui sa gasiti doar 1.




Exercitiul B: Inserarea de noi inregistrari



  1. Pregatiti sa inserati o noua ordine:

    Mutati cursorul in blocul Orders si curatati blocul. Observati ca noua inregistrare este deja umpluta cu valori. Acestea includ:


    Puteti scrie altceva in Orderdate si Commplan pentru ca aceste campuri permit acest lucru. Orderid este un camp in care nu se pot introduce valori si din acest motiv nu poate fi modificat.

  2. Mutati-va in campul Customer Id. Observati ca va apare luminat [List] in linia de stare.

  3. Apasati [List] pentru a afisa o lista de numere valide ale clientilor.

  4. Apasati [Previous Field] pentru a va muta in campul cautat in ordinea cautarii in lista.

    Veti cauta pe Vollyrite, dar nu stiti cum sa ajungeti la el. Cautati toti clientii al caror nume incepe cu VOL tastand vol in campul de intrare si apoi apasand [Next Field]. Lista se va reafisa, aratand unicul client al carui nume satisface cautarea.

  5. Apasati [Accept] informatiile despre clientul Volleyrite in campurile ecranului.

  6. Mutati-va in blocul ITEM si inserati o inregistrare cu urmatoarele informatii:
               No. Code   Descrip             Price    StdPrice   Qty    Itemtot
               --- ----   ------------------- -------  ---------  ----   --------
                1  100861 ACE TENNIS RACKETS    45         45      50     2250
    
               Poate ati observat deja cateva lucruri care s-au intamplat in timpul
               tastarii:
    
               a. O lista de valori pentru codul produsului a aparut la intrarea in
                  campul cod.
    
               b. Valorile pentru pretul standard, si campurile item total au
                  aparut automat.
    
               c. In blocul Order, campul Total a fost update-at pentru a reflecta
                  item total.
    
               d. Campurile de bani sunt automat formate cu puncte zecimale.
                  Formarea campurilor se face prin definirea de masti format pentru
                  campuri. Alte actiuni sunt realizate prin parti de cod numite
                  Triggere.
    


  7. Faceti o copie a primei inregistrari.

    Cursorul este plasat imediat dupa inregistrarii pe care abia ati creat-o. Apasati [Duplicate Record]. Acum aveti o a doua linie item identica cu prima. Modificati numarul item la2 si pretul actual la 30; acest pret va fi respins pentru ca este mai mic decat 80% din pretul standard. Imbunatatiti-l.

  8. Creati-va noile inregistrari permanente in baza de date.

    Apasati [Commit]. Cele 3 noi inregistrari au fost scrise in baza de date.


    Exercitiul C: Modificarea inregistrarilor bazei de date



    1. Updatarea ordinii.

      Mergeti in blocul Order si updatati noua inregistrare prin tastarea datei curente in campul Ship Date. Faceti (commit) modificarea.

    2. Verificati inregistrarile inserate in baza de date interogand ordinea.

    3. Acum stergeti ordinea daca puteti.

      SQL*Forms va informeaza daca nu puteti sterge un order cand linia items exista. Acesta este alt trigger de lucru, protejand integritatea tabelelor.

    4. Stergeti linia items.

      Mergeti in blocul Item si apasati [Delete Record] de doua ori. Inregistrarile sunt sterse de pe ecran, dar nu si din baza de date. Apasati [Commit] pentru a face stergeri permanente. Acum stergeti order-ul.


    Exercitiul D: Utilizarea meniului de comanda



    1. Apasati [MENU] si apoi uitati-va sa vedeti ce optiuni sunt disponibile din meniu.

    2. Intoarceti-va in meniul Query si alegeti optiunea Entry ca sa puteti introduce o cerere pentru a cauta toate order-ele inregistrate in prima jumatate a lui 1987.

    3. Tastati :ship in campul Date Shipped, care poate fi folosit ca o variabila in declaratia Query Where?.

    4. Executati cererea din meniu.

    5. Tastati in campul Query Where?:
                      :ship between '01-jan-87'
                      and '30-jun-87'
      


    6. Daca aveti timp, faceti exercitiul E. Altfel, folositi meniul pentru a iesi din forma selectand optiunea Exit din meniul Action.


    Daca aveti timp

    Exercitiul E: Inserarea unui nou client



    1. Creati un nou order.

      Secventa se face automat, prin folosirea valorii urmatoare dintr-o secventa Oracle Version 6 ca valoare implicita.

    2. Mutati-va in campul Customer Id. Acest order este pentru un nou client, Scott's Sporting Goods.

    3. Apasati [Help] in oreder pentru a adauga SCOTT'S SPORTINGS GOODS ca nou client.

    4. Adaugati urmatoarele informatii pentru noul client (apasand [Next Field] dupa ce completati fiecare camp):
                      Customer Name:   SCOTT'S SPORTING GOODS
                      Street Address:  100 Davis Dr.
                      Town:            Street
                      County:          Somerset
                      Pcode:           ST54EL
                      Phone:           598-8888
      


    5. Aduceti lista vanzarilor reprezentative.

    6. Din lista, alegeti Martin ca vanzari reprezentative.

    7. Mutati-va in campul de comentarii pentru a adauga comentarii despre client.

      Campul de comentarii este un camp long in baza de date. SQL*Forms accepta campuri de tipul long. In plus, accepta un editor pentru toate campurile. Puteti folosi editorul cand este afisata versiunea pop-up a unui camp.

    8. Apasati cheia [Edit] pentru a afisa versiunea pop-up a campului. Utilizati urmatoarele chei necesare pentru a edita un camp:
                              [Beginning Line]
                              [Copy]
                              [Cut]
                              [Delete Line]
                              [End of Line]
                              [First Line]
                              [Last Line]
                              [Paste]
                              [Search]
                              [Select]
      


    9. Apasati [Accept] pentru a parasi editorul pop-up.

    10. Aceasta inregistrare client este completa.

    11. La intoarcerea din forma demo puteti continua sa introducetii detalii pentru noul odrder sau pur si simplu sa iesiti din SQL*Forms.

      Exista solutii neformale a acestor exercitii.