CREAREA FORMATELOR

Continutul acestui capitol

Acest capitol prezinta interfata SQL*Forms Designer si mecanismul implicit de bloc al SQL*Forms prevazut pentru crearea rapida a unui format bazat pe date de dictionar.

Subiectele discutate includ:

PROCESUL CONSTRUIRII FORMATELOR

PROCESUL CONSTRUIRII FORMATELOR

Ce face Designer-ul ?

Cineva care creeaza o baza de date si scrie specificatii pentru module poate fi definit drept un designer. In contextul SQL*Forms un designer poate fi si persoana care construieste formate.

Pasii de desenare:

In continuare sunt enumerati pasii pe care trebuie sa-i urmati, ca designer,in desenarea si construirea de formate.

  1. Clarificati-va obiectivele. Ce doriti sa realizeze acest format ?
  2. Determinati tabelele folosite in format.
  3. Determinati ce blocuri va contine formatul. Determinati ordinea de dispunere a blocurilor in format. Luati in consideratie ce operatii va avea nevoie sa faca operatorul mai intai sau mai des.
  4. Folositi posibilitatea de bloc implicit pentru a crea o varianta bruta a formatului. (Cap. 3)
  5. Creati celelalte campuri suplimentare necesare in format. (Cap. 7)
  6. Modificati si redimensionati campurile implicite. Adaugati casute de optiune si suplimentati valorile implicite, listele de valori si alte criterii ale campului. (Cap. 4 si 7)
  7. Mariti vizibilitatea formatului adaugand text si subliniind anumite parti ale formatului prin linii si cutii. (Cap. 4)
  8. Definiti trigger-ele. Un trigger este un set de comenzi ce sunt executate de un anumit eveniment atunci cand este rulat formatul. (De la Cap. 8)

Documentati-va in legatura cu fiecare din pasii de mai sus. Detalierea pasilor 1 - 3 a fost facuta in Cap. 1. Ceilalti pasi sunt prezentati in capitolele indicate inter paranteze.

De-a lungul procesului construirii formatului,generati si testati frecvent.


NAVIGAREA PRIN INTERFATA DESIGNER-ULUI: MENIUL PRINCIPAL AL SQL*FORMS



Logarea in SQL*Forms Designer

Logarea se realizeza executand urmatoarea comanda din sistemul de operare:

sqlforms [ username/password ]

Navigarea prin interfata Designer-ului:


Meniul principal SQL*Forms

In SQL*Forms toate obiectele pot fi accesate direct din meniul principal care afiseaza in partea de sus a ecranului, cu selectiile "active" scrise bold:

_Action_foRm_Block_Field_Trigger_Procedure_Image_Help_Options_

Majoritatea optiunilor meniului au submeniuri; optiunile Trigger, Procedure si Options nu au submeniuri. Daca selectati una dintre aceste optiuni sunteti trimisi direct intr-un alt ecran.

Submeniurile pentru celelalte optiuni sunt prezentate mai jos:


 Action      foRm       Block       Field        Image       Help
--------------------------------------------------------------------------
New          Modify     Modify      Mofify       Modify    Help system
Open         Trigger    Trigger     Trigger      Painter   Show keys
-----                   Default                            Tables
Copy                                                       Columns
Rename                                                     List forms
Delete                                                     Blocks
Load                                                       Fields
Print doc >
-----------
Generate
Execute
--------
Save
Form security
Quit


SISTEMUL HELP ON - LINE

Sistemul Help On-line



CONSTRUIREA UNUI FORMAT IMPLICIT


  1. Creati un format nou
  2. Creati unul sau mai multe blocuri implicite
  3. Generati o versiune executabila
  4. Executati formatul
  5. Testati formatul

Crearea unui format nou


  1. Din meniul Action selectati optiunea New. Va apare o casuta de dialog New Form.(vezi mai jos)
  2. Scrieti numele noului format in campul Name. Apasati [ACCEPT].


          -------------------------------------------------
         |                      New Form                   |
         |       ---------------------------------         |
         | Name: | CUSTOMER                        |       |
         |       ---------------------------------         |
         |                                                 |
          -------------------------------------------------

