Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Crearea si utilizarea bazelor de date (b . d . )
Calculatorul ne ajuta sa prelucram informatii, iar informatia prelucrata poate fi formata din: texte, imagini, numere, sunete, si este pastrata pe suporti de memorare in diferite formate sub forma de date .
Baza de date = ansamblul structurat de date evolutive, organizate pentru a fi exploatate de diferite programe(aplicatii) . Datele sunt stocate pe suporturi magnetice, ea poate fi definita si ca un ansablu de fisiere .
Sistemele de Gestiune a Bazelor de Date (S . G . B . D . ) sunt aplicatii complexe cu ajutorul carora se realizeaza atat crearea fisierelor din componenta unei b . d . cat si a programelor care le exploateaza .
Fisierul contine informatii grupate in articole(inregistrari)avand aceeasi structura .
Articolul(inregistrarea) cuprinde un ansamblu structurat de campuri in care se memoreaza informatiile corespunzatoare unei inregistrari .
Campul se caracterizeaza prin: nume, tipul informatiei continute, lungimea campului si nr . de zecimale(pt . campuri numerice) .
Campurile definesc structura articolului si pe cea a fisierului(b . d . )
Tipul campului:
Character C
Numeric N
Date D
Float F
Logical L
Memo M
General G
Orice problema incepe prin definirea datelor
prelucrarea lor: atribuirea de valori
afisarea valorilor
Analiza datelor: Logic- la nivel conceptual
Fizic - la nivelel reprezentarii ei in memoria interna .
Scopul programelor este de a prelucra datele pt . a furniza informatii .
Colectiile de date sunt formate dintr-un ansamblu de fisiere de date .
Operatori logici
grupeaza expresiile
!, NOT negatie logica
AND si logic
OR sau logic
Operatori care se aplica unor operanzi numerici, avand ca rezultat tot valori numerice:
grupeaza expresiile
^ ridicare la putere
% inmultire, impartire, modulo(restul impartirii)
adunare, scadere
Operatori relationali:
< mai mic decat
> mai mare decat
egal cu
<>,#, != diferit de
<= mai mic sau egal cu
>= mai mare sau egal cu
Operatori relationali ce se aplica in 2 siruri de caractere:
$ inclus in
< mai mic decat
> mai mare decit
<>, #, != diferit de
<= mai mic sau egal
>= mai mare sau egal
== identic
Crearea bazei de date agenda
Denumire camp Tip camp Lungime Zecilale
Nume C 15
Prenume C 18
Data_nast D 8
Adresa C 30
Casatorit L 1
Telefon N 10 0
Hobby M 10
Se creaza cu, Comanda : CREATE agenda . dbf
TABLE STRUCTURE
TAG |
NAME |
TYPE |
WIDTH |
DEC |
Nume |
C | |||
Prenume |
C | |||
Data_nast |
D | |||
Adresa |
C | |||
Casatorit |
L | |||
Telefon |
N | |||
hobby |
M |
Crearea bazei de date mfixe: CREATE mfixe . dbf
cod C 10
denumire C 30
valoare N 10 2
amortizare N 10 0
loc_folos M 10
stare L 1
data_inst D 8
tip C 1
USE mfixe
COPY STRUCTURE TO mfixe_n . dbf;
FIELDS cod, denumire, valoare
USE mfixe_n
LIST STRUCTURE
USE
(din b . d . mfixe, creem o noua b . d . mfixe_n in care copiem campurile:cod, denumire,valoare)
USE mfixe_n
APPEND FROM mfixe;
FIELDS cod, denumire, valoare
FOR stare= . T .
LIST
USE
(se adaga din b . d . mfixe_n inregistrari care au starea . T . preluandu-se campurile:
cod, denumire, valoare)
USE mfixe
DELETE RECORD 2
DELETE RECORD 3
DELETE RECORD 6
PACK
LIST
USE
(din b . d . se marcheaza pt . stergere inreg . :2,3,6 apoi cu comanda PACK se sterg fizic inreg . marcate anterior,fara recuperare . )
use mfixe (s-a deschis b . d . in zona de lucru 1)
? SELECT() (afiseaza zona de lucru curenta)
USE mfixe IN 2 (s-a deschis b . d . in zona de lucru 2)
USE IN 2 (se inchide b . d . in 2)
SELECT 1 (zona curenta va fi zona 1)
SELECT A (zona curenta va fi zona 1)
? SELECT() (afiseaza zona de lucru curenta)
? SELECT(1) (afiseaza ultima zona de lucru nefolosita)
? USED () (testeaza folosirea zonei de lucru 1)
? USED (' mfixe') (testeaza daca exista b . d . )
. T .
Manipularea campurilor unei baze de date .
CLOSE ALL
USE mfixe
? 'Baza de date mfixe are', FCOUNT(), 'campuri' (b . d . are 6 campuri)
? FIELD (1) (afis . Numele primului camp(cod))
? FIELD (1,2) (cod)
? FIELD(9)==' ' (avem numai 8 campuri in b . d . )
. T .
? FIELD (FCOUNT()) (afis . numele ultimuluil camp(tip))
? FSIZE (' denumire') (afis . latimea celui de-al 2-lea camp)
ATENTIE MARE !!!!
La indicatorul de inregistrari unde este pozitionat (daca nu specificam locatia) = pozitia(inreg . ) care trebuie inlocuita . O sa avem surprizese,se manipuleaza campul unde se afla indicatorul .
USE agenda
BROWSE
GOTO 2 (se pozitioneaza pe inreg . (poz . ) 2)
INSERT BEFORE (se insereaza o noua inregistrare)
BROWSE
(inchid fereastra de la buton din stanga)
CHANGE FREEZE prenume (schimba prenumele doar unde este indicatorul-la un camp)
CHANGE FIELDS adresa (schimba campurile de adresa la toate inreg . (adresele))
CHANGE FIELD adresa (schimba un singur camp unde este indicatorul(prompterul))
USE mfixe
APPEND BLANK (se adauga la sfarsit o inregistrare goala)
BROWSE
REPLACE cod WITH 'vopsea';
denumire WITH 'vopsea in ulei , albastra'
BROWSE
USE agenda
GOTO 2
REPLACE nume WITH 'STAN' ;
prenume WITH 'MARIN ALIN'
BROWSE
APPEND FROM mfixe;
FIELD cod (adauga inaintea primului camp , camp cod (cu toate codurile exist . ))
BROWSE
(avem 4 coduri goale . . le stergem)
DELETE RECORD 6
DELETE RECORD 7
DELETE RECORD 8
DELETE RECORD 9
PACK
(SAU CU DELE ALL- se sterg toate inreg . )
Deschiderea si inchiderea b . d . ,afisarea zonelor de lucru
USE mfixe (deschid b . d . mfixe)
USE (s-a inchis b . d . )
USE mfixe IN 2 (s-a deschis b . d . in zona 2,zona curenta ramane 1)
USE IN 2 (se inchide b . d . din 2)
? USED () (testeaza folosirea zonei 1)
? USED (2) (testeaza folosirea zonei 2)
? USED ('mfixe') (testeaza daca exista b . d . )
SELECT a (zona curenta va fi zona 1)
USE mfixe (deschid b . d . mfixe)
? DBF ('mfixe') (afis . b . d . mfixe) (C:|FOXPROWmfixe . dbf)
? DBF ('a') (C:foxprowmfixe . dbf)
Vizualizarea continutului b . d .
USE BAZA 1
DISPLAY ALL
DISPLAY ALL FIELDS NUME, TELEFON
DISPLAY ALL FOR TELEFON>140000
DISPLAY ALL FOR NUME>= "HA"
DISPLAY ALL WHILE TELEFON>140000
DISPLAY ALL OFF
LIST NEXT 3
LIST FOR NOT NUME="
LIST FOR "GI" $ NUME
LIST FOR LIKE ('*IURG*',NUME)
USE CLIENT
? USED (3)
SELECT 3
? SELECT()
USE BAZA 1
LIST STRUCTURE
?DBF(3)
USE
USE BAZA 1 IN 4
LIST STRUCTURE
CLOSE ALL
CLOSE DATABASE
Cautari intr-o b . d .
Use stocuri
LOCATE FOR denmat='lemn'
? cantitate,' ', pret
LOCATE RECORD 3
? denmat, ' ', UM, ' ', cantitate, ' ',pret
LOCATE FOR UM = 'mcub'
CONTINUE
? denmat, ' ', UM, ' ', cantitate, ' ',pret
USE
(afiseaza cantitatea si pretul lemnului existent in stoc , afis . Inreg . 3, afiseaza doua materiale care se masoara in mcub)
a) Sa se caute toate inregistrarile cu media >=7
b) Sa se afiseze: numele, prenumele, media
c)
Rezolvare:
USE elevi
LOCATE FOR media >=7
DISPLAY FIELDS numele, prenumele,media
USE
USE elevi
BROWSE FOR nr_matricol,obs (afis . intr-o fers . browse nr . matricolsi obs . )
BROWSE FOR numele,prenumele,media
BROWSE FOR nr_matricol= 34 (afis . nr . matricol "34")
LOCATE FOR numele= "SALCUDEAN" (cauta inreg . cu numele SALCUDEAN)
LIST FOR media >9 (se listeaza numai cei cu media >9 )
GO 2
LIST WHILE media >9 (afis . de la inreg . 2)
GO TOP
LIST FOR media >9 WHILE clasa='2I'
LIST FOR media>8
LIST NEXT 3 (afis . urmatoarele 3 inreg . )
LIST ALL FOR media>7 (listeaza toate inreg . cu media>7 )
LIST RECORD 5
COUNT TO v1
EDIT
REPLACE ALL media WITH (Romana+Mate+Geo_Ist) / 3
REPLACE Mate WITH Mate+1 FOR nume='Andreica' . and . prenume'Nicolae'
USE PERSONAL
LOCATE RECORD 4
? NUME, PRENUME, STUDII_SUP
create stocuri . dbf
denmat(C20),um(C4), cantitate(N6),pret(N8 . 2)
browse
append blank
replace denmat with 'faianta',um with'mp',cantitate with 500;
pret with 200
list
use
use stocuri
list off (listeaza continutul b . d . )
go 2
insert (se insereaza o inreg . goala la sfarsitul fisierului)
go 4
insert before (se insereaza o inreg . goala pe pozitia a 4-a)
list all (se listeaza tot fisierul)
list record 6 (se listeaza inreg . a 6-a)
list all for pret>7000
go 2
list while pret>7000
list rest for pret>50000
(adaugam in b . d . :campul valtot fara valoare)
EDIT FIELDS denmat,pret, valtot=cantitate*pret freeze pret
(imi apare o fereastra de editare cu cele 3 campuri si cu valtot calcalata automat)
change record 3 (se deschide o fers . de editare cu inreg . 3 si modifica)
change record 3 noclear (pastreaza imaginea ferestrei pe ecran)
CREATE capacitate . dbf
nume (C20),prenume (C20),romana(N5 . 2),mate(N5 . 2), geoist(N5 . 2),media(N5 . 2) - fara medie calculata .
replace all media with (romana+mate+geoist)/3
Create agendaa . dbf
Nume(C20),adresa(C20),tip(C1)nr-tel(C10)
C1 poate fi: F-fix M-mobil
Replace tip with 'M',nr-tel with '0746667799'for nume='adi'
List
USE agenda
display fields nume,telefon
display fields nume,prenume (a listat prima inreg . cu nume si prenume)
browse
display all fields nume,prenume (listeaza toate inreg . cu nume si prenume)
locate for nume='adi' (cauta in fisier si se muta prompterul pe adi)
browse (afiseaza fara list pentru confirmare)
locate for nume='gaja'
browse
display all field nume,telefon
display all field nume,nr_telefon
display field nr_telefon=657890 (listeaza inreg . cu nr . de telefon:657890)
clear
list for not nume='adi' (listeaza inregistrarile fara numele de adi)
list for 'ad'$ nume (listeaza inregistrarea cu numele de adi)
list for 'ga'$ nume
list for like('*cea*',nume) (listeaza inregistrarea cu numele de socea)
? used(3)
? used(1) (list . cu . f . sau . t . b . d . curenta)
?dbf(3)
?dbf(1) (listeaza calea fisierului agenda . dbf)
Programe FoxproW
clear
use bibleo
nume= ' '
@ 10,10 get nume
read
? ' cartile scrise de autorul, scrise de la tastatura sunt: '
? ' ' + titlu + ' ' + editura
do while not eof()
if nume=autor
endif
skip
enddo
. . . . . . . . . . . . . . . . . . . . . . . .
use bibleo
sort on titlu to titla . dbf
a=titlu
if titlu=a
skip (sau go top)
if titlu=a
list all titlu for titlu=a
skip (sau go bottom)
endif
endif .
. . . . . . . . . . . . . . . . . . . .
« Program agenda »
use agenda
index on nume to agenda . idx
@ 2,2 say 'de la ce litera doriti listarea? '
read
k=0
go top
brow fiel nume,prenume,nr_telefon
return
PROGRAMARE " SORTARE SI INDEXARE - Baze de Date . "
SORTAREA BAZELOR DE DATE (ordonare fizica)
Se xecuta prin comanda SORT, cu urmatoarea sintaxa:
SORT TO <fisier> ON <camp1> [ /A ]│/ D ] [ /C ]
[,<camp2> [ / A ] │ / D ] [ / C] . ]
[ASCENDING │ DESCENDING]
[<domeniu>] [FOR <expL1>] [WHILE <expL2> ]
[FIELDS <lista campuri> ]
[NOOPTIMIZE]
Comanda sorteaza baza de date activa, creand o noua b . d . in care sunt depuse inregistrarile selectate, in ordinea specificata . Baza noua va contine campurilw specificate in clauza FIELDS si va purta numele de <fisier> cu estensia " . dbf",cheia de ordonare este data de campurile: <camp1]> si <camp2> specificate dupa clauza ON a comenzii . Clauzele: /A , / D specifica tipul de ordonare : crescator(A), descrescator (D) . Clauza "/C" se foloseste dupa campurile de tip sir de caractere pentru a face compararea acestor campuri insensibila la tipul literelor: majuscule sau litere mici .
<domeniu>, FOR si WHILE selecteaza inregistrarile ce se vor ordona si vor fi trecute in noua b . d .
Ex . 1 . Sa se ordoneze b . d . mfixe . dbf, cheia de ordonare fiind codul mijlocului fix, iar ordinea crescatoare, noua b . d . va purta numele de: mfixe_s . dbf .
USE mfixe
LIST
SORT TO mfixe_s ON cod /AC
USE mfixe_s
LIST
USE
2 . Sa se obtina din aceeasi b . d . , lista tuturor mijloacelor fixe care nu sunt in folosinta, in ordinea inversa a valorii, la valori egale ordinea fiind data de data instalarii, a punerii in functiune .
USE mfixe
SORT TO mfixe_s ON valoare /D , data_inst ASCENDING;
FOR stare= . T .
USE mfixe_s
LIST
USE
3 . Se creaza b . d . Elevii, cu rmatoarea structura: nume C 10, pren C 10, varsta N 2, clasa N 2, media
N 5 2, inalt N 4 2, aloc N 5, san L 1 .
a . ) Sa se sorteze crescator fiesierul dupa media in fisierul medelevi .
USE elevii
LIST
USE
USE medelevi
LIST
USE
b . ) Sa se sorteze crescator fis . Elevii, dupa campul nume in fis . Numelevi .
USE elevii
LIST
USE
USE numelevi
LIST
USE
c . ) Sa se sorteze fis . Elevii dupa campurile: nume, pren, descrescator in fis . Catalog .
USE elevii
LIST
USE
USE catalog
LIST
USE
Obs . Sortarea dupa mai multe campuri se face cu, Comanda:
d . ) Sa se realizeze un program de comenzi "PROGELEV" care sa execute: curatirea ecranului, sa se sorteze fis . elevii dupa campurile media, inalt in fisierul in fis . elsort, sa-l utilizeze si sa-l afiseze .
Sriu in fereastra de comenzi: MODI COMM PROGELEV (enter) si imi apare o fereastra de editare program si scriu:
CLEAR
USE elevii
USE
USE elsort
LIST
. . . . . . . . . . . . . . . . . .
Il salvez : Save, CTRL/W
Il inched: close
Lansez in executie programul din fereastra de comenzi: Do PROGELEV
Scoatere la imprimanta: SET PRINT ON
INDEXAREA BAZELOR DE DATE (ordonare logica)
Se xecuta prin comanda INDEX, cu urmatoarea sintaxa:
TAG <nume eticheta> [OF <fisier . cdx>]
[FOR <expL>]
[COMPACT]
[ASCENDING │ DESCENDING]
[UNIQUE]
[ADDITIVE]
Cheia de ordonare se va numi cheie de indexare si se specifica prin expresia <expr> , iar fis . index creat se va transmite prin "<fisier . idx>" in cazul fis . simplu, iar "<fisier . cdx>" in cazul unui fis . index compus .
In clauza FOR, numai inregistrarile care respecta conditia <expL> vor putea fi accesate prin fis . index respective .
Clauza COMPACT are ca effect crearea unui fis . index simplu compact, de accesare rapida a inregistrarilor . Fis . index compuse sunt intotdeauna compacte, nu trebuie introdusa clauza .
Introducand clauza UNIQUE, in cazul in care avem doua sau mai multe inreg . cu aceiasi cheie de indexare, va putea fi accesata doar prima dintre acestea, la restul neputandu-se avea acces .
Exemplu: 1 . Creez un fisier index simplu pt . b . d . mfixe . dbf . Se creaza fis . index simplu mfixe_n . dbf, iar inreg . sunt in ordinea campului cod .
USE mfixe
USE
2 . Crearea unei etichete intr-un fis . index compus nestructural . Se creaza eticheta val_n in fis . compus nestructurtal mfixe_d . cdx
USE mfixe
INDEX ON valoare TAG val_n OF mfixe_d
USE
3 . Adaugarea unei noi etichete la fis . index mfixe_d . Se adauga eticheta codden la fis . index mfixe_d , se va ordona dupa cod si denumire doar primele patru caractere din aceste campuri si se selecteaza doar mijloacele fixe ce s-au instalat dupa 1 ian . 1990 .
USE mfixe
TAG codden OF mfixe_d FOR data_inst >
USE
4 . Indexare b . d . in fis . compus structural in care se introduce 4 etichete .
USE mfixe
INDEX ON valoare TAG tvaloare
USE
Comanda SET INDEX , se foloseste pt . deschiderea unor fisiere index pt . b . d . activa .
Sintaxa: SET INDEX TO [<lista fisiere index> │ ? ]
[ORDER <expN> │ <fisier . idx> │
TAG <nume eticheta> [ OF <fisier . cdx>]
[ASCENDING │ DESCENDING]]
[ADDITIVE]
Obs . ADDITIVE - noua lista se adauga la vechea lista .
SET INDEX TO - se vor inchide toate fis . Index din zona de lucru curenta .
Exemplu:
CLOSE ALL
USE mfixe
SET INDEX TO mfixe ORDER TAG tcod ADDITIVE
USE
Comanda SET ORDER, se folos . pentru a selecta alt fisier index activ sau eticheta index activa .
Sintaxa:
SET ORDER TO
[<expN> │ <fisier . idx> │
[TAG]<nume eticheta> [OF <fisier . cdx>]
[IN <exprN2> │<exprC>]
[ASCENDING │DESCENDING]
Obs . Clauza IN se folos . cand, comanda SET ORDER se refera al o alta b . d . decat cea activa cu aliasul │<exprC> sau din zona de lucru <exprN2> .
CLOSE ALL
USE mfixe
INDEX mfixe_n . idx, mfixe_d . cdx, mfixe . cdx
SET ORDER TO codden OF mfixe_d
LIST
USE
Reindexarea bazei de date , se folos . comanda REINDEX
Sintaxa: REINDEX[COMPACT]
USE mfixe
INDEX mfixe_n, mfixe_d
REINDEX
USE
Functiile : NDX()- returneaza numele fis . index simplu . IDX
MDX() si CDX() sunt identice- returneaza numele fis . index compus , ce corespunde nr . de
oedine<expN1> .
USE mfixe
SET INDEX TO mfixe_n . idx, mfixe_d . cdx, mfixe . cdx
? NDX(1)
? NDX(2)==' '
? MDX(1)
? CDX(2)
? MDX(3)==' '
CLOSE ALL
Functia ORDER() - afla numele fis . index simplu activ sau etichetei .
ORDER ([<expN1> │<expC> [,<expN2>]])
USE mfixe INDEX mfixe_n, mfixe_d, mfixe;
ORDER tcod
? ORDER()
SET ORDER TO tvaloare
?' Eticheta activa', ORDER(), 'se gaseste in fisierul'
? ' index compus ',ORDER(SELECT(), 0)
? 'indexul active: ', ORDER()
Cheia de indexare este specificat[ prin functia KEY, este specificata la crearea fis . index simplu folos . KEY()
KEY ([<fisier . cdx>,] <expN1>[,<expN2> │<expC>])
USE mfixe
INDEX mfixe_n, mfixe_d, mfixe
? KEY(2)
? KEY ('mfixe',3)
? KEY(1)
CLOSE ALL
USE mfixe INDEX mfixe_n, mfixe_d, mfixe
DISPLAY STATUS
COPY INDEX mfixe_n . idx TO mfixe_ . cdx
SET INDEX TO mfixe_d, mfixe
ERASE mfixe_n . idx
DISPLAY STATUS
COPY TAG mfixe_n OF mfixe_d . cdx TO mfixe_n . idx
DELETE TAG mfixe_n OF mfixe_d . cdx
USE mfixe INDEX mfixe_n, mfixe_d, mfixe
DISPLAY STATUS
CLOSE ALL
COPY TAG-comanda copiaza eticheta dintr-un fis . index compus in fis . index simplu, eticheta copiata ramane in continuarein lista de indecsi a b . d . ,iar pt . stergere se folos . comanda DELETE TAG .
Comanda SEEK(cauta rapid) este asemanatoare cu comandaLOCATE .
DISPLAY STATUS - afiseaza starea mediului FoxProW .
INDEXARE DUPA STRING:
SET TALK OFF
USE NOM
INDEX ON STR(cod,10) TO NOMi
USE RULAJ
INDEX ON STR(cod,10) TO RULi
CLOSE ALL
USE RULAJ INDEX RULi
USE NOM INDEX NOMi IN 2
SET RELA TO STR(cod,10) INTO 2
REPO FORM
CLOSE ALL
RETURN
Fisier unic calculate .
APPE FROM NOM
APPE FROM RULAJ
USE
USE MANEVRA
INDEX ON STR(COD,10) TO CODi
TOTAL TO SUMA FIELD CANTI, CANTE
LIST
USE
SET TALK OFF
IF NOT FILE ('client . cdx')
USE client
INSEX ON nume TAG numei
ELSE
USE client ORDER nume
ENDIF
LIST
Obs . Funtia FILE(nume) returneaza . T . daca fis . Nu exista, si . F . in caz contrar .
Sortarea si indexarea - "Operare":
SORTARE
Se deschide b . d . material, in pozitia 1 .
Din meniul DATABASE aleg SORT
Din b . d . aleg campul: valoare (din lista All Fields)
ASCENDING
MOVE-in -SORT ORDER
Scope: All
For: material . cond_spec= . T . (dublu clic pe cond_spec si scriu . T . )
Fields: cod, denumire, valoare (dublu clic)
Ok
Save AS: LISTA . dbf
Ok
Ctrl/w
(se sorteaza numai dupa campurile: cod crescator, denumire si valoare)
In fereastra de comenzi scriu:
USE LISTA
BROWSE
INDEXARE
Deschid B . d . personal
Din meniul File - New -Index -New -Ok
(creez fisierul index compus tructural( . cdx) )
se deschide fereastra fis . index
in TAG NAME : nume
(numele primei etichete)
ASCENDING
UNIQUE (dezactivat)
Add to index list (adaug in lista)
Creez a doua eticheta si cheia de indexare
TAG NAME: salar
DESCENDING
Add to index list (adaug in lista)
OK
DATABASE
SETUP
Aleg din Indexes - index personal
SET ORDER (actionat)
Aleg campurile care doresc
Ok
Din SELECTIONS aleg FIELDS- MOVE - Ok
CTRL/W
BROWSE
Calcule Statistice si Financiare cu bazele de date
Se realiz . prin Comenzile: AVERAGE, COUNT, SUM, CALCULATE, TOTAL, RECORD .
Comanda:AVERAGE (calculeaza media aritmetica a valorilor expres . )
USE mfixe
AVERAGE valoare FOR upper (substr(cod,1,1))= 'A' TO medie
? ' Valoarea medie a unui automobil: , medie'
USE
Se considera B . D . 'Salarii . dbf' ce contine salariile angajatilor unei Unit . Economice .
Se cere sa se calculeze salariul mediu pe unitate .
SET TALK OFF
USE salarii
AVERAGE salbrut TO v1
? 'salariul mediu este:'+str(v1,11,2)
USE
Comanda:
COUNT (numara inregistrarile din domeniul specificat si depune rezultatul intr-o variabila) .
USE mfixe
COUNT FOR valoare>50000 TO nrmfixe
? 'In baza de date avem', nrmfixe, 'mijloace fixe'
? ' cu valoarea mai mare decat 50000'
USE
Se considera b . d . 'elevi . dbf' . Se cere sa se calculeze numarul de elevi din baza de date .
USE elevi
COUNT TO v1
? 'Numarul elevilor din baza de date este:'+str(v1)
? v1
USE
Comanda: SUM (permite insumarea valorilor fiecarei expresii pt . toate inreg . b . d . active)
USE mfixe
SUM amortizare TO val_am
SUM valoare TO val_tot
? ' S-a amortizat', val_am/val_tot*100, '%'
? ' din valoarea totala a mijloacelor fixe'
USE
Se considera B . D . 'Salarii . dbf' ce contine salariile angajatilor unei Unit . Economice .
Se cere sa se calculeze suma disponibila pentru plata salariatilor Unit . Ec .
USE salarii
SUM salbrut TO v1
?' Pt . plata salariilor trebuie sa dispuneti de:' + (v1,15,2)+ ' lei'
USE
Comanda CALCULATE (calculeaza valorile mai multor expresii, pe care le depune intr-o lista de variabile
sau intr-un tablou) . (Max,Min) .
USE numere
CALCULATE max(numar), min(numar), sum(numar);
TO maxim, minim, suma
? 'Valoarea maxima este:', maxim
? 'Valoarea minima este: ', minim
? 'Suma numerelor este:', suma
USE
USE camere
CALCULATE min(data+nr_zile) TO v1 FOR data+nr_zile>date()
? 'data la care va fi eliberata prima camera este:', v1
USE
Comanda TOTAL (calculeaza suma campurilor numerice din b . d . activa si creaza noua b . d . ce contine
rezultatele)
USE intrari
INDEX ON cod_prod TO icod
List
TOTAL ON cod_prod TO totintr FIELDS cantitate
USE totintr
LIST
USE
USE plati
INDEX ON platitor TAG platitor ORDER 1
TOTAL TO totplati ON platitor
LIST
RECORD (modifica automat continutul bazei de date)
Sa se dubleze valoarea materialelor de tip bere din aceiasi baza de date, cod:bere
USE material
Browse
Din meniul RECORD aleg REPLACE
-se stabilesc conditiile de selectie a inreg .
Scope : ALL
For: SUBSTR(Material . cod,1,4)= = 'bere'
While: -
-cu ajut . Constructorului de expresii prin declansat . With, introduc expresia:
Material . cantitate*2
Actionez declansatorul REPLACE
use agenda
index on nume to agenda . idx
@ 2,2 say 'de la ce litera doriti listarea? '
read
k=0
go top
browse fields nume,prenume,nr_telefon
return
Se da baza de date intrari . dbf:
cod_prod(N5),den_prod(C20),cantitate(N7),pret(N10 . 2),data(D),furnizor(C20),um(C5) .
use intrari
index on cod_prod to icod
list
total on cod_prod to totintr fields cantitate
use totintr
list
set talk off
store space (1) to opt
do while . t .
@ 5,1 say 'A - adaugare'
@ 6,1 say 'M - modificare'
@ 7,1 say 'S -Steregere'
@ 8,1 say 'T -terminare'
@ 9,1 say 'introduceti optiunea:' get opt function '!'
read
do case
case opt='A'
do adaugare
case opt='M'
do modificare
case opt='S'
do stergere
case opt='T'
exit
otherwise
? 'optiune eronata'
loop
endcase
enddo
Copyright © 2024 - Toate drepturile rezervate