Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Foxpro


Index » educatie » » informatica » Foxpro
» Crearea si utilizarea bazelor de date (b.d.)


Crearea si utilizarea bazelor de date (b.d.)


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="GIURGIU"

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)

  1. Se da b . d . elevi . dbf si campurile: nr_matricol, numele, prenumele, data_n, nota_1, nota_2, nota_3, media, obs .

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

SORT ON media TO medelevi

USE

USE medelevi

LIST
USE

b . ) Sa se sorteze crescator fis . Elevii, dupa campul nume in fis . Numelevi .

USE elevii

LIST

SORT ON nume TO numelevi

USE

USE numelevi

LIST
USE

c . ) Sa se sorteze fis . Elevii dupa campurile: nume, pren, descrescator in fis . Catalog .

USE elevii

LIST

SORT ON nume, pren TO catalog DESCENDING

USE

USE catalog

LIST
USE


Obs . Sortarea dupa mai multe campuri se face cu, Comanda:

SORT ON nume_camp1, nume_camp2, . TO nume_fisier_nou .

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

SORT ON media, inalt TO elsort

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:

INDEX ON <expr> TO <fisier . idx>│

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

INDEX ON cod TO mfixe_n

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

INDEX ON substr(cod,1,4)+substr(denumire,1,4);

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 cod TAG tcod

INDEX ON valoare TAG tvaloare

INDEX ON amortizare TAG tamortizare DESCENDING

INDEX ON stare TAG stare

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







Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate