Baze de date
BAZE DE DATE (relationale)O baza de date contine mai multe tabele (tabele.dbf) tabel.dbf | cod nume adresa structura tabelei c1
ion c2 vasile c3 gheorghe camp1 camp2 camp3 Campul este cea mai mica unitate adresabila. Campul poate fi : - modificat - sters - inlocuit MOD DE LUCRU: - INTERACTIV (PRIN BROWSE) - PRIN COD (LIMBAJ VFOX) PRELUCRAREA INTERACTIVA: CREAREA unei tabele: -> click pe new -> nume -> structura campurilor -> introducerea inregistrarilor DESCHIDEREA tabelelor -> butonul open -> butonul radio 'exclusive' bifat permite orice modificari, altfel tabela se deschide readonly. Fereastra browse permite madoficarea inregistrarii curente. Inregistrarea curenta cea pe care se pozitioneaza la un momemt dat INDICATORUL DE INREGISTRARI. MENIUL TABLE apare doar cand avem o tabela deschisa (activa) si fereastra browse e activa. Comanda GO TO RECORD localizeaza o anumita inregistrare functie de o anumita conditie. INDECSI COMPUSIIn practica este nevoie sa indexam inregistrarile unui tabel dupa mai multe criterii -> index compus. Ca regula in cadrul indecsilor compusi trebuie sa amintim faptul ca toate campurile trebuie sa fie de acelasi tip -> functii de conversii. Totul se converteste in tipul caracter. exemplu: codcurs + str(nrmatr,5) Indexul trebuie creat inainte de accesare. Comanda de acesare a tabelei este : use tabel.dbf order codcurs + str(nrmatr,5) browse
trasformarea datei in caracter se face pentru index cu : dtos (01/01/2001) sau dtoc(data,1) DESCHIDEREA UNUI TABEL USE NUMETABEL FUNCTII EOF() - permite detectarea sfarsitului de tabel BOF() - permite detectarea inceputului de tabel FOUND() - constata daca cautarea unui articol a avut sau nu succes COMENZI care schimba pozitia contorului de inregistrari GO TO TOP / BOTTOM / <nr record> SKIP - sare la urmatoarea inregistrare LOCATE - cauta un articol care indeplineste conditia din dreapta lui FOr. Cautarea se opreste in momentul in care se gaseste primul articol care satisface acesta conditie: LOCATE FOR <conditie> <domeniu> WHILE <conditie> unde: <conditia> - conditia de cautare <domeniu> - domeniu de cautare - all (tot tabelul) - next n (de la pozitia cursorului la n inregistrari) - rest (de la pozitia cursorului la sfarsitul tabelei) Obs.: Daca LOCATE nu gaseste nici un articol care sa satisfaca conditia indicatorul de inregistrari va fi pe EOF. use reg_cat locate for nume='ionel' locate for codcurs='ajut' and nume='ion' locate for codcurs='prog' and nume='dan' locate for codcurs='ajut' locate for nume='dan' while codcurs='ajut' CONTINUE - executa in continuare cautarea dupa conditia precedentului LOCATE() SET EXACT OFF - localizeaza pe toti pe rand cursanti .dbf pope popescu pop popici ion popa popey ana SET EXACT OFF locate for nume='pop' display pope continue disp pop continue disp popey continue disp popescu Sa se scrie o secventa de program care intr-o fereastra sa introduca un nume din tabelul reg_cat, sa il caute si sa afiseze datele personale ale acestuia. MODI COMM CAUTARE CLEAR DEFI WIND A FROM 10,10 TO 50,50 ACTI WIND A USE REG_CAT ACCEPT 'Pe cine cauti ?' TO MNUNE LOCATE FOR NUME=MNUME IF FOUND() ?'Datele cursantului' ? repl('=',18) ? 'NUME SI PRENUME', NUME ? 'DATA NASTERII', DATAN FUNC 'E' ? 'COD CURS', CODCURS ? 'NOTA DOS:', ND PICT '99.99' ELSE ? 'NU EXISTA CURSANTUL CU NUMELE ',MNUME ENDIF WAIT WIND '' DEACTI WIND A CANCEL STRUCTURI REPETITIVE - permit repetarea pt. un numar finit de ori |-> conditie --> falsa (iese din bucla) | | | adevarata ------ comenzi DO WHILE <conditie> EXIT .. comenzi .. ENDDO De atatea ori se repeta comenzile cuprinse intre DO WHILE si ENDDO cat timp conditia este adevarata. In momentul cand conditia devine falsa programul continua cu prima comanda de dupa ENDDO. Exemplu: MODI COMM LISTA CLEAR USE REG_CAT ?'COD CURS' ??' NUME SI PRENUME' MEDIA' ?REPL ('=',40) DO WHILE NOT EOF() ?CODCURS ?? NUME AT 12 ?? (N1+N2+N3+N4+N5+N6+N7)/7 PICT '99.99' AT 32 SKIP ENDDO WAIT WIND CANCEL
|