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

1

Nume

C

15

2

Prenume

C

18

3

Data_nast

D

8

4

Adresa

C

30

5

Casatorit

L

1

6

Telefon

N

10

0

7

hobby

M

10

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 © 2019 - Toate drepturile rezervate

Foxpro


Access
Adobe photoshop
Autocad
Baze de date
C
Calculatoare
Corel draw
Excel
Foxpro
Html
Internet
Java
Linux
Mathcad
Matlab
Outlook
Pascal
Php
Powerpoint
Retele calculatoare
Sql
Windows
Word