DEFINIREA CAMPURILOR


Continutul acestui capitol


Acest capitol descrie crearea si atributele de baza ale unui camp. El introduce chei de accelerare care produce navigarea rapida prin interfata.

Definirea campurilor

                           Forma Field Definition
         _______________________________________________________________
        |                                                               |
        | -----------------------Field Definition---------------------- |
        |  ___________________________________________________________  |
        | | Field Name:        MGR                                    | |
        | | Sequence Number:   6   Data Type:NUMBER Select Atributes  | |
        | | Field Length:      4   Query Length: 4   Display Length: 4| |
        | | Screen Position: X:34  Y:13   Page:1    Editor Atributes  | |
        | | Format Mask:                                              | |
        | | Default Value:                                            | |
        | | Hint: Enter the payroll number of this employee's manager | |
        | | Valid Range:  Low:                  High:                 | |
        | | Enforce Key:                                              | |
        | | List of Values:  Title:             Pos:  X:    Y:        | |
        | |-----------------------------------------------------------| |
        | | ---------------List of Values SQL Text------------------- | |
        | |                                                           | |
        | |-----------------------------------------------------------| |
        | | ----------------------Comment---------------------------- | |
        | |                                                           | |
        | |___________________________________________________________| |
        | Enter a one line hint for tha field                           |
        | Frm:  personnel    Blk: EMP      Fld: MGR    Trg:       Ins   |
        |_______________________________________________________________|

Definirea campurilor


Creati sau modificati campuri in interfata SQL*Forms (Design) cu ajutorul formei Field Definition (prezentata in pagina anterioara) sau al tabelei spread Field Definition. In urmatoarele pagini sunt explicate toate caracteristicile care pot fi asignate unui camp. Subiectele sunt prezentate in aceeasi ordine ca cea din lista de caracteristici ale campurilor din forma Field Definition.

        Caracteristica Campului  Explicatie
        -----------------------  ----------

        Field Name               numele pe care SQL*Forms il foloseste pentru a
                                 identifica un camp. Numele trebuie sa fie unic
                                 pentru campurile din acelasi bloc.

                                 Daca campul este un camp tabela de baza,numele
                                 sau trebuie sa fie acelasi cu cel din coloana
                                 care ii corespunde. Daca campul nu este tabela
                                 de baza, se recomanda sa-i asignati un prefix
                                 (ca SCR_ sau NBT_)pentru a indica acest lucru.

        Sequence Number          indica secventa campului in cadrul blocului si
                                 daca campul permite introducere, ordinea in
                                 care se muta cursorul in camp in timpul
                                 executiei.

                                 Puteti modifica direct numarul de secventa;
                                 SQL*Forms va reajusta automat numerele de
                                 secventa pentru celelalte campuri din bloc.

                                 Dupa cum ati vazut deja, numarul de secventa
                                 poate fi afectat daca 'taiati' sau 'lipiti'
                                 campuri.

        Data Type                determina ce tipuri de valori va permite SQL*
                                 Forms sa introduceti in camp si cum vor fi
                                 afisate de camp.

                                 Valoarea implicita pentru campurile create in
                                 screen painter este CHAR.

Mai Multe Despre Tipurile de Date



*******************************Aici lipsesc 2 pagini**************************** ??????????????
        Atributul selectat      Actiunea
        ------------------      --------
        Required                Campul nu poate fi null. Toate campurile
                                corespunzand coloanelor NOT NULL din tabela de
                                baza trebuie sa aiba acest atribut selectat.

        Input Allowed           Operatorul poate muta cursorul pe camp (in
                                afara modului query) si insera o valoare.

        Update Allowed          Operatorul poate modifica valoarea acestui camp
                                din orice inregistrare.

        Update if Null          Operatorul poate modifica valoarea acestui camp
                                doar in acele inregistrari reclamate de o
                                cerere unde valoarea curenta a campului este
                                nula.

        Query Allowed           Operatorul poate muta cursorul in camp cand
                                forma este in modul query si poate introduce o
                                conditie de selectie a cererii.

        Uppercase               Literele mici sunt convertite in mari pe masura
                                ce sunt introduse in camp; acest atribut nu
                                afecteaza afisarea valorile existente in
                                inregistrari, sau valorile copiate in camp prin
                                triggere.

        Echo Input              Va fi afisata valoarea curenta a campului.

        Fixed Length            Campul trebuie completat cu o valoare a carei
                                lungime sa fie egala cu cea a campului. Daca,
                                cumva, campul nu are atrbutul Required selectat
                                o intrare acceptabila este o valoare NULL.

        Automatic Hint          Sugestia campului (mesaj ajutator) va fi afisat
                                automat de fiecare data cand cursorul intra in
                                camp.

        Automatic Skip          Cursorul se muta automat pe urmatorul camp cand
                                caracterul de pe ultima pozitie a campului este
                                modificat sau introdus.

Lungimea Campului si Caracteristicile de Pozitionare


Determinarea coordonatelor ecran:


        X=1, Y=1                                                X=80, Y=1
         _______________________________________________________________
        |                                                               |
        |                                                               |
        |                                                               |
        |                                                               |
        |                                                               |
        |                                                               |
        |                                                               |
        |                                                               |
        |_______________________________________________________________|
        X=1, Y=20                                               X=80, Y=20


Definirea Lungimii Campului


Trei lungimi sunt asociate cu un camp.

Field Length
determina numarul maxim de caractere care poate fi introdus in camp sau inserat sau update-at. Poate fi mai mare decat Display Length. Nu trebuie sa fie mai mic decat Display Length.
Query Length
determina numarul maxim de caractere care poate fi introdus in camp sau cerut. Poate fi mai mare decat Field Length (pana la 255 caractere) pentru a permite conditii complexe de cerere.
Display Length
determina numarul de caractere spatiu care sunt afisate pentru un camp. Aceasta lungime poate fi schimbata in screen painter la fel de bine ca in forma Field Definition si in tabela spread. Display Length nu poate fi mai mare decat Field Length.

Screen Position


Caracteristica Screen Position consta in urmatoarele trei setari:
X
coordonata orizontala a celui mai din stanga punct al campului din pagina
Y
coordonata verticala a celui mai din stanga punct al campului din pagina
Pagina
numarul paginii in care apare campul

Caracteristica screen position descrie de fapt pozitia campului in pagina, si nu pe ecran. Daca pagina nu este de tip pop-up, cateodata, pozitia ecran este aceeasi cu pozitia in pagina. Capitolul 12 discuta in detaliu caracteristicile paginii.


Determinarea coordonatelor ecran

Coordonata X este 1 la cea mai din stanga pozitie din pagina. Coordonata X se incrementeaza pe masura ce cursorul se muta la dreapta.

Coordonata Y este 1 la cea mai de sus pozitie din pagina si este incrementata pe masura ce cursorul coboara in jos pe ecran.

Figura de pe pagina opusa este bazata pe un ecran de dimensiune 80 pe 20.


Alinierea la dreapta, Camp scrollat


Evitati definirea campurilor cu tipuri de date aliniate la dreapta ca scrollate (Field Length mai mare decat Display Length). Aceste campuri deruteaza operatorul la introducerea datelor.


Utilizarea campurilor diferite de tabela de baza


Ati vazut deja cum campurile tabela de baza sunt folosite pentru a afisa si manipula informatii din baza de date.

Campurile diferite de tabela de baza au multe utilizari:

Numirea campurilor diferite de tabela de baza



Se recomanda sa dati campurilor diferite de tabela de baza nume care sa indice ca sunt doar campuri ecran.

In aceasta carte, prefixul SCR_ (pentru SCREEN) este folosit pentru a identifica campuri diferite de tabela de baza care sunt adaugate blocurilor tabela de baza. Daca un bloc nu este bazat pe o tabela, prefixul SCR_ nu este folosit.

Crearea Campurilor

In Definition Form


Pornind din Field Definition Form (sau Spread Table), apasati [Insert Record]. Definiti campul inserand Field Name, Sequence Number Datatype si Select Attributes.

Majoritatea campurilor create manual nu sunt tabela de baza. Daca va aflam in acest caz, asigurati-va ca atributul BASETABLE este DESELECTED.

Trebuie sa fie specificat Field length; Query si Display length pot fi omise. Daca campul urmeaza a fi afisat, specificati-i numarul de pagina.

