Sunteți pe pagina 1din 21

D

EM

L O EC N } ST I R E AT IV

INTRODUCERE
Sporirea complexit\]ii [i diversit\]ii activit\]ii economice [i sociale a generat n timp nevoia unor date din ce n ce mai elaborate [i precise. Ob]inerea acestora a fost posibil\ datorit\ evolu]iei spectaculoase a sistemelor electronice de calcul, care au permis cre[terea volumului de date culese, transmise, prelucrate [i stocate. Cursul Ini]iere `n programare elaborat de Institutul Eurocor v\ propune familiarizarea cu unul dintre cele mai folosite sisteme de gestiune a bazelor de date, [i anume Visual FoxPro. Cursul se adreseaz\ tuturor celor interesa]i s\ se ini]ieze n lucrul cu bazele de date, precum [i celor care doresc s\-[i mbog\]easc\ cuno[tin]ele pe care le au n acest domeniu. n dezvoltarea materialului am insistat n permanen]\ asupra aspectelor practice, ns\ nu am pierdut din vedere nici fundamentarea teoretic\ a ceea ce nseamn\ un sistem de gestiune a bazelor de date. Consider\m, totu[i, c\ este necesar\ familiarizarea cu anumite elemente teoretice de baz\; dac\ un utilizator sare peste aspectele teoretice [i trece direct la folosirea unui sistem, el va asimila mult mai greu produsul, multe no]iuni le va aborda incorect sau nu le va n]elege deloc. Fiecare facilitate oferit\ de un astfel de sistem are o fundamentare teoretic\ ce ajut\ utilizatorul s\ n]eleag\ logic ceea ce face. Cursul pleac\ de la ideea c\ sistemul de gestiune a bazei de date este parte integrant\, al\turi de baza de date, a unui sistem de baz\ de date. Din acest motiv, se va face mai nti o trecere n revist\ a principalelor elemente din teoria bazelor de date. n modulele urm\toare vom continua cu descrierea sistemului Visual FoxPro [i a particularit\]ilor acestuia, vom vorbi despre exploatarea [i construirea bazelor de date folosind acest sistem, despre principalele comenzi [i func]ii specifice Visual FoxPro. n ultima parte a cursului, accentul se va pune pe construirea [i executarea programelor [i, n special, pe programarea orientat\ pe obiecte. Elaborarea rapoartelor [i interogarea bazelor de date ncheie prezentarea gradual\ a materialului. Materialul cursului a fost astfel conceput `nct s\ permit\ `nsu[irea optim\ a informa]iilor prezentate. Efectuarea de la bun nceput a exerci]iilor recomandate v\ va u[ura n mod vizibil deprinderea [i consolidarea noilor cuno[tin]e. Accesibilitatea modului de prezentare a materialului [i exemplele care apar `n modulele de studiu asigur\ nsu[irea f\r\ probleme a con]inutului, chiar [i de c\tre persoanele neini]iate nc\ n domeniul program\rii. Lec]ia de fa]\ constituie o lec]ie demostrativ\, care dore[te s\ v\ familiarizeze cu metoda de studiu EUROCOR. Din punctul de vedere al num\rului de pagini, ea reprezint\ mai pu]in de jum\tate din con]inutul unui caiet de studiu. Ve]i g\si aici fragmente din caietele de curs, exemple, exerci]ii, precum [i un model de rezumat [i de tem\ pentru acas\. V\ dorim mult succes!

lec]ie demonstrativ\

Ini]iere `n programare

Modul de organizare a cursului Ini]iere n programare Visual FoxPro


Materialul cursului se compune din 12 module, prezentate sub forma unor fascicule, care vor fi ndosariate ntr-o map\ special\, pe care EUROCOR v-o pune la dispozi]ie. Dorim s\ v\ atragem aten]ia asupra modalit\]ii speciale de concepere [i prezentare a lec]iilor, ce v\ va permite parcurgerea cu mai mult\ u[urin]\ a materialului de curs: fiecare modul are o anumit\ structur\ didactic\, p\strat\ pe ntreg parcursul acestui curs; un element important n cadrul acestei structuri l reprezint\ exemplele [i exerci]iile practice, cu ajutorul c\rora v\ ve]i putea valorifica n mod curent cuno[tin]ele dobndite; `n plus, pentru a v\ consolida cuno[tin]ele, la sfr[itul fiec\rui modul ve]i g\si o recapitulare, care prezint\ cele mai importante aspecte analizate `n cadrul acestuia; fiecare modul se ncheie cu o tem\ pentru acas\, ce constituie o modalitate eficient\ de verificare a gradului de nsu[ire a cuno[tin]elor prezentate; indica]iile referitoare la rezolvarea temelor pentru acas\ [i la colaborarea cu profesorul dumneavoastr\ sunt prezentate la sfr[itul modulului; folosim reprezent\ri grafice pentru nlesnirea nsu[irii cuno[tin]elor (de exemplu, pentru eviden]ierea no]iunilor importante se folosesc litere `ngro[ate). Fiecare student EUROCOR are un profesor personal. Temele propuse n fiecare modul vor fi expediate pe adresa Institutului EUROCOR, urmnd ca profesorul personal s\ aprecieze corectitudinea r\spunsurilor [i s\ v\ transmit\ comentariile sale pe marginea acestora. V\ recomand\m s\ rezolva]i tema doar dup\ parcurgerea integral\ [i atent\ a materialului prezentat. Pentru ca studiul dumneavoastr\ individual s\ fie ct mai u[or [i eficient, pe marginea lec]iilor au fost introduse diferite simboluri:

i e

semnaleaz\ no]iunile, defini]iile [i informa]iile importante

