Sunteți pe pagina 1din 7

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.

2. 3. 4. 5. 6.

7.

GO 1 EDIT sau EDIT RECO 1 FIELDS NUME, DOM Modificai starea civil a ultimei nregistrri. GO BOTTOM EDIT FREEZE STCIV Modificai numrul copii pentru nregistrarea 7. CHANGE RECO 7 FREEZE NRC Modificai domiciliul i salariul tuturor femeilor din tabel. CHANGE FOR UPPER(SEX)=F FIELDS DOM, SAL 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 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)

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.