In Screen Painter


Pentru a crea un nou camp, indicati pur si simplu punctele finale ale campului folosind cheia [Select], apasati [Define Field], apoi urmariti aceiasi pasi de la definirea unui camp.

Daca un nou camp trebuie sa fie similar cu unul existent, puteti taia ([Cut]) campul existent, si apoi sa-l lipiti [Paste] de doua ori. Apoi trebuie sa schimbati numele unei instante a campului daca este in acelasi bloc in ambele.


Redefinirea unui camp din Screen Painter


Puteti accesa forma Field Definition sau tabela spread din screen painter urmarind pasii:
  1. Mutati cursorul pe camp.
  2. Apasati [Define Field].
  3. Pentru a schimba formatul de afisare,apasati [Change Display Type]

Chei Acceleratoare


     * [Zoom In],                   [Zoom Out]
        
              |         FORM                ^
              |         BLOCK               |
              |         FIELD               |
              |         FIELD TRIGGER       |
              |                             |


Scurtaturi in Navigare:


Chei acceleratoare


Un numar de chei acceleratoare va permit sa va deplasati rapid prin interfata.

        Cheie           Descriere
        -----           ---------
        [Menu]
                        navigati in Main Menu neacceptand sau anuland orice
                        deschidere de obiecte. Cateodata, daca dupa apasarea
                        lui [Menu] navigati catre alt ecran unde va fi
                        editat un obiect diferit.

        [Screen
        Painter]
                        va duce direct in Screen Painter la pagina si blocul
                        specificat. trebuie sa aveti un context bloc inainte ca
                        cheia [Screen Painter] sa fie activa.

        [Navigate]
                        afiseaza o cutie de dialog care va permite sa navigati
                        catre orice obiect pe care-l specificati. O lista de
                        valori este disponibila pentru numirea tipurilor de
                        campuri, blocuri si triggere.

        [Zoom In]
              &
        [Zoom Out]
                        fiecare va permite sa va mutati cu un nivel in ierarhia
                        de obiecte.

        [Zoom In]
                        va muta cu n nivel mai jos in ierarhie.

                        De exemplu, daca editati informatii intr-un bloc EMP,
                        apasand [Zoom In] vi se va permite sa editati
                        informatii in campurile din blocul EMP.

        [Zoom Out]
                        va muta mai sus cu un nivel in ierarhie.


Cheia Navigate


Apasand cheia [Navigate] vi se va permite sa redefiniti contextul curent prin cutia de dialog Edit Object.

         _______________________________________________________________
        |                                                               |
        |   ____________________________                                |
        |  |         Edit Object        |                               |
        |  |                            |                               |
        |  | Block:                     |                               |
        |  | Field:                     |                               |
        |  | Trigger:                   |                               |
        |  | Procedure:                 |                               |
        |  | Page:                      |                               |
        |  |____________________________|                               |
        |                                                               |
        |                                                               |
        |                                                               |
        |_______________________________________________________________|


Folositi [Navigate] ca o scurtatura pentru accesarea directa a formei sau tabelei spread pentru un obiect particular. Daca obiectul pe care il referiti nu exista, SQL*Forms va va plasa in partea de sus a tabelei spread (sau a formei) pentru acel tip de obiect. Pentru a inainta catre tabela spread Page specificati doar numarul paginii; nu introduceti numele blocului.

O lista de valori este disponibila pentru fiecare tip de obiect in fereastra Edit Object.

Nota: Acest lucru este in special folositor pentru lucrul in modul bloc

Cheile Zoom


Cheile Zoom va permit sa va mutati cu un nivel mai sus sau mai jos in ierarhia de obiecte.

Exemplu:

Pornind din meniul foRm, apasati urmatoarele chei:
1. [Select]Modify
afiseaza fereastra Form Definitions.
2. [Zoom In]
afiseaza tabela spread Block Definition cu blocul curent supraluminat.
3. [Zoom In]
apare tabela spread field Definition, listand campurile blocului curent. Campul curent este supraluminat sau, in absenta contextului de camp primul camp este supraluminat.
4. [Zoom In]
afiseaza tabela spread Trigger Definition pentru blocul si campul curent. Primul trigger din lista este supraluminat.
5. [Zoom Out]
la fel ca la pasul 3.

