Sunteți pe pagina 1din 0

V.

Comenzi specifice tabelelor de date




Deplasarea n interiorul tabelei
Prelucrarea tabelelor de date se realizeaz la nivel de nregistrare. La un moment dat este activ
un singur tabel de date i o singur nregistrare din acest tabel. Fiecare nregistrare are un numr de
ordine, asociat acesteia la introducerea ei n tabelul de date. Numrul de ordine al nregistrrii curente
poate fi modificat prin comenzile:
GO | GOTO TOP | BOTTOM | [RECORD] <expN>
care, practic, poziioneaz indicatorul de nregistrri (pointer) pe nregistrarea identificat prin expN
(salt la prima, ultima sau nregistrarea precizat din tabel);
SKIP [<expN>]
(salt nainte sau napoi cu un numr de nregistrri); practic, mut indicatorul peste un numr de
nregistrri expN relativ la nregistrarea curent; dac expN este pozitiv, saltul se face ctre sfritul
tabelei, iar dac este negativ, saltul se face ctre nceputul tabelei.
LOCATE [<domeniu>] [FOR <cond1>] [WHILE <cond2>]
(cut prima nregistrare care respect condiia <cond1>, domeniul nregistrrilor fiind dat de clauzele
<domeniu> i WHILE).
Poziia curent n tabelul de date poate fi stabilit cu ajutorul funciilor:
EOF() returneaz .T. sau .F. dup cum este detectat sau un marcajul de sfrit de fiier (aflat dup
ultima nregistrare);
BOF() returneaz .T. sau .F. pentru nceput de fiier;
RECNO() furnizeaz numrul de ordine al nregistrrii curente.


Exemple:
1. use personal
?recno()
1
goto record 7
?recno()
7
goto top
?recno()
1
skip 1
?bof()
.T.
skip 3
?recno()
3
go bottom
skip
?eof()
.T.
locate for nume=ALEX
2. Urmtoarele comenzi au ca efect poziionarea pe prima nregistrare:
go top
goto top
1
go 1
goto 1
go reco 1
goto reco 1
3. Poziionare pe a 9-a nregistrare:
go 9
goto 9
9
go reco 9
goto reco 9
4. Afiai nregistrarea a 10-a.
DISP RECO 10
5. Afiai nregistrrile de la a 5-a pn la a 12-a inclusiv.
GO 5
LIST NEXT 8
6. Listai nregistrrile de la a 8-a pn la sfritul tabelei.
GO 8
DISP REST
7. Listai numele, prenumele, domiciliul i profesia primelor 10 nregistrri.
GO 1
LIST FIELDS NUME, PREN, DOM, PROF NEXT 10
8. Afiai codul numeric personal i starea civil pentru ultimele ase nregistrri din tabel.
GO BOTTOM
SKIP -5
DISP CNP, STCIV REST
9. S se identifice, pentru a fi modificat domiciliul, nregistrarea corespunztoare persoanei Popescu
Ion.
LOCATE FOR UPPER(NUME)=POPESCU AND UPPER(PREN)=ION
BROW
sau
BROW FOR UPPER(NUME)=POPESCU AND UPPER(PREN)=ION FREEZE DOM

tergerea nregistrrilor dintr-o tabel de date
Eliminarea unor nregistrri din tabelele de date se efectueaz n 2 etape, la nivel logic sau fizic, prin
utilizarea comenzilor DELETE, RECALL, PACK, ZAP.
a) tergerea logic (marcare pentru tergere): prin marcarea pentru tergere (aplicarea unui simbol
negru), nregistrrile din tabelele de date nu sunt eliminate definitiv. Pentru tergerea logic este
utilizat comanda:
DELETE [<domeniu>] [FOR <cond1>] [WHILE <cond2>]
Domeniul implicit este nregistrarea curent. Aceast comand (precum i altele) folosete clauza FOR
pentru selectarea tuturor nregistrrilor care corespund condiiei logice <cond1>. Clauza WHILE
ntrerupe testarea nregistrrilor cnd gsete o nregistrare ce nu respect condiia dat, <cond2>.
Accesul la nregistrrile marcate pentru tergere este controlat de comanda:
SET DELETED ON | OFF
Cnd se alege opiunea ON, nregistrrile marcate pentru tergere nu vor fi accesibile celorlalte
comenzi, iar cnd se selecteaz opiunea OFF, nregistrrile sunt accesibile indifferent de marcajul de
tergere (starea implicit este OFF). Aceast comand este util atunci cnd se lucreaz pe grupuri de
nregistrri.
b) Demarcarea tergerii logice. Marcajele de tergere logic pot fi anulate prin folosirea comenzii:
RECALL [<domeniu>] [FOR <cond1>] [WHILE <cond2>]
c) tergerea fizic. Prin folosirea acestui tip de tergere nregistrrile sunt eliminate definitiv din
tabelul de date (tergerile fizice nu mai pot fi refcute). tergerile fizice au efect asupra nregistrrilor
marcate logic sau asupra tuturor nregistrrilor din tabelul de date prelucrat, prin utilizarea uneia dintre
comenzile:
PACK sau ZAP

