You are on page 1of 21

Iniþiere

în programare
Visual FoxPro
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 familia-
rizarea 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 întâi 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 `ncât 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!
2 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
dobândite;
• `n plus, pentru a v\ consolida cuno[tin]ele, la sfâr[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 sfâr[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,
urmând 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 cât mai u[or [i eficient, pe
marginea lec]iilor au fost introduse diferite simboluri:

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

e – 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\ 3

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

MODULUL 2 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

MODULUL 3 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

MODULUL 4 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\

MODULUL 5 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 câmpurile unei tabele

MODULUL 6 Alte facilit\]i ale bazelor de date


Câmpurile memo. Legare [i încorporare de obiecte. Lucrul cu
bazele de date. Indec[i. Construirea integrit\]ii referen]iale.
Integritatea rela]ional\

MODULUL 7 Elemente de programare structurat\


No]iunea de algoritm. Modalit\]i de reprezentare a algoritmilor.
Programarea structurat\. Principalele structuri utilizate în
schemele logice
4 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\

MODULUL 9 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 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\ 5

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
rând, 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 `ntârzia 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 decât 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 rezultând [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.
~ncepând cu acest modul vom trece la prezentarea sistemului Visual FoxPro 6.0.
Având `n vedere faptul c\ sistemul este foarte vast, vom `ncerca s\ parcurgem [i s\
definim cât mai multe dintre posibilit\]ile acestuia, dându-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]inând ini]ial firmei Ashton Tate,
devenind mai târziu 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.
6 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 vârful 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 pân\ 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,
asigurând utilizarea [i dezvoltarea de programe de mare complexitate;

• pentru a se adresa unei game cât mai largi de utilizatori, sistemul Visual FoxPro
are componente ce pot fi apelabile atât de la tastatur\, cât [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 (utilizând 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, având 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\ 7

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 câteva
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\mâne
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 sfâr[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 utilizând 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 ~nc\rcarea înregistr\rii vide se realizeaz\ [i cu alte comenzi de actualizare


(BROWSE, CHANGE, REPLACE).

i Dac\ tabela nu este activat\ [i se tasteaz\ comanda APPEND, se deschide o


fereastr\ pentru selectarea tabelei.
8 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

i
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 câmpului din structura înregistr\rii.

i Comanda FIND se recomand\ atunci când 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\ 9

Tabelele au rolul de a completa `ntr-un mod adecvat informa]iile


prezentate. Din modulele 4 [i 6, am selectat câteva 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 încât s\ permit\ realizarea majorit\]ii
opera]iilor matematice întâlnite î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., putându-se astfel realiza calcule matematice mai complexe cu efort minim.
Operanzii numerici care intervin în expresii pot fi:
• câmpuri 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, având 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 stânga la dreapta, în ordinea apari]iei operatorilor
în expresie.
Între dou\ expresii numerice se pot aplica, de asemenea, operatori rela]ionali,
ob]inându-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 decât


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

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. Când
tabela este o parte component\ a unui fi[ier baz\ de date, ea poate avea:
• nume lungi pentru tabel\ [i pentru fiecare câmp din structur\;•
comentarii pentru fiecare câmp;
• valori implicite, m\[ti [i formate de introducere pentru fiecare câmp;
• reguli la nivel de câmp [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. }inând cont de importan]a `nsu[irii [i
consolid\rii cuno[tin]elor, al\turi de fiecare exerci]iu ve]i intâlni 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\ pân\ 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

e Exerci]iul 2
Scrie]i o bucl\ DO WHILE pentru parcurgerea de la sfâr[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 pân\ când 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 când 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

e 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

e Exerci]iul 2
În exemplul de mai sus încerca]i s\ modifica]i procedura Init, astfel
încât 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 câmpul 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\
când 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\ când 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 când 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
când 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 `ntâlni câte 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 decât 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 când 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 dintr-
o form\ sunt parcurse atunci când 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 când 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 într-
un meniu. Pute]i s\ crea]i [i s\ defini]i elemente de meniu pentru
aplica]iile dumneavoastr\ utilizând Menu Designer;
• textul meniului – un cuvânt, expresie, sau icoan\ de pe bara de meniu
care desemneaz\ un meniu. Selectând 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 rândurile 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 câmp, iar la sfâr[itul grupului s\ afi[a]i totaluri
ale grupului curent. Cum pute]i afi[a totaluri pe grupuri?
a) În DATA GROUPING se alege câmpul care se dore[te a fi totalizat, iar
totalul se va afi[a în GROUP HEADER.
b) În DATA GROUPING se alege câmpul care se dore[te a fi totalizat, iar
totalul se va afi[a în GROUP FOOTER.
c) În DATA GROUPING se alege câmpul 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 sfâr[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

You might also like