Cand folositi cheile Zoom, tineti minte ca [Zoom In] si [Zoom Out] nu sunt mereu una complementara celeilalte. Deoarece triggerele apar in mai mult decat un loc in ierarhie, cheia [Zoom In] va alege orice alt obiect corespunzator din ierarhie in preferinta unui trigger.

Capitolul 7 Exercitii


In completarea urmatoarelor exercitii, prima pagina din forma ORDER trebuie sa arate ceva in genul celei aratate mai jos.
         _______________________________________________________________
        |                                                               |
        | -----ORDER-SUMMARY------------------------------------------- |
        |        Ordid          Commplan        Orderdate               |
        |       Custid          Name             Shipdate               |
        |        Repid          Name                Total               |
        | -----ITEM DETAILS-------------------------------------------- |
        |                                                               |
        |   Itemi Prodid Descrip        Stdprice Actualpri Qty Itemtot  |
        |                                                               |
        |                                                               |
        |                                                               |
        |                                                               |
        |   Count: *0                                   Replace    |
        |_______________________________________________________________|

Exercitiul A: Modificarea definitiilor de camp


  1. Modificati secventa si lungimile campului, cererii si afisarii pentru campurile ORD cu aceste valori: folositi [Zoom In] si [Zoom Out] pentru a naviga rapid de la un obiect la altul.
    
                            | Seq | Fld | Qry | Dis |
                 Field Name | Num | Len | Len | Len |
               --------------------------------------
               ORDID        | 1   | 4   | 6   | 4   |
               COMMPLAN     | 2   | 1   | 1   | 1   |
               ORDERDATE    | 3   | 9   | 15  | 9   |
               CUSTID       | 4   | 6   | 8   | 4   |
               SHIPDATE     | 5   | 9   | 15  | 9   |
               TOTAL        | 6   | 9   | 11  | 9   |
    
               

  2. Modificati lungimile campului, cererii si afisarii pentru campurile ITEM cu aceste valori:
    
                            | Seq | Fld | Qry | Dis |
                 Field Name | Num | Len | Len | Len |
               --------------------------------------
               ITEMID       | 1   | 4   | 6   | 4   |
               PRODID       | 2   | 6   | 8   | 6   |
               ACTUALPRICE  | 3   | 9   | 11  | 9   |
               QTY          | 4   | 8   | 10  | 8   |
               ITEMTOT      | 5   | 9   | 11  | 9   |
               ORDID        | 6   | 6   |     | 6   |
    
               

  3. IN SCREEN PAINTER, mutati campurile existente in blocurile ORD si ITEM pentru a face loc catorva campuri aditionale. Locatiile propuse sunt indicate mai jos.
    
               campurile blocului ORD               campurile blocului ITEM
                            | Seq |   |   |                      | Seq |   |   |
                 Field Name | Num | X | Y |           Field Name | Num | X | Y |
               ----------------------------         ----------------------------
               ORDID        | 1   | 15| 4 |         ITEMID       | 1   | 4 | 13|
               COMMPLAN     | 2   | 42| 4 |         PRODID       | 2   | 9 | 13|
               ORDERDATE    | 3   | 60| 4 |         ACTUALPRICE  | 3   | 49| 13|
               CUSTID       | 4   | 15| 6 |         QTY          | 4   | 59| 13|
               SHIPDATE     | 5   | 60| 6 |         ITEMTOT      | 5   | 68| 13|
               TOTAL        | 6   | 60| 8 |         ORDID        | 6   | 32| 13|
    
    

