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.
- Intelegerea caracteristicilor de baza ale unui camp
- Crearea unui nou camp
- Chei de accelerare
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
- LONG
- nu poate fi ceruta
- pana la 65.536 caractere
- Data
- DATE poate afisa anul pe 2 sau 4 digiti
- DATETIME afiseaza automat atat data cat si ora
- TIME corespunde cu o coloana numar
- Evitati aceste tipuri de date:
- EDATE, JDATE
- RINT, RMONEY, RNUMBER
*******************************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
- Lungimea campului
- Lungimea cererii
- Lungimea afisarii
- X:
- Y:
- Pagina:
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:
- pastreaza date calculate sau mesaje
- afiseaza date relative la un camp tabela de baza
- receptioneaza intrarile user-ului ca raspuns la intrebari sau
selectie de meniu
- pastreaza valoarea originala cand este modificat campul
tabela de baza
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:
- Mutati cursorul pe camp.
- Apasati [Define Field].
- 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
- 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 |
- 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 |
- 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
- Creati urmatoarele campuri in blocurile ORD si ITEM.
- Toate campurile trebuie sa aiba DOAR atributele Display si
Echo Input.
- Asigurati-va ca aveti contextul curent al blocului inaintea
crearii campurilor.
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.)
- 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.)
- Forma ORDER trebuie sa fie in zona de lucru.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Apasati [Menu]. Acum apasati [Exit]. Observati
ca cursorul s-a intors in locul din care ati apelat meniul.
- Iesiti din Runform.
Nu exista solutii formale pentru aceste exercitii.