Documente Academic
Documente Profesional
Documente Cultură
Comenzile care permit extragerea unor informaţii din tabelele de date se aplică asupra unor câmpuri
sau asupra unor expresii care conţin numele unor câmpuri.
COUNT [TO <var>] [FOR <cond>] [<domeniu>] [WHILE <cond>]
- numără înregistrările din tabelul de date, numărul de înregistrări putând fi memorat într-o variabilă
de lucru;
SUM <listă exp>[TO<listă var>] [FOR <cond>] [<domeniu>] [WHILE <cond>]
- însumează valorile expresiilor din lista de expresii(<listă exp>) şi le atribuie, eventual, unei liste de
variabile (<listă var>);
AVERAGE <listă exp>[TO <listă var>] [FOR <cond>] [<domeniu>] [WHILE cond>]
- la fel ca SUM având ca rezultat media aritmetică.
CALCULATE <listă funct>[TO<listă var>] [FOR <cond>] [<domeniu>] [WHILE <cond>]
- calculează anumite expresii folosind următoarele funcţii (<listă funct>):
SUM(<expN>) – suma;
AVG(<expN>) – media aritmetică;
STD(<expN>) – deviaţia standard;
VAR(<expN>) – abaterea medie pătratică;
MAX(<exp>) – val maximă, nu neapărat numerică;
MIN(<exp>) – val minimă, nu neapărat numerică;
NPV(<expN1>,<expN2>)[,<expN3>]) – valoarea prezentă netă a unei investiţii (vezi funcţia de
calcul financiar);
CNT() – numărul de înregistrări din tabelul de date.
Exemple:
1.Afişaţi numărul persoanelor căsătorite, care nu au copii.
COUNT FOR stciv AND nrc=0
sau COUNT FOR stciv AND nrc=0 TO a
?a
sau CALCULATE CNT() FOR stciv AND nrc=0
2.Afişaţi numărul persoanelor de sex masculin ce au salariul cuprins între 1000 şi 1500 lei.
COUNT FOR UPPER(sex) = “M” AND sal>= 1000 AND SAL <=1500
4.Afişaţi totalul salariilor şi al numărului de copii pentru persoanele născute după 1 mai 1980 şi care
nu locuiesc în Bucureşti.
SUM sal, nrc FOR datan > {^1980/05/01} AND LOWER(dom) # “bucuresti”
sau CALCULATE SUM(sal), SUM(nrc) FOR datan > {^1980/05/01} AND PROPER(dom) #
“Bucuresti”
5.Afişaţi salariul mediu pentru toti inginerii ce au vârsta de cel puţin 50 de ani.
AVERAGE FOR UPPER(prof) = “INGINER” AND YEAR(DATE()) – YEAR(datan) >=50
sau CALC AVG(sal) FOR PROPER(prof) = “Inginer” AND YEAR(DATE()) – YEAR(datan)
>=50
Exemplu:
1.Schimbaţi denumirea fişierului student în pers.
RENA student.dbf TO pers.dbf
Ştergerea fişierelor
DELETE FILE pers.dbf
Exemplu:
1. Ştergeţi fişierul pers.
DELE FILE pers
Exemple:
1.Din tabela de date pers creaţi o nouă tabelă pers1, cu aceeaşi structură.
USE pers
COPY STRU to pers1
USE pers1
BROW
2.Din tabela pers creaţi o altă tabelă, pers2, care sa conţină doar câmpurile: nume, prenume,
domiciliu, profesie şi salariu, cu înregistrările corespunzătoare.
USE pers
COPY to pers2 FIELDS nume, pren, dom, prof, sal
USE pers2
BROW
Exemple:
1. Adăugaţi la sfârşitul tabelei pers toate înregistrările din tabela pers1.
USE pers
APPE FROM pers1
BROW
Exemple:
1.Din tabela pers să se creeze tabela fpers cu toate persoanele necăsătorite, de sex feminin, dar
având în structură doar câmpurile: nume, prenume, salariu, data naşterii şi număr copii.
USE pers
COPY TO fpers FOR notstciv AND UPPER(sex)= “F” FIELDS nume, pren, sal, datan, nrc
USE fpers
BROW
2.Sortaţi înregistrările din tabela fpers crescător după nume şi prenume, şi descrescător după data
naşterii.
USE fpers
SORT TO sfpers ON nume, pren, datan / D
USE sfpers
BROW
6.Sortaţi înregistrările din tabela mpers crescător dupa nume şi prenume, şi descrescător după
salariu.
USE mpers
SORT TO smpers ON nume, pren, sal / D
USE smpers
BROW
7.Afişaţi salariul mediu, maxim şi minim al persoanelor cu vârsta de cel mult 45 ani.
CALCULATE AVG(sal), MAX(sal), MIN(sal) FOR YEAR(DATE()) – YEAR(datan) <=45
Observaţii
1.La un moment dat poate fi activ un singur criteriu de indexare, numele etichetei corespunzătoare
fiind furnizat de funcţia TAG();
2.Efectul unei comenzi de căutare (SEEK sau LOCATE) poate fi prelungit prin folosirea comenzii
CONTINUE;
3.Funcţia FOUND() determină (.T. sau .F.) dacă s-a reuşit sau nu localizarea.
Comanda SET EXACT ON OFF stabileşte modalitatea de căutarea pe subşiruri de caractere.
Clauza implicită este OFF.
4.Dacă <exp> este un şir de caractere, acesta trebuie pus între apostrofuri.
Câmpuri MEMO
Câmpurile MEMO definesc câmpuri de lungime variabilă de tip text. Un tabel de date, cu cel
puţin un câmp MEMO, are asociat un fişier suplimentar în care sunt depuse informaţiile legate de
acest câmp. Pentru a putea identifica datele din fişierul MEMO asociat, care aparţin unei anumite
înregistrări, în tabelul de date, pe poziţia corespunzătoare a înregistrării, se memorează o adresă spre
fişierul MEMO (poziţia primului caracter al câmpului respectiv). Exemplu:
Modificarea câmpurilor MEMO se poate face în fereastra Browse sau prin comenzi specifice:
MODIFY MEMO <câmp memo1>[,<câmp memo2>,....]
- se deschide câte o fereastră de editare pentru fiecare câmp memo;
CLOSE MEMO <câmp memo1>[,<câmp memo2>,....] ALL
- se vor închide ferestrele de editare corespunzătoare câmpurilor memo specificate în listă (sau toate
- ALL);
APPEND MEMO <câmp memo> FROM <fişier> [OVERWRITE]
- conţinutul unui fişier extern, de tip text, va fi adăugat la sfârşitul câmpului memo precizat (dacă se
foloseşte clauza OVERWRITE vechiul conţinut al câmpului se pierde);
COPY MEMO <câmp memo> TO <fişier> [ADDITIVE]
-conţinutul unui câmp memo se copiază într-un fişier extern de tip text. Dacă se foloseşte clauza
ADDITIVE copierea se va face la sfârşitul unui fişier deja existent.