Exercitiul B: Crearea de campuri noi


  1. Creati urmatoarele campuri in blocurile ORD si ITEM.
    
               campurile blocului ORD
                            |  Data  | Fld | Qry | Dis |   |   |
                 Field Name |  Type  | Len | Len | Len | X | Y |
               -------------------------------------------------
               scr_name     | CHAR   | 45  |     | 17  | 27| 6 |
               scr_repid    | NUMBER | 4   |     | 4   | 15| 8 |
               scr_ename    | CHAR   | 17  |     | 17  | 27| 8 |
    
               campurile blocului ITEM
                            |  Data  | Fld | Qry | Dis |   |   |
                 Field Name |  Type  | Len | Len | Len | X | Y |
               -------------------------------------------------
               scr_descrip  | CHAR   | 30  |     | 15  | 16| 13|
               scr_stdprice | NUMBER | 9   |     | 9   | 39| 13|
    
              (ACTUALPRICE, QTY, ITEMTOT si ORDID trebuie sa fie toate secventiate
               DUPA noile campuri.)
    
    

  2. Faceti orice alte modificari doriti textului constant (linii, cutii, prompt-uri, etc.). Asigurati-va ca atunci cand o forma este in rulare cursorul viziteaza campurile in fiecare bloc intr-o ordine practica.

    Nota: Cateva din campurile pe care le-ati creat nu sunt inca folosite de SQL*Forms. In exercitiile urmatoare veti scrie triggere care vor popula aceste campuri.

    In timpul rularii veti observa un 'spatiu' in blocul ITEM. Acesta marcheaza pozitia campului ORDID care nu este afisat. In urmatorul capitol vom vedea o tehnica de a face disponibil acest spatiu altor campuri.

Exercitiul C: Practica de navigare


Acest exercitiu este alcatuit pentru a va ajuta sa determinati caile cele mai eficiente de navigare prin interfata.

Daca preferati sa explorati interfata in mod independent, sunteti liber s-o faceti. (Amintiti-va ca [Show Keys] furnizeaza o lista dependenta de context a cheilor de miscare disponibile.)

  1. Forma ORDER trebuie sa fie in zona de lucru.

  2. Alegeti Modify din submeniul Block. Va apare tabela spread Block Definition. Apasati [Down] (sau [Up]) pentru a schimba contextul la ITEM. Tabelele spread sunt convenabile pentru editarea mai multor obiecte o data.

  3. Apasati [Change Display Type] pentru a afisa forma Block definition. Formele va permit sa vedeti toate atributele unui singur obiect o data. Apasati [Up] pentru a schimba contextul inapoi la ORD. Apasand [Up] din nou nu se va intampla nimic atata timp cat ORD este primul bloc din forma.

  4. Apasati [Change Display Type] pentru a reafisa tabela spread Block Definition. Pentru a afisa campurile asociate cu ORD, apasati [Zoom In]. Observati ca sunt afisate doar campurile lui ORD.
    Apasati [Zoom In] inca o data. Va apare tabela spread Trigger Definition. Nu exista triggere pentri ORD.ORDID, deci SQL*Forms pozitioneaza cursorul in partea de sus a tabelei cu informatia context deja completata, gata sa creati un trigger.
    Apasati [Zoom Out] pentru a reafisa campurile din blocul ORD.

  5. In schimb, pentru a afisa campurile lui ITEM, contextul blocului trebuie modificat.Apasati [Zoom Out], apoi [Down], apoi [Zoom In]. Toate campurile din blocul ITEM vor fi afisate. Cheile Zoom sunt o cale rapida pentru a va muta mai sus sau mai jos in ierarhia de obiecte.

  6. Apasati [Navigate]. Va apare cutia Edit Object. Puteti naviga direct catre orice obiect din interfata folosind aceasta facilitate. Apasati [Previous Field] o data pentru a avansa in campul Pagina si tastati 1. Apasati [Accept] pentru a afisa informatia din Pagina 1. Ca si la bloc, camp si trigger paginile au doua formate de afisare. Apasati [Change Display Type] pentru a vedea forma Page Definition. Ne vom intoarce la aceasta fereastra in Capitolul 13 cand definim paginile pop-up.

  7. Apasati [Screen Painter]. Observati ca campurile lui ITEM sunt supraluminate. Apasati [Previous Block] pentru a face activ blocul ORD ( verificati linia de stare!). Apasati [Show Keys] pentru a gasi cheile [Next Page] si [Previous Page]. Apasati [Select] pentru a confirma ecranul.

  8. Apasati [Menu]. Acum apasati [Exit]. Observati ca cursorul s-a intors in locul din care ati apelat meniul.

  9. Iesiti din Runform.


Nu exista solutii formale pentru aceste exercitii.