Observaie: Comanda ZAP terge fizic toate nregistrrile, fr a fi nevoie ca acestea s fie marcate n
prealabil (se pstreaz ns structura tabelei); aceast comand este echivalent cu secvena de
instruciuni:
DELETE ALL
PACK

Exemple:
1. Marcai pentru tergere nregistrrile 3, 5, 7 i 9. Validai. Anulai marcatorul nregistrrii 7. tergei
fizic celelalte nregistrri. Validai.
dele reco 3
dele reco 5
dele reco 7
dele reco 9
brow
reca reco 7
brow
pack
brow
2. Marcai pentru tergere toate nregistrrile care au vrsta cuprins ntre 20 i 30 de ani.
DELE FOR YEAR(DATE())-YEAR(DATAN)>=20 AND YEAR(DATE())-YEAR(DATAN)<=30
BROW
3. S se anuleze marcatorii de tergere pentru nregistrrile cu vrsta cuprins ntre 20 i 25 de ani care
au salariul mai mare de 500 de lei.
RECA FOR YEAR(DATE())-YEAR(DATAN)>=20 AND YEAR(DATE())-YEAR(DATAN)<=25
AND SAL>=500
BROW

Modificarea coninutului unei tabele
Editarea la vedere a coninutului unei tabele se face folosind comenzile: APPEND | BROWSE |
EDIT| CHANGE
Comenzile CHANGE i EDIT sunt identice i au urmtoarea sintax:
CHANGE | EDIT [FIELDS lista campuri] [domeniu] [FOR cond] [WHILE cond] [FREEZE camp]
Practic, aceste comenzi modific interactiv datele din nregistrrile domeniului precizat i selectate cu
filtrul FOR sau WHILE. Clauza FIELDS afieaz, n vederea modificrii, doar cmpurile specificate n
list. n plus, clauza FREEZE specific unicul cmp ce poate fi modificat.

Exerciii:
1. Modificai numele i domiciliul primei nregistrri.
GO 1
EDIT
sau EDIT RECO 1 FIELDS NUME, DOM
2. Modificai starea civil a ultimei nregistrri.
3. GO BOTTOM
EDIT FREEZE STCIV
4. Modificai numrul copii pentru nregistrarea 7.
CHANGE RECO 7 FREEZE NRC
5. Modificai domiciliul i salariul tuturor femeilor din tabel.
CHANGE FOR UPPER(SEX)=F FIELDS DOM, SAL
6. Afiai numele, prenumele, domiciliul, profesia i salariul nregistrrilor de la 10 la 20 care nu au
copii i modificai numai salariul acestora.
GO 10
BROW FIELDS NUME, PREN, DOM, PROF, SAL FOR NRC=0 NEXT 11 FREEZE SAL
7. Modificai numai profesia de la nregistrrile 11 pn la sfritul tabelei.
GO 11
EDIT REST FREEZE PROF

Comanda BROWSE are urmtoarea sintax:
BROWSE [FIELDS lista campuri] [domeniu] [FOR cond] [WHILE cond] [FREEZE camp]

Observaie: Comanda BROWSE permite, n afar de modificare i adugare de noi nregistrri,
respectiv marcare nregistrri pentru tergere. Pentru adugare, se creeaz mai nti spaiu fizic cu
CTRL+Y i apoi se introduc datele, dup care se face salvarea cu CTRL+W sau CTRL+End. Pentru
marcarea nregistrrilor n vederea tergerii, se folosete combinaia CTRL+T sau se d clic pe primul
cmp vid al nregistrrii.

Exerciii:
1. Modificai numrul copii pentru nregistrarea 18.
BROW RECO 18 FREEZE NRC
2. Modificai starea civil a nregistrrii cu numele Popescu, profesia inginer si salariul de cel
puin 1000 lei.
BROW FOR UPPER(NUME)=POPESCU AND UPPER(PROF)=INGINER AND
SAL>=1000 FREEZE STCIV