semnaleaz\ exerci]iile pe care trebuie s\ le rezolva]i

Exemplu exemplele vor fi `ncadrate `ntr-un chenar special

3 (18)

indic\ faptul c\ tema respectiv\ a mai fost abordat\ n modulele anterioare (n acest caz, tema a mai fost abordat\ n modulul 3, la pagina 18).

Ini]iere `n programare

lec]ie demonstrativ\

Programa cursului de Ini]iere n programare Visual FoxPro


MODULUL 1 Baze de date. Elemente introductive Conceptul de baze de date. Tipuri de baze de date. Obiectivele bazelor de date. Organizarea datelor n baze de date. Modele de organizare a datelor. Etape de realizare a unei baze de date. Administrarea bazelor de date. Sisteme de gestiune a bazelor de date. Re]ele de calculatoare. Re]ele [i arhitectura client/server. Avantajele program\rii Sistemul de gestiune a bazelor de date rela]ionale Visual FoxPro Descrierea mediului Visual FoxPro. Caracteristici generale. Structura func]ional\ a sistemului Visual Fox Pro. Instalarea [i configurarea Visual FoxPro. Elementele interfe]ei Visual FoxPro. Componentele unei baze de date rela]ionale. Construirea bazelor de date elemente introductive Exploatarea bazelor de date Prelucrarea interactiv\ a datelor din bazele de date. Editarea con]inutului bazelor de date. Opera]ii uzuale. Comenzi Visual FoxPro pentru prelucrarea interactiv\ a datelor. Comenzi pentru structura tabelelor. Comenzi pentru modificarea datelor din tabele. C\utarea datelor n tabele. Sortarea [i ordonarea datelor Construirea bazelor de date Crearea unei baze de date. Facilit\]i ale bazelor de date. Proceduri. Importul [i exportul datelor. Tipuri de date gestionate n Visual FoxPro. Tipul logic. Tipul numeric. Tipul [ir de caractere. Sub[iruri de caractere. Tipul dat\ calendaristic\ Func]ii [i proceduri definite de utilizatori Variabile. Crearea programelor n Visual FoxPro. Modularizarea aplica]iilor. Variabile locale [i variabile globale. Comenzi pentru manipularea fi[ierelor. Comenzi pentru stabilirea mediului de lucru. Calcule cu cmpurile unei tabele Alte facilit\]i ale bazelor de date Cmpurile memo. Legare [i ncorporare de obiecte. Lucrul cu bazele de date. Indec[i. Construirea integrit\]ii referen]iale. Integritatea rela]ional\ Elemente de programare structurat\ No]iunea de algoritm. Modalit\]i de reprezentare a algoritmilor. Programarea structurat\. Principalele structuri utilizate n schemele logice

MODULUL 2

MODULUL 3

MODULUL 4

MODULUL 5

MODULUL 6

MODULUL 7

lec]ie demonstrativ\

Ini]iere `n programare

MODULUL 8

Programarea orientat\ pe obiecte (POO) Aspecte generale. Obiecte [i clase. Caracteristicile modelului orientat pe obiecte. ncapsularea [i mo[tenirea. Terminologia modelului bazat pe obiecte. Propriet\]i, evenimente [i metode. Domeniul variabilelor. Limbajul n programarea orientat\ pe obiecte. Clasele de baz\ Programarea bazat\ pe evenimente Crearea claselor. Crearea subclaselor. Instan]ierea. Bibliotecile de clase. nregistrarea bibliotecilor de clase vizuale. Instrumente de creare a claselor. Crearea unei forme noi. Propriet\]i [i metode ale formelor n ansamblu

MODULUL 9

MODULUL 10 Utilizarea controalelor Meniul Form. Controalele grup de butoane de op]iuni (Option Buttons). Controalele grup de butoane de comand\ (Option Groups). Grilele (Grid). Controalele Page Frame. Controlul Timer (cronometru). Utilizarea controalelor. Meniurile. Componentele unui meniu. Construirea unui meniu. Propriet\]ile globale ale meniului MODULUL 11 Rapoarte. Depanarea programelor Modul de creare a unui raport. Sec]iunile raportului. Tipuri de elemente incluse n raport. Afi[area [i tip\rirea rapoartelor. Constructorul de etichete. Depanarea programelor. Modul de lucru cu depanatorul din Visual FoxPro. Instrumente de depanare. Tratarea erorilor MODULUL 12 Project Manager Fereastra Project Manager. Interogarea (Query Designer). Vederi. View Designer. Vederile locale [i la distan]\. Tehnologia client/server

Ini]iere `n programare

lec]ie demonstrativ\

Fiecare caiet de curs `ncepe cu o scurt\ introducere care are rolul de a v\ prezenta succint informa]iile ce urmeaz\ a fi expuse. Pentru `nceput, v\ prezent\m introducerea modului 2, `n care sunt prezentate no]iuni generale privind sistemul de gestiune a bazelor de date rela]ionale Visual FoxPro