Regulile de nume pentru obiectele SQL*Forms sunt aceleasi ca pentru oricare alte obiecte ORACLE; acestea fiind, pana la 30 de caractere, incepand cu o litera si continand orice combinatie de litere, numere si caractere speciale ($, #, @ si _). Nu trebuie duplicat numele unui alt obiect de acelasi tip sau folosit un cuvant rezervat ORACLE sau SQL*Forms.

POSIBILITATEA DE BLOC IMPLICIT


        FORMATUL DEFAULT BLOCK
  _________________________________________________________________________
 |  Action  foRm  Block  Field  Trigger  Procedure  Image  Help  Options   |
 |     --------------------- Default Block --------------------            |
 |  ___________________________________________________________________    |
 |  | Block Name:       ........................                        |  |
 |  | Base Table:                                                       |  |
 |  |-------------------------------------------------------------------|  |
 |  | Sequence Number:    1    Select Columns     [   ] Use Constrains  |  |
 |  | Records Displayed:  1   Page Number:      1  Base Line:   1       |  |
 |  |-------------------------------------------------------------------|  |
 |  | Master Block:                                [   ] Delete Details |  |
 |  |-------------------------------------------------------------------|  |
 |  |   ----------------------- Join Condition ---------------------    |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |___________________________________________________________________|  |
 | Enter the name of the block                                             |
 | Frm: DEMO       Blk:         Fld:              Trg:             Insa    |
 |                                                                         |
 |_________________________________________________________________________|


Posibilitatea de bloc implicit


Acesta este cel mai rapid si cel mai usor mod de a crea blocuri. Cu un minim de intrari din partea ta, SQL*Forms construieste un bloc perfect functional folosind definitii stocate in Data Dictionary. Dupa ce blocul este creat, puteti schimba orice caracteristica dorita.

Formatul de blocuri implicite


Pentru a crea un bloc implicit folositi formatul Default Block. In interfata designer-ului, un format este o pagina ce defineste un obiect SQL*Forms.

Cum se creeaza un bloc implicit ?

  1. Din meniul Block selectati optiunea Default.
  2. Completati formatul Default Block.

    Vi se cere sa specificati:

    Block Name
    folositi o versiune prescurtata a numelui tabelei de baza sau o referire a blocului standard
    Base Table
    se pune la dispozitie o lista de valori

    Celelelalte caracteristici cerute ale blocului sunt urmatoarele:
    Sequence Number
    determina ordinea intrarii in bloc a cursorului si se poate modifica ulterior
    Select Columns
    implicit sunt selectate toate coloanele;apasati [Select] pentru a afisa lista. Pentru a exclude coloana,va pozitionati pe numele ei si apasati [Select]
    Record Displayed
    implicit 1; modificati daca blocul are mai multe linii
    Page Number
    identifica pagina pe care vor fi localizate initial toate campurile blocului
    Base Line
    textul blocului incepe pe linia Base Line+1

    Campul Use Constraints:

    In formatul Default Block exista o casuta de optiune Use Constraints pe care o vom ignora momentan. Daca selectati aceasta optiune, SQL*Forms va genera trigger-e pentru apelarea rutinelor de constrangere specificate pentru tabela de baza, in Data Dictionary.

GENERAREA SI EXECUTAREA FORMATULUI


                        Aria de lucru SQL*Forms
                       ______________________________
                      |                              |
          ------------| GENERARE                     |
         |            |                              |
         | __________\| INCARCARE               SAVE |-----------
         | |         /|                              |           |
         | |    ------| EXECUTARE               OPEN |/__        |
         | |    |     |______________________________|\  |       |
        \|/|    |                                        |      \|/
        ___|    |                                        |    _________
       /    \   |                                        |   /    DB   \
      |\____/|  |                                        |  |\_________/|
      |      |  |                                        |  | SQL*Forms |
      | .INP |  |                                        |__| Base      |
       \_____/  |                                           | Tables    |
         |      |                                            \__________/
         |      |
        \|/_    |
       /    \   |
      |\____/|  |
      |      |/_|  RUNFORM
      | .FRM |\
       \____/


Generarea si executarea formatului


Generarea formatului

Generarea unui format converteste definitiile formatului intr-un fisier ce poate fi rulat de SQL*Forms. Un format trebuie generat inainte ca oricine sa-l poata rula sau testa. Formatul trebuie generat de fiecare data cand i se fac modificari; altfel s-ar putea intampla sa rulati o versiune veche cu acelasi nume.
De fapt, generarea scrie formatul in doua fisiere diferite: un fisier sursa cu extensia .INP si un fisier executabil cu extensia .FRM.
Cum se genereaza un format:

  1. Din meniul Action selectati optiunea Generate. Va apare casuta de dialog Generate Form. Campurile Name si File sunt setate implicit cu numele formatului curent.
  2. Scrieti numele formatului ce doriti sa-l generati si apasati [Next Field].
  3. Scrieti numele fisierului in care doriti sa generati formatul si apasati [Accept].

Executarea formatului

Puteti executa un format fara a iesi in sistemul de operare. SQL*Forms (Design) invoca SQL*Forms (Runform) si ruleaza formatul indicat. La iesirea din format va reintoarceti in meniul principal al SQL*Forms (Design).
Cum se executa un format:

  1. Din meniul Action selectati optiunea Execute. Va apare casuata de dialog Execute Form. Campul Name este setat implicit cu numele formatului curent.
  2. Scrieti numele formatului ce doriti sa-l rulati.
  3. Apasati [Accept].

CREAREA UNUI FORMAT MASTER/DETAIL CU LEGARE AUTOMATA A BLOCURILOR


  _________________________________________________________________________
 |                                                                         |
 |  Action  foRm  Block  Field  Trigger  Procedure  Image  Help  Options   |
 |  -------------------------- Default Block ----------------------------  |
 |  ___________________________________________________________________    |
 |  | Block Name:       EMP                                             |  |
 |  | Base Table: EMP                                                   |  |
 |  |-------------------------------------------------------------------|  |
 |  | Sequence Number:    1    Select Columns     [   ] Use Constrains  |  |
 |  | Records Displayed:  5   Page Number:      1  Base Line:   1       |  |
 |  |-------------------------------------------------------------------|  |
 |  | Master Block:   DEPT                         [   ] Delete Details |  |
 |  |-------------------------------------------------------------------|  |
 |  |   ----------------------- Join Condition ---------------------    |  |
 |  |   DEPTNO                                                          |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |___________________________________________________________________|  |
 |                                                                         |
 |                                                                         |
 |_________________________________________________________________________|


Formatul implicit master/detail


O caracteristica puternica a sistemului de bloc implicit este abilitatea de definire a unui bloc ce este "legat" la un bloc master.

Ce reprezinta legarea blocurilor ?


Daca specificati ca un block sa fie legat la un bloc master, SQL*Forms va genera trigger-ele si informatiile de control necesare pentru realizarea acestui lucru:

Crearea unui format master/detail cu legare automata a blocurilor


Mai intai trebuie creat blocul master. Apoi folositi optiunea blocului implicit pentru crearea blocului detail, asigurandu-va ca ati specificat atributele master-detail.
        Atribute                                        Descriere
        --------                                        ---------
        Master Block Name    specifica numele blocului master
        Delete Details       specifica daca inregistrarile detail vor fi sau nu
                             sterse atunci cand inregistrarea master pe care o
                             refera este stearsa
        Join Condition       un predicat SQL care specifica modul de fuzionare
                             a blocurilor master si detail. Daca blocurile
                             fuzioneaza printr-un camp comun, se specifica doar
                             numele acelui camp.

                                Conditii de fuzionare valabile:
                                DEPTNO
                                BLOCK1.ITEMNO = BLOCK2.ITEM_ID
                                EMP.DEPTNO = DEPT.DEPTNO


RELATIILE MASTER/DETAIL



Relatia master/detail


Atunci cand creati blocul detail, SQL*Forms genereaza in mod automat trigger-ele si atributele necesare pentru mentinerea relatiei. Trigger-ele si atribulele pot fi editate.

Un bloc detail poate fi in acelasi timp bloc master


Un bloc detail poate fi master-ul unui alt bloc. Daca faceti acest lucru, trebuie sa faceti mici modificari trigger-elor blocului master original. Trebuie sa modificati trigger-ele care apeleaza si sterg blocul detail astfel incat sa apeleze si sa stearga al doilea bloc detail.

Un master poate avea mai multe blocuri detail


Pot fi mai mult de un bloc detail pentru un bloc master. In acest caz, SQL*Forms corecteaza trigger-ele existente pentru a legarea la noul bloc (noile blocuri).

Restrictii master/detail


Exista cateva restrictii privind relatia master/detail:

EXERCITII


Exercitiul A: Crearea unui format de un bloc.


  1. Logati-va in SQL*Forms (Design) executand din sistemul de operare:

    sqlforms username/password

  2. Va apare meniul principal SQL*Forms. Creati un nou format CUSTOMER.
  3. Creati un bloc:
    1. Apasati B (Block) si D (Default).
    2. Scrieti CUS drept numele blocului si apasati [Next Field].
    3. Apasati [List of Values] pentru a vedea ce tabele puteti accesa. Alegeti CUS.
    4. Lasati restul la valorile implicite, pentru moment.
    5. Apasati [Accept]pentru a ve reintoarce la meniul principal. Apasand [Cancel] renuntati la crearea formatului.
  4. Generati formatul in aria de lucru pentru a crea o versiune executabila
    1. Alegeti optiunea Generate din meniul Action. Numele formatului si al fisierului vor apare intr-o casuta de dialog. Apasati [Accept].
  5. Executati si testeti formatul.
    1. Alegeti optiunea Execute din meniul Action. Un nume de fisier va apare intr-o casuta de dialog. Apasati [Accept].
    2. Odata formatul activ, testati-l executand cateva chestionare.
    3. Observati anumite caracteristici al formatului implicit:
                   - Numele blocului este afisat ca titlu si numele coloanelor bazei
                     de date sunt afisate ca prompturi pentru campuri.
                   - CUSTID are lungime de 8 caractere, desi e definit ca NUMBER(6)
                     in baza de date. SQL*Forms mareste toate campurile numerice cu
                     2 pentru a se putea scrie semnul, punctul zecimal si simboluri
                     de moneda.
                   - Campurile numerice sunt aliniate stanga.
                

Exercitiul B: Crearea unui format implicit Master/Detail



  1. Creati un format nou numit ORDER.Alegeti Action/New. Raspundenti Yes la intrebarea 'Modified form will be lost. Continue?'
  2. Folosind optiunea Default in submeniul Block, creati un bloc numit ORD, bazat pe tabela ORD. Deselectati coloana MAXLINE. Lasati celelalte caracteristici ale bloculuii la valorile implicite.
  3. Creati un al doilea bloc numit ITEM, bazat pe tabela ITEM. Acest bloc trebuie sa:
  4. Generati si executati formatul.
  5. Executati un query global pentru a testa leagrea blocurilor. Defilati peste cateva inregistrari ordonate.
  6. Iesiti din format. Ati revenit in interfata SQL*Forms Designer.

Exercitiul C: Folosirea sistemului Help On-line


SOLUTII


Exercitiul A.

3.
  _________________________________________________________________________
 |                                                                         |
 |  -------------------------- Default Block ----------------------------  |
 |  ___________________________________________________________________    |
 |  | Block Name:       CUS                                             |  |
 |  | Base Table: CUSTOMER                                              |  |
 |  |-------------------------------------------------------------------|  |
 |  | Sequence Number:    1    Select Columns      [   ] Use Constrains |  |
 |  | Records Displayed:  1   Page Number:      1  Base Line:  1        |  |
 |  |-------------------------------------------------------------------|  |
 |  | Master Block:                                [   ] Delete Details |  |
 |  |-------------------------------------------------------------------|  |
 |  |   ----------------------- Join Condition ---------------------    |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |___________________________________________________________________|  |
 |  Enter the name of this block's base                                    |
 |  Frm: DEMO      Blk:         Fld:          Trg:              List  Ins  |
 |_________________________________________________________________________|


Exercitiul B

2.
  _________________________________________________________________________
 |                                                                         |
 |  -------------------------- Default Block ----------------------------  |
 |  ___________________________________________________________________    |
 |  | Block Name:       ORD                                             |  |
 |  | Base Table: ORD                                                   |  |
 |  |-------------------------------------------------------------------|  |
 |  | Sequence Number:    1   Select Columns          [   ] Use Constrains |  |
 |  | Records Displayed:  1   Page Number:  3      Base Line:   1       |  |
 |  |-------------------------------------------------------------------|  |
 |  | Master Block:                                [   ] Delete Details |  |
 |  |-------------------------------------------------------------------|  |
 |  |   ----------------------- Join Condition ---------------------    |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |___________________________________________________________________|  |
 |                                                                         |
 |                                                                         |
 |_________________________________________________________________________|


  _________________________________________________________________________
 |                                                                         |
 |  -------------------------- Default Block ----------------------------  |
 |  ___________________________________________________________________    |
 |  | Block Name:       ITEM                                            |  |
 |  | Base Table: ITEM                                                  |  |
 |  |-------------------------------------------------------------------|  |
 |  | Sequence Number:    2    Select Columns      [   ] Use Constrains |  |
 |  | Records Displayed:  3   Page Number:   3     Base Line:   9       |  |
 |  |-------------------------------------------------------------------|  |
 |  | Master Block:   ORD                          [   ] Delete Details |  |
 |  |-------------------------------------------------------------------|  |
 |  |   ----------------------- Join Condition ---------------------    |  |
 |  |   ORDID                                                           |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |                                                                   |  |
 |  |___________________________________________________________________|  |
 |                                                                         |
 |                                                                         |
 |_________________________________________________________________________|