Domeniul înregistrarilor
Clauzele de domeniu
Exista comenzi care actioneaza asupra mai multor înregistrari ale unei b.d. Selectarea acestora se face specificând în comanda conditia de selectare. Multimea înregistrarilor care respecta conditia formeaza domeniul înregistrarilor la care se refera comanda respectiva. Domeniul înregistrarilor se specifica prin clauzele <domeniu>, for si while incluse optional în comanda.
Clauza <domeniu> se va înlocui cu una din u 757c22h rmatoarele constructii:
ALL selecteaza toate înregistrarile din b.d.
NEXT <exp N> se refera la urmatoarele <exp N> înregistrari, începând de la înregistrarea curenta, inclusiv;
RECORD <exp N> actioneaza numai asupra înregistrarii cu numarul <exp N>;
REST selecteaza înregistrarile începând de la cea curenta, inclusiv, si pâna la sfârsitul b.d.
Clauza FOR :
sintaxa : FOR <exp L>
se foloseste pentru selectarea înregistrarilor în functie de o conditie logica <exp L>. Se selecteaza acele înregistrari pentru care <exp L> este adevarata.
Clauza WHILE :
sintaxa : while <exp L>
selecteaza înregistrarile în functie de conditia logica <exp L>. Se selecteaza acele înregistrari pentru care <exp L> este adevarata. Spre deosebire de clauza FOR care dupa gasirea unei înregistrari care nu respecta conditia, continua cu testarea celorlalte, clauza WHILE întrerupe testarea înregistrarilor când gaseste o înregistrare ce nu respecta conditia data.
Daca se folosesc ambele clauze FOR si WHILE, prima care conteaza este clauza WHILE.
n expresia logica din clauza FOR si WHILE, trebuie sa apara o marime care sa varieze în functie de înregistrare. Aceasta trebuie sa depinda fie de numarul de înregistrare, fie de continutul acesteia.
exercitiu : Sa se afiseze toate înregistrarile al caror nume începe cu o litera de dupa litera P.
6.2 Indicatorul de Înregistrari
Indicatorul de înregistrari este asociat unei b.d. la deschidere si este sters la închiderea b.d. La deschiderea b.d. indicatorul de înregistrari va indica spre prima înregistrare, spre înregistrarea 1, daca ea exista.
Aflarea înregistrarii curente dintr-o b.d. (deci a continutului indicatorului de înregistrari) se face folosind functia recno().
sintaxa : recno( [<exp N>] )
Functia returneaza un rezultat numeric reprezentând numarul înregistrarii curente din b.d. deschisa în zona de lucru <exp N>. Daca <exp N> lipseste atunci functia se refera la b.d. activa.
ex.
use agenda
? recno ( )
list next 2
? recno( )
Schimbarea înregistrarii curente se realizeaza cu ajutorul comenzilor goto, skip.
Comanda go sau goto pozitioneaza indicatorul de înregistrari pe o anumita înregistrare, dintr-o b.d. (go si goto sunt identice).
sintaxa : go | goto [record] <expN1> [ in <expN2>]
go | goto top | bottom [in <expN2>]
Prima forma are ca efect pozitionarea indicatorului de înregistrari din b.d. sau din zona de lucru <expN2>, pe înregistrarea cu numarul <expN1>. Absenta clauzei in determina referirea la b.d. activa.
Clauza record este optionala, prezenta ei neavând nici un efect; ea se introduce pentru claritatea programului.
Forma a doua a comenzii se foloseste pentru pozitionarea indicatorului de înregistrari la extremele b.d.(la începutul sau la sfârsitul acesteia ).
Clauza top se foloseste pentru pozitionarea pe prima înregistrare, pe când bottom determina pozitionarea pe ultima înregistrare a b.d.
Urmatoarele comenzi sunt echivalente:
go
goto 1
go record 1
go top
goto top in selected( )
Un alt tip de deplasare cu indicatorul de înregistrari este realizat cu ajutorul comenzii skip. Aceasta muta indicatorul de înregistrari peste un numar de înregistrari relativ la înregistrarea curenta.
sintaxa : skip [ <expN1>| | <expN2> ]
unde <expN1> reprezinta numarul de înregistrari peste care se sare (cu indicatorul de înregistrari ). Acesta poate fi atât un numar pozitiv (se sare spre o înregistrare cu un numar de înregistrare mai mare), cât si negativ(se sare spre o înregistrare anterioara celei curente).
<expN2> specifica zona de lucru în care este deschisa b.d.
Daca se sare peste ultima înregistrare a b.d., indicatorul de înregistrari va contine numarul de înregistrari din b.d.+1, iar functia eof() va returna valoarea .T. ; în cazul saltului înaintea primei înregistrari, functia bof() va returna valoarea .T.
Urmatoarele comenzi sunt echivalente :
skip
skip
skip in select()
goto record recno()+1
Functiile eof() si bof()
sintaxa : eof( [<exp N>] )
bof( [<exp N>] )
testeaza daca indicatorul de înregistrari se afla la sfârsitul , respectiv la începutul b.d. active sau a celei specificate ca parametru.
Numarul de înregistrari dintr-o b.d. este dat de functia reccount()
sintaxa : reccount( [<exp N>] )
ex.:
use agenda
? recno( )
skip 3
? recno( )
go top
? recno( )
skip -2
? bof( )
.T.
|