Sistemul de gestiune a bazelor de date rela]ionale Visual FoxPro


Introducere
Proiectarea unei baze de date [i scrierea programelor de prelucrare [i gestiune a datelor reprezint\ o activitate laborioas\, care necesit\ mult\ creativitate. ~n primul rnd, trebuie identificate toate elementele care vor compune noul sistem. Un prim pas este reprezentat de g\sirea unei modalit\]i de transpunere a informa]iilor din lumea real\ `n elemente cuantificabile, apoi trebuie proiectat\ o structur\ unificat\, corespunz\toare naturii informa]iilor, dup\ care trebuie construit\, pentru utilizator, o modalitate de a interac]iona cu datele. Proiectarea corect\ a bazei de date conduce la g\sirea unor solu]ii simple de programare [i de reducere a timpilor de scriere a unei aplica]ii. ~n plus, dezvoltarea se face cu u[urin]\ [i chiar cu pl\cere, iar efectele acestei abord\ri nu vor `ntrzia s\ apar\. ~n caz contrar, apar cu siguran]\ blocaje, imposibilitatea de a scrie o component\ dup\ modelul ales [i aceasta duce inevitabil la refacerea unei p\r]i sau uneori chiar la rescrierea total\. ~n general, efortul ini]ial de creare a unei baze de date este mai mare dect cel necesar pentru realizarea unei foi de calcul tabelar sau a unui document. Dar foile de calcul nu au posibilit\]i rela]ionale, de aici rezultnd [i caracterul restrictiv al acestora. Eforturile dumneavoastr\ vor fi recompensate `n momentul `n care ve]i dori s\ extrage]i informa]iile. Baza de date v\ permite s\ localiza]i rapid un element, s\ face]i compara]ii [i s\ ob]ine]i cu u[urin]\ rapoarte complexe. Visual FoxPro este un sistem de baze de date rela]ional care simplific\ administrarea datelor, v\ ajut\ s\ organiza]i datele [i s\ crea]i aplica]ii care gestioneaz\ datele. Visual FoxPro v\ permite s\ crea]i aplica]ii complexe, oferindu-v\ un mediu de dezvoltare cu instrumente puternice de programare orientat\ pe obiecte, cu posibilit\]i de integrare cu alte aplica]ii [i capacit\]i client/server. ~ncepnd cu acest modul vom trece la prezentarea sistemului Visual FoxPro 6.0. Avnd `n vedere faptul c\ sistemul este foarte vast, vom `ncerca s\ parcurgem [i s\ definim ct mai multe dintre posibilit\]ile acestuia, dndu-v\ `n acest fel impulsul necesar pentru realizarea propriilor proiecte. Nu vom insista foarte mult asupra interfe]ei mediului Visual FoxPro, ci ne vom concentra asupra aspectelor legate de utilizare [i ne vom apropia de ceea ce ne intereseaz\ `n mod special, [i anume programarea.

Caracteristici generale
FoxPro este un sistem de gestiune a bazelor de date rela]ionale pentru microcalculatoare compatibile IBM-PC. Produsele elaborate dup\ modelul conceptual rela]ional au nceput cu dBASE n versiunile II, III, III+, IV, apar]innd ini]ial firmei Ashton Tate, devenind mai trziu ale firmei Borland. Au continuat cu Fox n diferite versiuni concepute de c\tre firma Fox Software, ulterior achizi]ionate de cea mai mare firm\ din domeniul software-ului, Microsoft.

lec]ie demonstrativ\

Ini]iere `n programare

FoxPro s-a impus pe pia]a SGBD-urilor pe PC-uri nc\ de la primele versiuni 1.02 [i 2.0. Cump\rarea [i dezvoltarea lui de c\tre firma Microsoft a condus la apari]ia versiunilor 2.5 [i 2.6, care au plasat produsul spre vrful ierarhiei n acest domeniu. ~n versiunile 2.5 [i 2.6, FoxPro a fost conceput pentru a lucra fie sub DOS sau UNIX (n modul de lucru caracter), fie sub Windows sau Macintosh (n modul de lucru grafic). Din concuren]a firmelor de software Borland (cu produsele dBASE [i Paradox), Nantucket (cu produsul Clipper) [i Microsoft (cu produsul FoxPro), s-a ajuns la versiunea FoxPro, care ofer\ posibilitatea transferului de elemente (ecrane, rapoarte, proiecte) ntre versiunile FoxPro care lucreaz\ sub diferite sisteme de operare. n domeniul limbajelor de programare, principalele rivale sunt firmele Microsoft [i Borland. Referindu-ne la SGBD-uri, politica firmei Microsoft de a dezvolta produsul FoxPro pe baza dBASE-ului a avut drept scop atragerea utilizatorilor care proiecteaz\ aplica]ii de baze de date. Prin ultimele versiuni, FoxPro este considerat cel mai performant din familia amintit\, datorit\ urm\toarelor caracteristici principale: dispune de tehnici de optimizare, dintre care cea mai important\ este tehnica Rushmore, prin care se realizeaz\ compresarea indec[ilor, efectul fiind reducerea dimensiunii fi[ierelor index cu pn\ la 80%; prin noile tehnologii de acces la date, tehnologia Rushmore a dus la cre[terea cu mult a vitezei de prelucrare fa]\ de alte SGBD-uri; dispune de un limbaj procedural propriu foarte performant, care asigur\ descrierea [i manipularea datelor, precum [i de un nucleu al limbajului neprocedural SQL (Structured Query Language); aceste limbaje se adreseaz\ profesioni[tilor, asigurnd utilizarea [i dezvoltarea de programe de mare complexitate; pentru a se adresa unei game ct mai largi de utilizatori, sistemul Visual FoxPro are componente ce pot fi apelabile att de la tastatur\, ct [i cu ajutorul mouse-ului; poate importa fi[iere din Excel, Lotus, Paradox, Symphony, Multiplan, RapidFile, ASCII; poate exporta fi[iere n Excel, Lotus, ASCII, Symphony, Multiplan, RapidFile etc.; dezvolt\ programe structurate de cel mai nalt nivel (utiliznd comenzile pentru realizarea structurilor secven]iale, alternative [i repetitive) [i modularizate (prin scrierea programelor sub form\ de proceduri); n func]ie de cerin]e, poate fi instalat n ntregime sau pot fi instalate numai modulele necesare aplica]iei; poate fi utilizat pe sta]ii de lucru individuale sau n re]ea, avnd ca avantaj cre[terea eficien]ei de utilizare a resurselor sistemului; ultimele versiuni dispun de un mecanism evoluat de conversie a programelor [i a aplica]iilor scrise n versiunile anterioare de FoxPro.

Ini]iere `n programare

