Foxpro
Cautarea inregistrarilor intr-o baza dedatePozitionarea intr-o baza de date se poate face si prin cautarea unui anumit articol care indeplineste o conditie. Sunt mai multe posibilitati de acces rapid la o baza de date ordonata (indexata) sau nu. Vom prezenta cateva comenzi si functii pentru baze neordonate. Comanda de cautare secventiala LOCATE: LOCATE FOR <COND> [<domeniu>] Se cauta primul articol care indeplineste conditia <cond> si, daca se gaseste indicatorul de inregistrare, se pozitioneaza pe articolul respectiv. Daca nu se gaseste nici un articol care sa verifice conditia, pointerul de fisier va indica sfarsitul fisierului sau domeniului indicat prin clauza <domeniu>. Functii de testare a succesului sau insuccesului cautarii cu LOCATE sunt: 1. FOUND () && intoarce .T. daca articolul a fost gasit 2. EOF () && intoarce .F. daca articolul a fost gasit Atentie! Nu se poate folosi functia EOF() daca <domeniu> este diferit de ALL. Comanda de continuare a cautarii urmatorului articol cu aceeasi cheie este. CONTINUE Comanda gaseste urmatoarea inregistrare care respecta conditia specifica in ultima comanda LOCATE aplicata asupra bazei de date-active. Functia de cautare si pozitionare LOOKUP: LOOKUP ( <camp1), <exp>, <camp2> [,<expc>]) Functia cauta intr-o baza de date prima aparitie a unei expresii date. In caz de reusita indicatorul de inregistrare se pozitioneaza pe inregistrarea cautata, functia returnand valoarea campului <camp1>. Daca articolul nu se gaseste, functia returneaza sirul vid; <camp2> este campul a carei valoare este cercetata, <exp> este expresia de cautat. Exemplu: sa se gaseasca primele doua mijloace fixein folosinta din baza de date mijloacef: CLOSE ALL USE mijloacef LOCATE FOR stare=.t. ? FOUND ( ) .T. ? EOF ( ) .F. ? RECNO ( ) 1 CONTINUE ? FOUND ( ) .T. ? EOF ( ) .F.
? RECNO ( ) 3 USE Exemplu: sa se afiseze numele primului mijloc fix nefolosit din baza de date mijloacef. CLOSE ALL USE mijloacef LIST ? LOOKUP ( denumire, .F. , stare ) ?REXNO ( ) ??denumire 3 Autocamion M100 USE Comanda de salt si pozitionare: GO [TO] <n>/TOP/BOTTOM Comanda GOTO <n> pozitioneaza pe articolul cu numarul <n> in baza de date activa. GO TOP – pe primul articol in baza de date activa, GO BOTTOM – pe ultimul articol in baza de date activa. Exemplu: USE mijloacef GOTO 2 && inregistrarea curenta va fi 2 ? RECNO ( ) 2 GO RECORD RECNO ( ) + 1 NOTE pozitionarea pe inregistrarea urmatoare ( inregistrarea curenta + 1 ) DISPLAY NEXT 1 GO TOP &&pozitionare pe inregistrarea 1 ? RECNO ( ) 1 GO BOTTOM && pozitionare pe ultima inregistrare ? RECNO ( ) 4 USE Urmatoarele instructiuni sunt echivalente ( pentru o baza de date neindexata ): GO 1 GOTO 1 GO RECORD 1 GO TOP GO TOPin SELECT Comanda de avans si pozitionare SKIP [+/-] <n> Comanda face avansul (+) sau devansul (-) in baza de date peste <n> articole. Observatie: Deschiderea unei baze de date se face cu pozitionarea pe primul articol. Exemplu: USE mijloacef ? RECNO ( ) 1 SKIP 2 DISPLAY RECORD RECNO ( ) SKIP –1 ?RECNO ( ) USE Urmatoarele instructiuni sunt echivalente ( pentru o baza de date neindexata ): SKIP SKIP 1 SKIPin SELECT ( ) GO TO RECORD RECNO ( ) + 1 Duplicarea unei baze de date Una din operatiile frecvent folosite in aplicatiile economice este copierea intregului continut al unei baze de date, sau o parte din el, in alt fisier. Cu aceasta ocazie se creeaza o noua baza de date care poate avea ca structura toate campurile din vechea baza de date, sau o parte din ele. Copierea (duplicarea) unei baze de date se poate realiza prin comanda: COPY TO <fis.dbf> [FIELDS <lista-camp>] [<domeniu>] [FOR <conditie>][WHILE <conditie>] Se vor copia articolele bazei de date active intr-o noua baza de date cu numele precizat in clauza TO <fis.dbf>. Clauza FIELDS enumera campurile care vor forma structura noii baze de date. Clauzele de selectie <domeniu>, FOR, WHILE permit preluarea partiala a articolelor. Daca exista un fisier baza de date cu numele dat in clauza TO, se cere acordul de suprascriere. Exemplu use mijloacef && obtinem exact aceleasi date in doua fisiere copy to manevra copy to manevra fields denumire for stare=.t. && se va crea o manevra cu mijloacele fixe existente
|