Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Nume
Popescu
Toma
Axente
Prenume
Dumitru
Daniela
Ionel
Telefon
321645
324586
______
Data naterii
06/27/67
03/09/69
12/02/72
4.
Tudor
Mihaela
132478 09/13/68
Sex
B
F
B
F
Adresa
Oneti, Str.Oituz, Bl.11, Ap.33
Bucureti, Str. Cuza Vod, Nr.2
Timioara, B-dul Revoluiei Nr.49,
Sc.A, Et.1, Ap.4
Bacu, Str. Mreti Nr. 56
baz de date
indicatorul de
nregistrri
nregistrri
nr. nregistrare
curent
Indicatorul de nregistrri poate fi modificat prin comenzi FoxPro, acest lucru fiind
echivalent cu deplasarea sgeii indicatorului de nregistrri n sus i n jos, de-a lungul
bazei de date.
Pentru a folosi o baz de date (b.d.) aceasta trebuie mai nti deschis (se presupune c ea
exist pe disc, a fost creat anterior). Deschiderea bazei de date presupune rezervarea n
memoria intern a calculatorului a unei zone rezervate n care FoxPro va memora toate
informaiile necesare utilizrii acestei baze de date (structura, numrul de nregistrri,
etc). Aceast zon de memorie poart denumirea de zon de lucru (work area). FoxPro
poate manipula mai multe b.d. simultan, deci poate lucra cu mai multe zone de lucru, 25
la numr, n care se deschid b.d. respective. Asocierea b.d. la zonele de lucru este
controlata de ctre programator, acesta avnd la dispoziie comenzi i funcii specializate
n acest scop.
Dup seschiderea unei b.d. (ntr-o zon de lucru) se poate trece la lucrul cu aceasta, adic
vom putea:
s prelum informaii din b.d.;
s modificm informaiile deja existente;
s adugm noi informaii;
s tergem informaiim din b.d., etc.
Dup terminarea lucrului cu b.d. urmeaz nchiderea acesteia, constnd n:
desfacerea legturii dintre b.d. i zona de lucru;
eliberarea memoriei alocate la deschidere (eliberarea zonei de lucru);
nchiderea fiierului b.d., odat cu memorarea modificrilor efectuate de la deschidere
pn n acest moment.
Acesta este pe scurt modul de lucru co o b.d. Pentru a putea lucra cu o baz de date
trebuie s nelegem cum anume se realizeaz prelucrarea i memorarea informaiilor,
respectiv organizarea informaiilor pe tipuri de date i funciile specifice fiecrui tip de
date.
2. TIPURI DE DATE
.F.
2.2.TIPUL NUMERIC
Operanzi numerici:
- cmpuri numerice ale b.d.
- variabile de tip numeric
- funcii care returneaz valori numerice
- constante numerice
Operatorii aritmetici care se aplica operanzilor numerici cu rezultat numeric:
OPERATOR
SEMNIFICAIE
()
grupeaz expresiile
**, ^
ridicare la putere
*, /, %
nmulire, mprire, modulo(restul mpririi)
+, adunare scdere
Operatorii relaionali:
OPERATOR
<
>
=
<>, #, !=
<=
>=
RELAIE
mai mic dect
mai mare dect
egal cu
diferit de
mai mic sau egal cu
mai mare sau egal cu
RELAIE
inclus n
mai mic dect
mai mare dect
identic cu
diferit de
mai mic sau egal cu
mai mare sau egal cu
?ASC(A)
?ASC(a)= =ASC(alfa)
65
.T.
Funcia LEN( )- returneaz lungimea irului primit ca parametru.
Sintax: LEN(<expC>)
Exemplu:
?LEN(Bun ziua !)
?LEN(baze+de date)
11
13
Funcia LOWER( )- transform toate majusculele n litere mici, restul
caracterelor rmnnd neschimbate.
Sintax: LOWER(<expC>)
Exemplu:
?LOWER(POpescu AliN)
popescu alin
Funcia UPPER( )- transform toate literele mici n majuscule, restul caracterelor
rmnnd neschimbate.
Sintax: UPPER(<expC>)
Exemplu:
?UPPER(POpescu AliN)
POPESCU ALIN
Funcia PROPER( )- transform primul caracter n majuscul (dac este liter),
restul caracterelor n litere mici.
Sintax: PROPER(<expC>)
Exemplu:
?PROPER(POPEsCu aliN)
Popescu Alin
2.4 TIPUL DE DAT CALENDARISTIC
O constant de tip dat calendaristic se specific prin luna, ziua i anul
corespunztor, separate prin caracterul / i ncadrate ntre paranteze acolade.
Data calendaristic vid se specific prin blancuri n poziia zilei, lunii i anului
sau printr-un blanc ncadrat ntre paranteze acolade.
ex.: data_vid { / / } sau data vid { }
FoxPro trateaz toate datele calendaristice invalide ca date calendaristice vide.
ex.: ? {03/33/99}= = { }
.T.
Adunarea unei zile la o dat calendaristic are ca efect avansarea datei cu o zi n
ordine calendaristic.
astfel: {02/28/99}+1 va fi egal cu {03/01/99}
sau ? {01/01/99}-1
12/31/98
Operatorii relaionali se pot aplica i datelor de tip dat calendaristic. O dat
calendaristic este este mai mare dect alta atunci cnd prima dintre acestea urmeaz
calendaristic celei de a doua.
Formatul de specificare a datelor calendaristice este controlat de comanda SET
DATE.
sintax:
SET DATE [TO]
AMERICAN ANSI BRITISH FRENCH GERMAN
ITALIAN JAPAN USA MDY DMY YMD
Formatul datei este dat de urmtorul tabel:
TIPUL DATEI
AMERICAN
ANSI
BRITISH
FRENCH
GERMAN
ITALIAN
JAPAN
USA
MDY
DMY
YMD
FORMATUL
ll/zz/aa
aa/ll/zz
zz/ll/aa
zz/ll/aa
zz/ll/aa
zz/ll/aa
aa/ll/zz
ll/zz/aa
ll/zz/aa
zz/ll/aa
aa/ll/zz
Ex.:
Ex.:
1
IANUARY
Funcia YEAR() returneaz anul ca valoare numeric
?YEAR(DATE()-30)
1989
FUNCII CARE LUCREAZ CU ORA SISTEMULUI
Funcia TIME([<expN>]) care returneaz ora sistemului.
?TIME()
15:12:25
?TIME(0)
15:13:24.75
Funcia SYS(2) returneaz numrul de secunde care au trecut de la ora 0.
Ex.: ?TIME()
15:16:03
?SYS(2)
55000
Funcia SECONDS() returneaz numrul de secunde i numrul de milisecunde
care au trecut de la ora 0.
Ex.: ?TIME()
15:19:52
?SYS(2)
55191
?SECONDS()
55191.863
Ceasul sistemului poate fi afiat n permanen pe ecran cu ajutorul comenzilor
SET CLOCK ON OFF unde ON face ca ceasul s fie afiat n permanen pe ecran sau
SET CLOCK TO [<rnd>,<coloan>] folosit pentru a specifica poziia pe ecran unde
se dorete afiarea.
Ex.: SET CLOCK ON
SET CLOCK TO 1,70
vor determina afiarea n permanen a cesului n partea din dreapta sus a ecranului (linia
1 coloana 70).
3. CREAREA UNEI BAZE DE DATE
Pentru a crea o baz de date se folosete comanda CREATE.
sintax:
CREATE [<fiier> ?]
unde <fiier> este numele fiierului n care vrem s pstrm baza de date. Dac nu
se specific o alt extensie, implicit se asociaz extensia dbf (data base file). Dac nu se
specific numele fiierului sau se folosete parametrul ? pe ecran se deschide o fereastr
unde se va introduce numele b.d.
Enter the name of the new file
[..]
foxhelp.dbf
DRIVE
foxuser.dbf
install.dbf
DIRECTORY
FOXPRO
[ ] All files
UNTITLED
<<Create>>
<Cancel>
Structure: Untitled
Name
Type
Width
Dec
Field
<Insert>
<Delete>
<<OK>>
<Cancel>
FIELDS: 0
LENGTH: 1
AVIABLE: 3999
ZONE DE LUCRU
Pentru manipularea b.d. FoxPro folosete zonele de lucru (maxim 25) n care
depune informaiile necesare operaiilor efectuate cu b.d. respective. La un moment dat o
singur b.d. este curent, implicit zona de lucru curent va fi 1 sau A, pentru identificarea
zonelor de lucru folosindu-se numerele de la 1 la 25 sau litere de la A la J (pentru primele
10 zone de lucru).
Schimbarea zonei de lucru curente se face cu comanda SELECT.
sintaxa: SELECT <expN> <expC>
unde <expN> reprezint numrul zonei de lucru ce va fi activat. Dac <expN>
este 0 atunci se va selecta prima zon de lucru neocupat.
<expC> caractere A, B,
Pentru a afla care este zona de lucru curent se folosete funcia SELECT().
sintax: SELECT ([0 ])
Parametrul 0 determin funcia s returneze numrul zonei de lucru curente.
Parametrul 0 determin funcia s returneze numrul ultimei zone de lucru nefolosite.
4. MANIPULAREA STRUCTURII UNEI BAZE DE DATE
Pentru a realiza modificarea structurii unei baze de date se folosete comanda
MODIFY STRUCTURE.
sintaxa: MODIFY STRUCTURE sau MODI STRU
Aceast comand deschide o fereastr de dialog, aceeai ca la crearea b.d. unde se
realizeaz modificrile dorite. Dac n zona de lucru curent avem deschis o b.d., atunci
comanda se refer la aceasta. n caz contrar apare o fereastr de dialog n care utilizatorul
selecteaz b.d. creia i va modifica structura.
Vizualizarea coninutului unei b.d. se realizeaz cu comenzile DISPLAY
STRUCTURE sau LIST STRUCTURE.
sintaxa:
DISPLAY STRUCTURE [IN<expN> <expC>]
[TO PRINTER TO FILE <fiier>]
[NONCONSOLE]
LIST STRUCTURE [IN<expN> <expC>]
[TO PRINTER TO FILE <fiier>]
[NONCONSOLE]
deosebirea dintre cele dou comenzi este c prima (DISPLAY) face pauz dup umplerea
unui ecran cu informaii, la cea de-a doua (LIST) afiarea fcndu-se cu defilare.
<expN> sau <expC> specific zona de lucru, respectiv b.d. la care se refer
comanda. n cazul n care apare opiunea NONCONSOLE afiarea pe ecran (implicit)
este inhibat. n paralel cu afiarea pe ecran informaiile pot fi trimise la imprimant
(clauza TO PRINTER) sau n fiier <fiier> (clauza TO FILE).
Un alt mod de a crea o b.d. l reprezint comanda COPY STRUCTURE care
careaz o b.d. nou cu aceeai structur (sau asemntoare) cu a celei deschise n zona de
lucru curent.
sintaxa: COPY STRUCTURE TO <fiier>
[FIELDS<lista de cmpuri>]
unde <fiier> reprezint fiierul noii b.d. Clauza FIELDS are ca efect copierea n
noua b.d. doar a cmpurilor specificate n lista de cmpuri ce urmeaz clauza.
Exerciiu: S se modifice structura b.d. agenda.dbf astfel nct noua b.d. s conin
nc un cmp i anume nlime (exprimat n metri, centimetri) numeric cu lime 5 din
care 2 partea zecimal.
5. DESCHIDEREA I NCHIDEREA UNEI BAZE DE DATE
Pentru lucrul cu b.d. create anterior este necesar deschiderea lor n zone de lucru
ale FoxPro. Acest lucru se relizeaz folosind comanda USE
sintaxa: USE [<fiier> ?]
[n <zona de lucru>]
[AGAIN]
unde <fiier> este fiierul b.d. ce va fi deschis. Dac nu se specific nici <fiier> i nici ?
atunci comanda are ca efect nchiderea b.d. din zona de lucru curent. Dac n locul
fiierului apare ? fiierul b.d. ce va fi deschis va fi obinut printr-o fereastr de dialog.
n cazul n care clauza i lipsete deschiderea b.d. se va face n zona de lucru
curent, altfel zona de lucru n care se va deschide b.d. va fi cea specificat n clauza in.
n cazul n care se dorete deschiderea unei b.d. de mai multe ori n zone de lucru
diferite se folosete clauza AGAIN.
Dac la deschiderea unei b.d. n zona de lucru exist o alt b.d., cea veche este
nchis automat nainte de deschiderea celei noi.
nchiderea bazelor de date se poate realiza i cu comenzile CLOSE ALL i
CLOSE DATABASE.
sintaxa:CLOSE ALL
- nchide toate fiierele din toate zonele de lucru i selecteaz zona de lucru 1
CLOSE DATABASE
- nchide toate bazele de date i selecteaz zona de lucru 1.
Pentru a obine informaii despre zonele de lucru i b.d. deschise n ele se vor
folosi dou funcii: USED() i DBF().
sintaxa: USED([<expN> <expC>])
unde <expN> sau <expC> specific zona de lucru despre care dorim s aflm
informaii.
Aceast funcie returneaza o valoare logica astfel:
.T. dac n zona de lucru este deschis o b.d.
.F. dac zona de lucru este liber
Dac nu se specific o zon de lucru, funcia se refer la zona de lucru curent.
Pentru a afla ce b.d. este dechis ntr-o anumit zon de lucru se folosete funcia
DBF(). Aceasta returneaz un ir de caractere ce conine numele b.d. deschis ntr-o zon
de lucru.
sintaxa: DBF([<expN])
unde <expN> reprezint numrul zonei de lucru la care funcia se refer. Dac nu
este deschis nici o b.d. n zona de lucru specificat, atunci va fi returnat irul vid.
exerciiu: S se deschid b.d. agenda.dbf n dou zone de lucru (1 i 2) i s se nchid
b.d. din zona 1.
USE AGENDA
USE AGENDAIN 2 AGAIN
? DBF(2)
AGENDA.DBF
SELECT 1
USE
6. DOMENIUL NREGISTRRILOR
6.1 CLAUZELE DE DOMENIU
Exist comenzi care acioneaz asupra mai multor nregistrri ale unei b.d.
Selectarea acestora se face specificnd n comand condiia de selectare. Mulimea
nregistrrilor care respect condiia formeaz domeniul nregistrrilor la care se refer
comanda respectiv. Domeniul nregistrrilor se specific prin clauzele <domeniu>, FOR
i WHILE incluse opional n comand.
Clauza <domeniu> se va nlocui cu una din urmtoarele construcii:
ALL selecteaz toate nregistrrile din b.d.
NEXT <expN> se refer la urmtoarele <expN> nregistrri, ncepnd
de la nregistrarea curent inclusiv;
RECORD <expN> acioneaz numai asupra nregistrrii cu numrul
<expN>;
REST selecteaz nregistrrile ncepnd de la cea curent inclusiv i
pn la sfritul b.d.
Clauza FOR:
Sintaxa: FOR <expL>
se folosete pentru selectarea nregistrrilor n funcie de o condiie logic
<expL>. Se selecteaz acele nregistrri pentru care <expL> este adevrat.
Clauza WHILE:
Sintaxa: WHILE <expL>
selecteaz nregistrrile n funcie de condiia logic <expL>. Se selecteaz acele
nregistrri pentru care <expL> este adevrat. Spre deosebire de clauza FOR care dup
gsirea unei nregistrri care nu respect condiia continu cu testarea celorlalte, clauza
WHILE ntrerupe testarea nregistrrilor cnd gsete o nregistrare ce nu respect
condiia dat.
Dac se folosesc ambele clauze FOR i WHILE, prima care conteaz este clauza
WHILE.
n expresia logic din clauza FOR i WHILE, trebuie s apar o mrime care s
varieze n funcie de nregistrare. Aceasta trebuie s depind fie de numrul de
nregistrare, fie de coninutul acesteia.
Exerciiu: S se afieze toate nregistrrile al cror nume ncepe cu o liter de dup litera
P.
6.2 INDICATORUL DE NREGISTRRI
Indicatorul de nregistrri este asociat unei b.d. la deschidere i este ters la
nchiderea b.d. La deschiderea b.d. indicatorul de nregistrri va indica spre prima
nregistrare (spre nregistrarea 1), dac ea exist.
Aflarea nregistrrii curente dintr-o b.d. (deci a coninutului indicatorului de
nregistrri) se face folosind funcia RECNO( ).
Sintaxa: RECNO([<expN>])
Funcia returneaz un rezultat numeric reprezentnd numrul nregistrrii curente
din b.d. deschis n zona de lucru <expN>. Dac <expN> lipsete atunci funcia se refer
la b.d. activ.
Exemplu:
USE AGENDA
?RECNO( )
1
LIST NEXT 2
?RECNO( )
2
Schimbarea nregistrrii curente se realizeaz cu ajutorul cumenzilor: GOTO,
SKIP.
Comanda GO sau GOTO poziioneaz indicatorul de nregistrri pe o anumit
nregistrare dintr-o b.d. (GO i GOTO sunt identice).
Sintaxa: GO | GOTO [RECORD] <expN1> [n <expN2>]
GO | GOTO TOP | BOTTOM [IN <expN2>]
Prima form are ca efect poziionarea indicatorului de nregistrri di b.d. sau din
zona de lucru <expN2> pe nregistrarea cu numrul <expN1>.Absena clauzei IN
determin referirea la b.d. activ.
Clauza RECORD este opional, prezena ei neavnd nici un efect; ea se introduce
pentru claritatea programului.
Forma a doua a comenzii se folosete pentru poziionarea indicatorului de
nregistrri la extremele b.d. (la nceputul sau sfritul acesteia).
Clauza TOP se folosete pentru poziionarea pe prima nregistrare, pe cnd
BOTTOM determin poziionarea pe ultima nregistrare a b.d.
Urmtoarele comenzi sunt echivalente:
GO 1
GOTO 1
GO RECORD 1
GO TOP
GOTO TOP IN SELECTED( )
Un alt tip de deplasare cu indicatorul de nregistrri este realizat cu ajutorul
comenzii SKIP. Aceasta mut indicatorul de nregistrri peste un numr de nregistrri
relativ la nregistrarea curent.
Sintaxa: SKIP [<expN1> | | <expN2>]
unde <expN1> reprezint numrul de nregistrri peste care se sare (cu indicatorul
de nregistrri). Acesta poate fi att un numr pozitiv (se sare spre o nregistrare cu un
numr de nregistrare mai mare), ct i negativ (se sare spre o nregistrare anterioar celei
curente). <expN2> specific zona de lucru n care este deschis b.d.
Dac se sare peste ultima nregistrare a b.d., indicatorul de nregistrri va conine
numrul de nregistrri din b.d.+1, iar funcia EOF( ) va returna valoarea .T.; n cazul
saltului naintea primei nregistrri funcia BOF( ) va returna valoarea .T.
Urmtoarele comenzi sunt echivalente:
SKIP
SKIP 1
SKIP IN SELECT( )
GOTO RECORD RECNO( )+1
Funciile EOF( ) i BOF( )
Sintaxa: EOF( [<expN>] )
BOF( [<expN>] )
testeaz dac indicatorul de nregistrri se afl la sfritul, respectiv la nceputul
b.d. active sau a celei specificate ca parametru.
Numrul de nregistrri dintr-o b.d. este dat de funcia RECCOUNT( ).
Sintax: RECCOUNT( [<expN>] )
Exemplu:
USE AGENDA
?RECNO( )
1
SKIP 3
?RECNO( )
4
GO TOP
?RECNO( )
1
SKIP 2
?BOF( )
.T.
7. VIZUALIZAREA CONINUTULUI UNEI BAZE DE DATE
Afiarea coninutului b.d. se poate face pe ecran, la imprimant sau ntr-un fiier
de pe disc folosind comenzile LIST i DISPLAY.
Sintaxa: DISPLAY[ [FIELDS] <lista de cmpuri>]
[<domeniu>] [FOR <expL1>] [WHILE <expL2>]
[OFF]
[TO PRINTER | TO FILE <fiier>]
[NOCONSOLE]
Afiarea informaiilor se face n urmtorul format:
- prima linie reprezint lista cmpurilor identificate prin numele acestora;
- urmtoarele linii reprezint nregistrri din b.d., n cadrul crora cmpurile sunt
afiate unul lng altul.
Pe prima poziie se afieaz numrul de ordine al nregistrrii n b.d.
Clauza FIELDS se folosete cu scopul de a afia doar cmpurile specificate n
<lista de cmpuri>, n ordinea apariiei lor n aceast list. Absena acestei clauze
determin afiarea tuturor cmpurilor b.d., n ordinea n care apar acestea n structura b.d.
<domeniu>, FOR, WHILE determin domeniul nregistrrilor ce vor fi afiate.
Dac aceste clauze lipsesc se va afia doar nregistrarea curent, acesta fiind domeniul
implicit al nregistrrilor, pentru comanda DISPLAY.
Prezena clauzei OFF determin dispariia din formatul de afiare a coloanei 0 (nu
se mai afieaz numrul de ordine).
Prezena clauzei NONCONSOLE oprete afiarea pe ecran.
Se poate face afiarea i la imprimant, dac se folosete clauza TO PRINTER,
sau n fiierul <fiier>, dac se folosete clauza TO FILE.
Comanda LIST este asemntoare cu DISPLAY (are aceeai sintax, cu aceleai
semnificaii ale clauzelor) cu urmtoarele diferene:
comanda DISPLAY afieaz doar nregistrarea curent, pe cnd comanda LIST
afieaz toate nregistrrile;
comanda DISPLAY are ca efect afiarea coninutului b.d. ecran cu ecran, trecerea de
la un ecran la altul fcndu-se dup apsarea unei taste, la comanda LIST afiarea se
face cu defilare, pauza dintre ecrane lipsind;
LIST nu afieaza nregistrrile marcate pentru tergere cnd avem SET DELETED
ON, pe cnd DISPLAY le afieaz i pe acestea. Pentru ca denumirile cmpurilor s
nu mai apar la afiare, se folosete comanda
SET HEADING ON|OFF
unde ON determin afiarea antetului iar OFF determin inhibarea afirii. Opiunea
implicit este ON.
Exemplu:
USE AGENDA
LIST
GO TO 3
LIST REST
GO TOP
DIS PLAY
DISPLAY NEXT 3
LIST ALL FOR NUME >P
DISPLAY FIELDS NUME, PRENUME
8. ADUGAREA DE NREGISTRRI LA O BAZ DE DATE
Adugarea de nregistrri se poate face n dou moduri, n funcie de poziia pe
care o va ocupa noua nregistrare n b.d.:
adgarea de nregistrri noi la sfritul b.d.;
introducerea de nregistrri noi n interiorul b.d.
Comanda APPEND adaug nregistrri la sfritul b.d. deschise n zona de lucru
curent.
sintaxa:
APPEND [BLANK]
Comanda APPEND fr clauza BLANK determin deschiderea unei ferestre de
edtiare n care utilizatorul poate introduce cmp cu cmp informaiile nregistrrii
(nregistrrilor) ce se vor adga. Terminarea introducerii tuturor nregistrrilor se
realizeaz apsnd simultan tastele Ctrl i End, fereastra de editare nchizndu-se dup
aceasta.
O form deosebit a comenzii APPEND se obine folosind clauza BLANK.
Comanda APPEND BLANK are ca efect adugarea unei noi nregistrri blank la
sfritul b.d., urmnd ca informaia util s se ncarce mai trziu, prin alte comenzi.
nregistrarea blank este nregistrarea n care toate cmpurile sunt inializate cu spaii
(CHR(#)).
Adugarea de nregistrri la sfritul unei b.d. cnd coninutul este preluat dintr-un
alt fiier se relizeaz cu comanda APPEND FROM care are urmtoarea sintax:
APPEND FROM <fiier>
[FIELDS <lista cmpuri>]
[FOR <expL>]
unde <fiier> reprezint numele fiierului din care se preiau nregistrrile ce se
vor aduga la bza de date. Dac nu se specific numele fiierului, trebuie specificat
clauza ?, astfel se ofer utilizatorului posibilitatea alegerii fiierului printr-o fereastr de
dialog.
Dac se dorete ca baza de date <fiier> s se preia doar anumite cmpuri, se va
include clauza FIELDS, n care <lista cmpuri> reprezint lista cmpurilor ce se vor
copia, separate prin virgul.
Pentru a se prelua din fiier doar anumite nregistrri, se va specifica domeniul
acestora prin clauza FOR.
ex.:
USE agenda
APPEND
APPEND BLANK
COPY STRU TO ag1 FIELDS nume, prenume
USE
USE ag1
APPEND FROM agenda FOR nume <d
Cea de-a doua metod de adugare a unei nregistrri noi la o b.d. o reprezinta
inserarea nregistrrii n interiorul b.d. folosind comanda INSERT.
sintaxa:
INSERT [BEFORE][BLANK]
are ca efect inserarea unei nregistrri noi, dup nregistrarea curent.
Dac se specific clauza BLANK se adaug o nregistrare blank, altfel se intr
ntr-o fereastr de editare de noi nregistrri asemntoare ferestrei de la comanda
APPEND.
Clauza BEFORE determin adugarea unei nregistrri noi naintea nregistrrii
curente, astfel:
NREGISTRARE NOU
nregistrare curent
INSERT
sunt corecte, altfel aceasta se consider .F., findu-se mesajul de eroare <expC1> dac
clauza ERROR apare, sau mesajul implicit de eroare altfel. :F foreaz evaluarea <exp1>
chiar dac nu s-au modificat valorile din nregistrare, ci doar s-a trecut prin ea.
Clauza WHEN perminte intrarea n editare doar dac <expL1> este evaluat ca .T.
Clauza WIDTH limiteaz numrul de caractere afiate, fr a efectua limea cmpului n
b.d.
Comanda BROWSE
Sintaxa: BROWSE
[FIELDS <lista cmpuri>]
[FOR <expL1>]
[FREEZE]
[NOAPPEND] [NOCLEAR] [NODELETE]
[NOEDIT] [NOMODIFY]
[VALID [:F] <exp1>[ERROR<expC1>]]
[WHEN<expL1>]
[WIDTH<expN1>]
Semnificaia clauzelor este aceeai ca la comanda CHANGE.
Modificarea coninutului unei b.d. se poate face i cu comanda REPLACE, ns
aceasta nu deschide o fereastr de editare, ci realizeaz prupiu-zis actualizarea b.d. cu
datele precizate prin comand.
Sintaxa: REPLACE <cmp1> WITH <expr1>
[,<cmp2> WITH <expr2>]
[<domeniu>] [FOR<expL1>] [WHILE<expL2>]
Comanda nlocuiete vechea valoare din cmpul <cmp1> cu valoarea rezultat din
evaluarea expresiei <expr1> ,valoarea din <cmp2> cu <expr2> etc.
Pentru cmpuri numerice, dac nu se reuete ncadrarea valorii expresiei n cmpul
respectiv, acesta va fi umplut cu asterixuri.
<domeniu> FOR, WHILE specific domeniul nregistrrilor la care se refer comanda,
domeniul implicit fiind nregistrarea curent.
Exemplu:
USE agenda
REPLACE nume WITH UPPER (nume), prenumeWITH PROPER
(prenume) ALL
BROWSE FIELDS nume, prenume FOR nr_telefon>320000
10. TERGEREA NREGISTRRILOR DINTR-O BAZ DE DATE
tergerea unei nregistrri se poate realiza la dou nivele i anume:
la nivel logic nregistrarea nu este propriu-zis tears, ci ea este marcat pentru
tergere, anumite comenzi i funcii considernd aceste nregistrri absente di fiierul b.d.,
existnd ns posibilitatea ca informaia coninut n nregistrare s poat fi recuperat;
la nivel fizic nregistrarea este tears efectiv din b.d., ea nemaiputnd fi recuperat.
Marcarea pentru tergere a uneia sau a mai multor nregistrri se realizeaz cu
ajutorul comenzii DELETE.
Sintaxa: DELETE
[<domeniu>] [FOR <expL1>] [WHILE <expL2>]
unde <domeniu>,FOR, WHILE identific nregistrrile ce vor fi marcate pentru tergere.
Domeniul implicit al comenzii DELETE este nregistrarea curent.
Accesul la nregistrrile marcate pentru tergere este controlat de comanda SET
DELETED.
Funcia FIELDS( ) returneaz numele unui cmp dintr-o b.d., identificat prin
numrul cmpului n cadrul structurii b.d.
Sintaxa: FIELDS(<expN1>[,<expN2>] )
unde <expN1> specific numrul cmpului, iar <expN2> identific zona de lucru n care
se afl b.d. (dac nu se specific, funcia se refer la zona de lucru curent). Funcia
returneaz un ir de caractere coninnd numele cmpului specificat, scri cu majuscule. n
cazul n care numrul de ordine al cmpului specificat este mai mare dect numrul total
de cmpuri al b.d., funcia va returna irul vid de caractere.
Funcia FSIZE( ) returneaz mrimea unui cmp al unei b.d., specificat prin
numele su.
Sintaxa: FSIZE (<expC1>[,<expN>] )
unde <expC1> este un ir de caractere ce reprezint numele cmpului, <expN> specific
zona de lucru. Rezultatul este de tip numeric.
12. ACCESUL LA NREGISTRRI
n afar de controlul asupra nregistrrilor exercitat cu ajutorul comenzilor de
tergere, mai exist o metod de control a accesului la informaiile din nregistrri.
Aceast metod este dat de comanda SET FILTER.
Sintaxa: SET FILTER TO[<expL>]
Comanda determin ca n b.d. s apar doar nregistrrile care ndeplinesc condiia
<expL>.
SET FILTER TO fr condiie face ca toate nregistrrile din b.d. s poat fi
accesate.
Pentru a afla condiia condiia de accesare a nregistrrilor (expresia filtru) se folosete
funcia FILTER.
Sintaxa: FILTER(<expN>)
unde <expN> specific zona de lucru n care este deschis b.d.
Rezultatul funciei este un ir de caractere reprezenrnd expresia filtru stabilit de
comanda SET FILTER.
Exemplu:
SET FILTER TO data_naterii>{03/02/1981}
LIST
13. CUTAREA NREGISTRRILOR NTR-O BAZ DE DATE
n cazul n care dorim s gsim o nregistrare care s satisfac anumite condiii,
putem folosi comanda LOCATE.
Sintaxa: LOCATE FOR<expL1>
[<domeniu>] [WHILE<expL2>]
Comanda caut prima nregistrare care respect condiia <expL1> n b.d. activ.
Domeniul nregistrrilor care se testeaz este dat de clauzele <domeniu> i WHILE,
domeniul implicit fiind ALL. n caz de reuit, adic la gsirea unei nregistrri care
respect condiia <expL1>, indicatorul de nregistrri se poziioneaz pe nregistrarea
respectiv, funcia FOUND ( ) va returna valoarea .T. iar funcia EOF( ) va returna
valoarea .F. n caz contrar, indicatorul de nregistrri va fi poziionat dup ultima
nregistrare (numrul total de nregistrri+1), FOUND( ) va returna .F. iar EOF( ) va
returna .T.
ntr-o b.d. pot exista mai multe nregistrri care respect o condiie dat. Prima
dintre acestea va fi gsit folosind comanda LOCATE, urmtoarele vor fi gsite folosind
comanda CONTINUE.
Sintaxa: CONTINUE
Comanda gsete urmtoarea nregistrare care respect condiiile specificate n ultima
comand LOCATE aplicat b.d. active.
Testarea reuitei sau nereuitei cutrii se face cu funciile RECNO( ), FOUND( )
i EOF( ).
Funcia FOUND( )
Sintaxa: FOUND( [<expN>] )
este folosit pentru testarea rezultatului unei cutri n b.d. (eventual specificat prin zona
de lucru <expN>). Ea returneaz .T. dac s-a gsit o nregistrare i .F. dac nu s-a gsit
nici o nregistrare care s satisfac condiiile impuse de LOCATE.
14. ORDONAREA UNEI BAZE DE DATE
O b.d. este ordonat dup un anumit vriteriu, dac fiecare nregistrare a acesteia
respect criteriu dat, n raport cu celelalte nregistrri. Criteriu de comparaie ntre dou
nregistrri este format dintr-un operator relaional mai mic (<) sau mai mare (>) care se
aplic la dou valori ale unei expresii, fiecare corespunznd uneia dintre nregistrrile de
comparat. Astfel, compararea a dou nregistrri se reduce la compararea valorilor
expresiei respective.
Expresia poart numele de cheie de ordonare.
n FoxPro exist dou metode de ordonare a unei b.d. i anume:
ordonarea propriu-zis a b.d. prin schimbarea ntre ele a nregistrrilor, dup un
anumit logaritm, pn cnd acestea sunt n ordinea dorit. n acest caz se obine o
nou b.d. care conine aceleai nregistrri ca i cea de la care s-a pornit, dar n
ordinea dorit;
indexarea unei b.d., aceasta crearea unui nou fiier care conine informaii cu privire
la ordinea nregistrrilor n b.d. i n acest caz se obine un fiier nou, fiierul index,
dar acesta nu conine nregistrrile b.d., ci numai memoreaz ordinea acestora.
14.1 SORTAREA BAZELOR DE DATE
Sortarea bayelor de date se realiyeay cu comanda SORT.
sintaxa:
SORT TO <fiier> ON <cmp>[/A|/D][/C]]
[,<cmp>[/A|/D][/C]]
[ASCENDING|DESCENDING]
[<domeniu>] [FOR<expL1>] [WHILE<expL2>]
[FIELDS <lista cmpuri>]
Comanda sorteaz b.d. activ creind o nou b.d. n care sunt depuse nregistrrile
selectate n ordinea specificat. Baza de date nou va conine cmpurile specificate la
clauza FIELDS, sau toate cmpurile, n cazul n care aceast clauz lipsete. Noua b.d. va
purta numele <fiier>, la care se adaug n mod implicit extensia .dbf (dac nu se
specific explicit alta).
Cheia de ordonare este dat de cmpurile <cmp1>, <cmp2>, specificate dup
clauza ON. Clauzele /A i /D sunt asociate cmpului dup care acestea urmeaz i
specific tipul de ordonare pentru cmpul respectiv: A cresctor i D descresctor.
Dac toate cmpurile din list sunt egale pentru cele dou nregistrri care se compar, se
pstreaz ordinea iniial din b.d.
Avnd deschise mai multe fiiere index simple sau compuse, pentru a selecta alt
fiier index activ sau alt etichet activ se folosete comanda SET ORDER.
sintaxa: SER ORDER TO
[<expN1> <fiier.idx> [TAG]<nume etichet>[OF<fiier.cdx>]
[IN<expN2>]
[ASCENDING DESCENDING]
Clauza IN se folosete atunci cnd comanda se folosete la alt b.d. dect cea
activ, aflat n zona de lucru <expN2>.
nchiderea fiierelor index se face folosind comanda CLOSE INDEX, care
nchide toate fiierele index deschise n zona de lucru curent, n afara celui structural
sau:
CLOSE ALL, USE, CLOSE DATABASES.
Exemplu:
USE agenda
INDEX ON nume TO agenda1 && creaz fiierul agenda1 fiierul index simplu cu
cheia de indexare nume.
Fiier index compus structurat cu cheile de indexare nume, prenume, numr de telefon
INDEX ON nume TAG nume
INDEX ON prenume TAG prenume
INDEX ON numr de telefon TAG numr de telefon
SET ORDER TO 3
&& stabilete indexul activ ca fiind prenumele
15. EXTRAGEREA INFORMAIILOR STATISTICE DIN BAZA DE DATE
S presupunem c avem b.d. agenda.dbf n care am stocat informaii referitoare la
persoanele cunoscute (nume, prenume, data naterii, sexul, numrul de telefon, adresa,
etc.). La 1 martie dorim s oferim mrioare tuturor fetelor cunoscute, aadar ne
intereseaz numrul de fete. Aceasta se poate rezolva simplu, cu ajutorul comenzii
COUNT.
sintaxa: COUNT [<domeniu>][FOR<expL1>][WHILE<expL2>][TO<variabil>]
Comanda numr nregistrrile din domeniul specificat prin <domeniu>, FOR i
WHILE (domeniul implicit fiind ALL) i depune rezultatul n variabila <variabil>, care
va fi creat n cazul n care nu exist.
Exemplu:
CLOSE ALL
USE agenda
COUNT FOR sex=.T. TO nrbiei
?N BAZA DE DATE AVEM, nrbiei, BAIETI
N BAZA DE DATE AVEM 3 BIEI
USE
Un alt tip de calcul ce se poate efectua asupra unei b.d. este sumarea unor cmpuri
numerice ale b.d. cu comanda SUM.
sintaxa: SUM[<lista expresii>]
[<domeniu>][FOR<expL1>][WHILE<expL2>]
[TO<lista variabile>]
<lista expresii> este format din expresii care conin cmpuri numerice ale b.d.
Valorile acestor expresii sunt sumate pentru toate nregistrrile selectate prin <domeniu>,
FOR i WHILE. Dac lista lipsete, se vor suma toate cmpurile numerice ale b.d.
Rezultatele obinute vor fi depuse n variabilele respective din <lista variabile>.
O comand asemntoare cu SUM este AVERAGE.
sintaxa: AVERAGE [<lista expresii>]
[<domeniu>][FOR<expL1>][WHILE<expL2>]
[TO<list variabile>]
AVERAGE calculeaz media aritmetic a valorilor expresiilor din <lista expresii>.