lec]ie demonstrativ\

Pentru a v\ facilita re]inerea defini]iilor [i a exemplelor, acestea au fost marcate prin semne grafice. Acest tip de eviden]iere se reg\se[te pe parcursul `ntregului curs [i pentru exemplificare v\ prezent\m cteva fragmente din modulul 3.

Opera]ii uzuale pentru ad\ugarea datelor n tabele


Comanda APPEND
nc\rcarea cu date a tabelei se poate face imediat dup\ crearea structurii dac\ la mesajul Input data record now? Y/N se r\spunde cu Y. De asemenea, ulterior se pot ad\uga nregistr\ri n tabel\ cu ajutorul comanzii APPEND. Dac\ tabela r\mne vid\ dup\ descrierea structurii, cu APPEND se demareaz\ nc\rcarea acesteia. Sintaxa comenzii: APPEND [BLANK] Adaug\ o nregistrare n tabel\ prin deschiderea unei ferestre implicite de introducere. Ie[irea din fereastra de introducere se realizeaz\ cu CTRL+W sau CTRL+END. Tasta PgUp permite deplasarea la nregistr\rile anterioare, iar tasta PgDn deplaseaz\ cursorul pe nregistr\rile urm\toare. Dac\ deplasarea s-a f\cut dincolo de ultima nregistrare se declan[eaz\ modul de lucru APPEND. Comanda APPEND cu op]iunea BLANK adaug\ o nregistrare vid\ la sfr[itul tabelei f\r\ a activa modul de lucru ecran. Aceast\ nregistrare devine nregistrare curent\ [i poate fi completat\ cu alte comenzi Visual FoxPro. La execu]ia comenzii APPEND se actualizeaz\ fi[ierele indexate activate. Exemplu Pentru ad\ugarea de nregistr\ri utiliznd fereastra de introducere implicit\: USE Personal APPEND Exemplu Pentru a ad\uga o nregistrare vid\ f\r\ a deschide fereastra de introducere implicit\: USE Personal APPEND BLANK

i i

~nc\rcarea nregistr\rii vide se realizeaz\ [i cu alte comenzi de actualizare (BROWSE, CHANGE, REPLACE).

Dac\ tabela nu este activat\ [i se tasteaz\ comanda APPEND, se deschide o fereastr\ pentru selectarea tabelei.

lec]ie demonstrativ\

Ini]iere `n programare

Comenzile FIND [i SEEK Caut\ direct ntr-o tabel\ indexat\ prima nregistrare cu cheia specificat\. Comanda FIND Sintaxa comenzii: FIND ExprCheie ExprCheie poate fi un num\r sau un [ir de caractere. FIND utilizeaz\ un index fie sub forma unui fi[ier index simplu (.IDX), fie sub forma unui fi[ier index compus (.CDX). Indexul utilizat este numit index principal [i poate fi activat cu clauza INDEX din comanda USE, cu SET INDEX sau cu SET ORDER.

Este de remarcat faptul c\ FIND caut\ un [ir de caractere specificat [i nu con]inutul unei variabile. De exemplu, dac\ avem variabila: obiect=scaun birou comanda: FIND obiect nu va c\uta dup\ [irul scaun birou, ci chiar dup\ [irul obiect.

Pentru a c\uta con]inutul unei variabile se utilizeaz\ operatorul &, care realizeaz\ func]ia de macrosubstitu]ie. n acest caz, comanda opereaz\ asupra con]inutului variabilei referit\ prin numele ei [i nu dup\ numele variabilei. n aceast\ situa]ie, comanda se va scrie astfel: FIND &obiect Comanda SEEK Caut\ ntr-o tabel\ indexat\ prima nregistrare a c\rei cheie rezult\ din evaluarea unei expresii. Sintaxa comenzii: SEEK expresie expresie trebuie s\ fie de acela[i tip cu tipul cmpului din structura nregistr\rii.

Comanda FIND se recomand\ atunci cnd se lucreaz\ n fereastra de comand\, iar SEEK este preferabil\ n programe.

La executarea comenzii SEEK, pentru reg\sirea cheii n fi[ierul index, se pot returna rezultate false datorit\ faptului c\ este diferen]\ ntre literele mari [i cele mici. n acest caz, este bine s\ se utilizeze func]iile UPPER( ) de transformare a literelor mici n litere mari [i LOWER( ) de transformare a literelor mari n litere mici.

Ini]iere `n programare

lec]ie demonstrativ\

Tabelele au rolul de a completa `ntr-un mod adecvat informa]iile prezentate. Din modulele 4 [i 6, am selectat cteva fragmente pentru exemplificare.

Tipul numeric
O mare parte a datelor prelucrate de calculator este reprezentat\ de numere, pentru a c\ror descriere se folose[te tipul numeric. Cu toate c\ limbajul Visual FoxPro este un limbaj orientat pe lucrul cu baze de date [i nu unul orientat pe calcule matematice, [tiin]ifice, tipul numeric este implementat astfel nct s\ permit\ realizarea majorit\]ii opera]iilor matematice ntlnite n practic\. De asemenea, sunt prev\zute o serie de func]ii prin care se pot calcula func]iile matematice elementare, cum ar fi exponen]iala, logaritmul, func]iile trigonometrice etc., putndu-se astfel realiza calcule matematice mai complexe cu efort minim. Operanzii numerici care intervin n expresii pot fi: cmpuri numerice ale unei baze de date; func]ii care returneaz\ valori numerice; variabile de tip numeric; constante numerice. Operatorii care se aplic\ unor operanzi numerici, avnd ca rezultate tot valori numerice, sunt sintetiza]i n tabelul urm\tor:
Operator (,) **, ^ *, /, % +, Semnifica]ie grupeaz\ expresiile ridicare la putere nmul]ire, mp\r]ire, modulo (restul mp\r]irii) adunare, sc\dere