Modificarea coninutului nregistrrilor dintr-un tabel de date presupune nlocuirea valorilor din unul
sau mai multe cmpuri cu altele noi. Comanda REPLACE permite actualizarea tabelelor de date cu
valori precizate n comand i are urmtoarea sintax:
REPLACE <cmp1> WITH <exp1> [, <cmp2> WITH <exp2> ...] [<domeniu>] [FOR <cond>]
[WHILE <cond>]
REPLACE nlocuiete vechea valoare din cmpul <cmp1> cu valoarea expresiei <exp1>, valoarea din
cmpul <cmp2> cu <exp2> i aa mai departe. Practic, aceast comand efectueaz automat
modificrile precizate, fr ca utilizatorul s mai introduc valori.

Exemple:
use personal
?reccount()
25
append blank
?reccount()
26
goto 7
insert blank before
?recno()
7
dele next 3
skip -1
recall
pack
?reccount()
24
replace FOR nume=ALEX with ALEXANDRU

Exerciii:
1.nlocuii domiciliul de la nregistrarea 3 pn la 9 inclusiv, cu valoarea Bucureti.
GO 3
EDIT NEXT 7
sau
GO 3
REPLACE dom WITH BUCURESTI NEXT 7
2.Modificai profesia de la nregistrrile 11 pn la sfritul bazei de date.
GO 11
REPL PROF WITH INGINER REST
3.Micorai salariul cu 9% pentru toate persoanele ce au profesia inginer, sunt necstorite i nu au
domiciliul n Bucureti.
REPLACE sal WITH sal*0.91 FOR UPPER(prof)=INGINER AND notstciv AND
UPPER(dom)=BUCURESTI
4.Mrii salariul cu 8,5% pentru toate persoanele care au cel puin 40 de ani, sunt cstorite i au copii.
REPLACE sal WITH sal*1.085 FOR YEAR(DATE())-YEAR(datan)>=40 AND stciv AND
nrc>0
5.Efectuai modicrile corespunztoare astfel nct s nu existe nicio persoan cu salariul mai mic dect
salariul minim pe economie (550 lei).
REPLACE sal WITH 550 FOR sal < 550
6.Modificai n majuscule profesia tuturor persoanelor de sex masculin.
REPLACE prof WITH UPPER(prof) for UPPER(sex)=M
7.Modificai valorile din cmpul profesie n minuscule, iar n cmpurile nume i prenume prima liter
s fie majuscul, iar celelalte minuscule.
REPLACE prof WITH LOWER(prof), nume WITH PROPER(nume), pren WITH
PROPER(pren)

Actualizarea fiierelor de date
Actualizarea fiierelor de date nseamn modificarea structurii tabelelor de date (vezi comanda
MODIFY STRUCTURE) sau modificarea coninutului acestora. n ceea ce privete modificarea
coninutului unui tabel de date se au n vedere posibilitile de tergere sau adugare a unor nregistrri
precum i modificarea coninutului celor existente (vezi comenzile DELETE, PACK, RECALL,
REPLACE). Pentru editarea de la tastatur a tabelelor de date se poate utiliza comanda BROWSE sau se
pot alctui secvene program.

Fereastra BROWSE
Principala comand, pentru realizarea diferitelor operaiuni asupra tabelelor de date, prin deschiderea
unei ferestre de lucru, este comanda BROWSE care poate fi editat n urmtoarea sintax:
BROWSE [FIELDS <list de cmpuri>] [FOR <cond>] [FREEZE <cmp>]
[NOAPPEND] [NODELETE] [NOEDIT | NOMODIFY]
o FIELDS - permite ca numai cmpurile precizate s intre n editare (selecie pe vertical);
o FOR precizeaz condiiile conform crora nregistrrilor vor fi afiate n fereastra BROWSE;
o FREEZE - permite modificri doar pe cmpul precizat;
o NOAPPEND invalideaz posibilitatea efecturii adugrilor;
o NODELETE elimin marcarile pentru tergere;
o NOEDIT | NOMODIFY - interzice modificrile.
Ca efect al lansrii comenzii BROWSE, n meniul principal, apare o nou opiune, Table, care permite:
adugarea unei noi nregistrri la un tabel de date: Append New Record (Ctrl+Y);



stabilirea nregistrrii curente: Go to Record;
precizarea unor criterii de poziionare, Locate, la fel ca prin folosirea comenzii cu acelai nume:

tergerea datelor din tabele:
o marcare (demarcare) pentru tergere: Toggle Deletion Mark (Ctrl+T) sau clic cu mouse-ul pe
fanionul de tergere din dreptul nregistrrii:
o tergere fizic: Remove Deleted Records;
o tergeri conform sintaxei comenzilor DELETE i RECALL: Delete Records, Recall Records;
modificri ale valorilor nscrise n cmpurile tabelelor conform sintaxei comenzii REPLACE: Replace
Field.

S-ar putea să vă placă și