Prioritatea operatorilor din acest tabel scade de sus n jos, iar pe acela[i nivel de prioritate evaluarea se face de la stnga la dreapta, n ordinea apari]iei operatorilor n expresie. ntre dou\ expresii numerice se pot aplica, de asemenea, operatori rela]ionali, ob]inndu-se astfel expresii logice. Ace[ti operatori sunt prezenta]i n tabelul urm\tor:
Op er a t or < > = == <>, #, != <= >= Sem n ifica ] ie mai mic dect mai mare dect egal cu egalitate pentru [iruri diferit de mai mic sau egal cu mai mare sau egal cu

10

lec]ie demonstrativ\

Ini]iere `n programare

nchiderea unei baze de date


Pute]i nchide o baz\ de date cu ajutorul comenzii CLOSE DATABASE. Principalele comenzi pentru manipularea bazelor de date container sunt:
Comanda/Func]ia CREATE DATABASE OPEN DATABASE SET DATABASE TO MODIFY DATABASE MODIFY PROCEDURE A PPE N D PR O C E D U R E S C O PY PR O C E D U R E S COMPILE DATABASE LIST/DISPLAY PR O C E D U R E S PACK DATABASE VALIDATE DATABASE DBC() DBUSED() ADATABASES() ADBOBJECTS() DBGETPROP() DBSETPROP() CLOSE DATABASE DELETE DATABASE Ac]iunea Creeaz\ o nou\ baz\ de date container Deschide o baz\ de date container existent\ Aduce n zona curent\ de lucru o baz\ de date deschis\ Deschide Database Designer pentru a modifica o baz\ de date Creeaz\/modific\ proceduri stocate n baza de date curent\ Adaug\ proceduri stocate dintr-un fi[ier extern Copiaz\ procedurile stocate ntr-un fi[ier extern Compileaz\ procedurile stocate din baza de date curent\ Afi[eaz\ informa]ii despre procedurile stocate n baza de date curent\ {terge definitiv nregistr\rile marcate pentru [tergere n baza de date curent\ Verific\ validitatea bazei de date [i, op]ional, o recupereaz\ dac\ este deteriorat\ Returneaz\ numele [i calea c\tre baza de date curent\ Verific\ dac\ o anumit\ baz\ de date este deschis\ Creeaz\ un vector cu toate bazele de date deschise Creeaz\ un vector cu toate obiectele din baza de date curent\ Ob]ine o proprietate a unei baze de date Seteaz\ o proprietate a bazei de date nchide baza de date curent\, toate tabelele sale [i toate tabelele libere {terge baza de date de pe disc [i, op]ional, [terge sau elibereaz\ tabelele sale

LIST/DISPLAY DATABASE Afi[eaz\ informa]ii despre baza de date curent\

Lucrul cu tabelele din bazele de date


O tabel\ Visual FoxPro (fi[ier .dbf) poate exista n unul dintre cele dou\ moduri: ca tabel\ asociat\ unei baze de date sau ca tabel\ liber\. Tabelele sunt libere dac\ sunt create f\r\ a fi incluse ntr-o baz\ de date, altfel sunt ad\ugate automat n baza de date (dac\ nu este folosit\ clauza FREE). Tabelele asociate cu o baz\ de date au mai multe avantaje fa]\ de cele libere. Cnd tabela este o parte component\ a unui fi[ier baz\ de date, ea poate avea: nume lungi pentru tabel\ [i pentru fiecare cmp din structur\; comentarii pentru fiecare cmp; valori implicite, m\[ti [i formate de introducere pentru fiecare cmp; reguli la nivel de cmp [i la nivel de nregistrare; indec[i primari [i rela]ii ntre tabele pentru a impune integritatea referen]ial\; declan[atori pentru evenimentele de inserare, actualizare [i [tergere.

Ini]iere `n programare

lec]ie demonstrativ\

11

Fiecare lec]ie a acestui curs con]ine o serie de exemple [i exerci]ii bazate pe informa]iile expuse pe parcursul acesteia. }innd cont de importan]a `nsu[irii [i consolid\rii cuno[tin]elor, al\turi de fiecare exerci]iu ve]i intlni exemple asem\n\toare. V\ prezent\m `n continuare astfel de fragmente din modulele 7 [i 8. Structura repetitiv\ condi]ionat\ anterior Structura este implementat\ prin comanda DO WHILE... ENDDO cu urm\toarea sintax\: DO WHILE <expL> <comenzi> [LOOP] [EXIT] ENDDO Se evalueaz\ expresia logic\ <expL> [i, dac\ este adev\rat\, se execut\ setul de comenzi ce urmeaz\ pn\ la ENDDO. Fiecare DO WHILE trebuie s\ se ncheie cu ENDDO. Dac\ <expL> devine fals\, ciclul este nchis [i pointerul de control se pozi]ioneaz\ la urm\toarea comand\ ce urmeaz\ dupa ENDDO. Clauza LOOP va determina reluarea execut\rii comenzii DO WHILE. Dac\ este specificat\ clauza EXIT, aceasta returneaz\ controlul programului la urm\toarea comand\ ce urmeaz\ lui ENDDO. Aceasta reprezint\ o ie[ire for]at\ din structura repetitiv\. EXIT poate ap\rea oriunde n ciclul DO WHILE ENDDO. Exemplu a=1 DO WHILE a<=100 IF a>50 a=a+2 ELSE a=a+1 ENDIF ENDDO ?a Sunt permise structuri DO WHILE imbricate n modul urm\tor: DO WHILE <condi]ie1> <comenzi> DO WHILE <condi]ie2> <comenzi> ENDDO <comenzi> ENDDO Exerci]iul 2 Scrie]i o bucl\ DO WHILE pentru parcurgerea de la sfr[it la nceput a unei tabele.

12

lec]ie demonstrativ\

Ini]iere `n programare

READ EVENTS [i CLEAR EVENTS Comanda READ EVENTS porne[te procesorul de evenimente n timpul rul\rii unui program. Toate instruc]iunile care urmeaz\ dup\ comanda READ EVENTS nu vor fi rulate pn\ cnd comanda READ EVENTS nu este dezactivat\. Comanda CLEAR EVENTS opre[te procesorul de evenimente. Dup\ ce CLEAR EVENTS a fost executat\, controlul n program este returnat la prima linie dup\ READ EVENTS. Exemplu Exemplul urm\tor este un program foarte simplu, care arat\ cum se define[te o clas\, cum se creeaz\ un obiect cu func]ia CREATEOBJECT() [i cum se utilizeaz\ READ EVENTS [i CLEAR EVENTS.
Forma1=CREATEOBJECT(FormaTest) && se creeaza obiectul WITH Forma1 .Caption=Aceasta este Forma1 .AutoCenter=.T. ENDWITH Forma1.SHOW READ EVENTS && se porneste procesorul de evenimente RETURN * definitia clasei DEFINE CLASS FormaTest AS Form ADD OBJECT Buton1 AS CommandButton WITH ; Caption = 'Iesire', ; Left = 6, ; Top = 2, ; AutoSize = .T. PROCEDURE Buton1.Click =MessageBox(Gata, 16, READ EVENTS) RELEASE THISFORM && se inchide forma CLEAR EVENTS && se opreste procesorul de evenimente ENDPROC ENDDEFINE

Fig. 5. Forma creat\ [i mesajul care apare cnd se d\ clic pe butonul Iesire. Dup\ ce se d\ clic [i pe butonul OK, forma va fi nchis\.

Ini]iere `n programare

lec]ie demonstrativ\

13

Exerci]iul 1 Crea]i un fi[ier program [i introduce]i exemplul de mai sus exact a[a cum este scris. Executa]i apoi programul. Exemplu Exemplul urm\tor utilizeaz\ metoda AddObject() pentru a transmite doi parametri la evenimentul Init al butonului de comand\ Buton1. Forma1=CREATEOBJECT(FormaTest) Forma1.SHOW READ EVENTS DEFINE CLASS FormaTest AS Form * Proprietatile formei AutoCenter = .T. PROCEDURE Init ThisForm.AddObject(Buton1,Buton,Placinte,; Clatite) WITH ThisForm.Buton1 .Caption = Cancel .Top = 25 .Autosize = .T. .Left = 30 .Visible = .T. ENDWITH ENDPROC ENDDEFINE DEFINE CLASS Buton AS CommandButton PROCEDURE Init PARAMETERS X,Y =MessageBox(x+ si +y, 32, AddObject) ENDPROC PROCEDURE Click RELEASE THISFORM CLEAR EVENTS ENDPROC ENDDEFINE

Exerci]iul 2 n exemplul de mai sus ncerca]i s\ modifica]i procedura Init, astfel nct s\ transmite]i 3 parametri. Vizualiza]i [i acest al treilea parametru mpreun\ cu ceilal]i doi.

14

lec]ie demonstrativ\

Ini]iere `n programare

Accesibilitatea cursului este asigurat\ de capturile de imagini reprezentative, permi]nd `nsu[irea con]inutului chiar [i de c\tre cei neini]ia]i `n domeniu. Pentru exemplificare v\ prezent\m fragmente din modulul 9. Interfa]a Class Designer Class Designer (ca [i Form Designer) permite ca propriet\]ile [i metodele clasei s\ fie manipulate prin interfa]\. Fereastra Properties poate fi utilizat\ pentru a vizualiza [i modifica set\rile pentru propriet\]i (aceea[i ca [i set\rile de propriet\]i din Form Designer).

Fig. 11. Interfa]a Class Designer

Meniul Class Dup\ ce dialogul Class Designer a ap\rut pe ecran, n bara de meniu Visual FoxPro a ap\rut o nou\ op]iune Class, cu ajutorul c\reia pute]i introduce propriet\]i [i metode noi.

Fig. 12. Op]iunile meniului Class

Ini]iere `n programare

lec]ie demonstrativ\

15

Ad\ugarea propriet\]ilor [i metodelor unei clase Pentru a introduce o proprietate nou\: Din meniul Class, alege]i New Property. Va ap\rea urm\toarea fereastr\ de dialog:

Fig. 13. Introducerea unei propriet\]i noi pentru o clas\

n cmpul Name tasta]i numele noii propriet\]i. Din lista Visibility selecta]i vizibilitatea propriet\]ii. Op]iunile posibile sunt: Public, Protected, Hidden. Propriet\]ile protejate nu pot fi accesate de instan]ele clasei, dar pot fi accesate de subclase. Propriet\]ile ascunse nu pot fi accesate nici de subclase. Prin op]iunea Access Method specifica]i dac\ exist\ o metod\ pentru aceast\ proprietate. Instruc]iunile din aceast\ metod\ sunt executate de fiecare dat\ cnd proprietatea este apelat\. Dac\ a]i selectat aceast\ op]iune, va fi creat\ [i o metod\ cu numele propriet\]ii [i termina]ia _access. Op]iunea Assign Method este asem\n\toare cu Access Method, numai c\ metoda creat\ va fi executat\ cnd se ncearc\ modificarea valorii propriet\]ii. Termina]ia metodei create va fi _assign. Pute]i s\ include]i [i o descriere a propriet\]ii, care, atunci cnd proprietatea este selectat\, va fi afi[at\ n partea de jos a ferestrei Properties n Class Designer.

Fig. 14. Introducerea unei metode noi pentru o clas\

16

lec]ie demonstrativ\

Ini]iere `n programare

Tab-ul Class Tab-ul Class con]ine informa]ii generale despre clas\.

Fig. 16. Tab-ul Class

Toolbar Icon specific\ icoana care va reprezenta clasa pe bara de instrumente a controalelor. Container Icon reprezint\ icoana care va fi afi[at\ n Class Browser ca reprezentare grafic\ a clasei. Scale Units poate fie Pixels sau Foxels [i reprezint\ unitatea de m\sur\ pentru clas\. Foxels este echivalentul n\l]imii [i l\]imii medii a unui caracter bazat pe fontul curent al formei n care este con]inut un obiect. Foxels este folositor cnd se dezvolt\ aplica]ii pentru platforme grafice sau caracter diferite. Descrierea unei clase poate fi modificat\ `n Description. Informa]iile Class Name, Parent Class [i Class Library sunt read-only. Acestea arat\ numele clasei pe care clasa este bazat\ [i fi[ierul .VCX n care se afl\.

Ini]iere `n programare

lec]ie demonstrativ\

17

La finalul fiec\rui modul ve]i `ntlni cte o recapitulare, `n care sunt prezentate succint [i schematic cele mai importante informa]ii expuse pe parcurs. V\ prezent\m `n continuare recapitularea modului 10, `n care sunt tratate modalit\]ile de utilizare a controalelor.

Recapitularea modulului 10
10.1 Controalele grup de butoane de op]iuni (Option Buttons) sunt controale care con]in un num\r de op]iuni din care nu poate fi selectat\ la un moment dat dect o op]iune. Din aceast\ cauz\ mai sunt numite [i butoane radio. 10.2 Controalele grup de butoane de comand\ (Option Groups) sunt controale care con]in un num\r de butoane de comand\ care pot s\ fie tratate ca o unitate. 10.3 Controalele Grid (grile) sunt controale container sub form\ de grile ce v\ permit s\ prezenta]i datele n format tabelar. Controalele componente ale unei grile sunt coloanele, header-ele [i controalele con]inute de coloane. 10.4 Controalele Page Frame sunt containere folosite pentru crearea de pagini alternante. Fiecare pagin\ poate con]ine un set de controale grupate dup\ anumite criterii. O singur\ pagin\ a controlului poate fi activ\ la un moment dat n form\. 10.5 Controalele Timer sunt utilizate pentru lansarea periodic\ a unor evenimente ntr-o aplica]ie. Aceste controale nu sunt vizibile n program. 10.6 Mediul de date (Data environment) reprezint\ toate tabelele, vederile [i rela]iile care trebuie s\ fie deschise cnd rula]i sau modifica]i o form\. Mediul de date este salvat cu forma [i poate fi modificat n Data Environment Designer. 10.7 Sesiunea de date (Data session) este o reprezentare a mediului curent de lucru utilizat de o form\ sau set de forme. Fiecare sesiune de date con]ine propriul set de zone de lucru. Aceste zone de lucru con]in tabelele deschise, indec[ii [i rela]iile lor. 10.8 Obiectele Form au o proprietate foarte important\, numit\ WindowType, prin care se poate stabili comportamentul general al unei forme. Aceasta poate avea valorile:

18

lec]ie demonstrativ\

Ini]iere `n programare

Modal forma de]ine controlul permanent; Modeless se poate comuta la o alt\ form\ sau se poate lansa o alt\ op]iune dintr-un meniu.

10.9 Ordinea controalelor (tab order) reprezint\ ordinea n care controalele dintro form\ sunt parcurse atunci cnd ap\sa]i tasta TAB. 10.10 Variabila _SCREEN este o variabil\ sistem (este creat\ automat la lansarea sistemului) [i cu ajutorul ei se poate manipula fereastra principal\ a Visual FoxPro ca orice obiect. Prin variabila _SCREEN se pot specifica propriet\]ile [i metodele ferestrei principale Visual FoxPro dup\ aceea[i sintax\ de manipulare a obiectelor dintr-o form\. 10.11 Meniurile sunt liste de elemente care declan[eaz\ comenzi atunci cnd se alege una dintre op]iuni. Generatorul de meniuri (Menu Designer) permite introducerea sau [tergerea op]iunilor din meniuri sau submeniuri. De asemenea, pentru fiecare meniu sau op]iune ata[eaz\ proceduri [i comenzi ce vor fi lansate n execu]ie n momentul select\rii meniului / op]iunii. Elementele care definesc un meniu sunt: bara de meniu o f[ie orizontal\ care apare de-a lungul p\r]ii de sus a ecranului [i con]ine numele meniurilor; articolul de meniu o comand\ de meniu sau nume de fi[ier listate ntrun meniu. Pute]i s\ crea]i [i s\ defini]i elemente de meniu pentru aplica]iile dumneavoastr\ utiliznd Menu Designer; textul meniului un cuvnt, expresie, sau icoan\ de pe bara de meniu care desemneaz\ un meniu. Selectnd textul meniului se va produce extinderea meniului n jos. Este adesea referit ca un nume de meniu; meniul sistem combina]ia dintre bara de meniu, meniuri [i articole de meniu; meniu generat este un program generat cu ajutorul generatorului de meniuri. Programele de meniu generate au extensia .MPR.

Ini]iere `n programare

lec]ie demonstrativ\

19

Toate lec]iile au la final o tem\ pentru acas\, care are rolul de a v\ testa cuno[tin]ele `nsu[ite.

Tema pentru acas\ 11


Alege]i r\spunsurile corecte. Facem men]iunea c\ ntreb\rile pot avea mai multe r\spunsuri corecte. 1. Alege]i comanda prin care pute]i trimite rezultatul rul\rii raportului Raport1.frx ntr-un fi[ier text. a) REPORT FORM Test.FRX TO FILE xxx.txt ASCII b) REPORT FORM Test.FRX TO FILE xxx.txt c) REPORT FORM Test.FRX TO xxx.txt ASCII 2. ntr-un raport, toate rndurile afi[ate trebuie separate de o linie orizontal\ pentru a-l face mai u[or de urm\rit. n ce band\ trebuie introdus un control grafic de tip linie? a) banda Page Header; b) banda Page Footer; c) banda DETAIL. 3. ntr-un raport, pe prima pagin\ trebuie afi[at un titlu, iar pe toate paginile tip\rite trebuie s\ apar\ capul de tabel. Unde trebuie introduse cele dou\ elemente? a) ambele n banda de titlu TITLE; b) ambele n banda PAGE HEADER; c) titlul se afi[eaz\ n banda de titlu TITLE, iar capul de tabel n banda PAGE HEADER. 4. Dori]i s\ grupa]i datele dup\ un cmp, iar la sfr[itul grupului s\ afi[a]i totaluri ale grupului curent. Cum pute]i afi[a totaluri pe grupuri? a) n DATA GROUPING se alege cmpul care se dore[te a fi totalizat, iar totalul se va afi[a n GROUP HEADER. b) n DATA GROUPING se alege cmpul care se dore[te a fi totalizat, iar totalul se va afi[a n GROUP FOOTER. c) n DATA GROUPING se alege cmpul care se dore[te a fi totalizat, iar totalul se va afi[a n PAGE FOOTER.

20

lec]ie demonstrativ\

Ini]iere `n programare

Temele se rezolv\ pe formulare speciale, dispuse la sfr[itul fiec\rui caiet.

Cu aceasta se `ncheie lec]ia demonstrativ\ a cursului de Ini]iere `n programare. ~n speran]a c\ materialul prezentat v-a convins de accesibilitatea [i atractivitatea cursului v\ a[tept\m s\ deveni]i cursant al Institutului Eurocor `nscriindu-v\ la cursul de Ini]iere `n programare.

tel. 021/33.225.33; www.eurocor.ro