Documente Academic
Documente Profesional
Documente Cultură
Baze de Date in Visual Foxpro PDF
Baze de Date in Visual Foxpro PDF
1. Tabele de date
Observaii
Derularea unei sesiuni de lucru n FoxPro se realizeaz n
directorul de lucru implicit. Acest director poate fi schimbat
prin comanda:
DIR
Zone de lucru
Observaii
La pornirea FoxPro-ului zona de lucru implicit va fi zona 1 (cu
alias 1 sau A). Aceasta se poate schimba prin comanda :
USED([<alias>]) i DBF([<alias>])
Exemple:
use personal in 1
use nomenclator in B alias nomen
select nomen
?dbf()
C:\PROGRAM
FILES\DEVSTUDIO\VFP\JOB\NOMENCLATOR.DBF
?used(1)
.T.
MODIFY STRUCTURE
DISPLAY STRUCTURE
6 Baze de date n Visual FoxPro
SKIP [<expN>]
Exemple:
use personal
?reccount()
25
append blank
?reccount()
26
goto 7
insert blank before
?recno()
7
dele next 3
skip -1
recall
pack
?reccount()
24
replace for nume=ALEX nume with ALEXANDRU
Fereastra BROWSE
Domeniul
Clauza FOR
Clauza WHILE
12 Baze de date n Visual FoxPro
Fanionul de tergere
Cmpuri MEMO
SEEK <exp>
16 Baze de date n Visual FoxPro
Exemple:
* citirea unui numr cu dou zecimale pe cmp de 7
caractere:
a=0
@10,10 GET a PICTURE '9999.99'
READ
* introducere cu majuscule:
b=space(10)
@10,10 GET b PICTURE REPLICATE ('!',10)
READ
Exemplu.
Fie fiierul Agenda.dbf, avnd structura:
Nume Caracter 30
Data_N Date 8
Telefon Caracter 10
Baze de date n Visual FoxPro 19
procedure introducere
clear
@10,10 say 'Numele' get nume function '!'
@12,10 say 'Data nasterii' get data_n
@14,10 say 'Telefonul' get telefon
read
endproc
clear
use agenda
TEXT
Alegeti optiunea:
1. Afisare
2. Adaugare
3. Modificare
0. Terminare
ENDTEXT
opt=0
@10,20 say 'Optiunea:' get opt picture '9' range 0,3
read
clear
do case
case opt=1
do afisare
case opt=2
do adaugare
case opt=3
do modificare
case opt=0
cancel
endcase
cancel
procedure afisare
browse
endproc
procedure adaugare
append blank
20 Baze de date n Visual FoxPro
do introducere
endproc
procedure modificare
numele = space(30)
@10,0 say 'Numele cautat' get numele function '!'
read
locate for nume=numele
if found()
do introducere
else
WAIT 'Nume negasit!'
endif
endproc
Observaii
o Pentru afiarea meniului de opiuni s-a utilizat instruciunea
TEXT ENDTEXT
o Pentru afiarea mesajului de eroare Nume negasit! s-a
utilizat instruciunea WAIT.
SUM(<expN>) - suma;
AVG(<expN>) media aritmetic;
STD(<expN>) deviaia standard;
VAR(<expN>) abaterea medie ptratic;
MAX(<exp>) val maxim, nu neaprat numeric;
MIN(<exp>) val minim, nu neaprat numeric;
NPV(<expN1>,<expN2>)[,<expN3>])
valoarea prezent net a unei investiii (vezi
funcia de calcul financiar);
CNT() numrul de nregistrri din tabelul de date.
22 Baze de date n Visual FoxPro
Aplicaii
10 Se creaz tabelul (fiierul) de date Personal.dbf avnd
structura:
Cmp Semnificaie Tip de dat
nume Numele angajatului ir de caractere
marca Cod numeric angajat ir de caractere
functia Funcia angajatului ir de caractere
salariu Salariul brut Numeric
datanast Data naterii Dat calendaristic
sex Sex Logic
adresa Adresa angajatului Memo
20 Se introduc n tabel urmtoarele nregistrri:
)
- n cmpul sex se nscriu valorile .T. (masculin) i .F. (feminin)
- valorile din cmpul adresa (text de lungime variabil) nu pot fi nscrise
direct n tabel, dar sunt stocate ntr-un fiier asociat tabelului de date
numit fiier memo. Trimiterea spre acest fiier se poate face printr-un
dublu clic, cu mouse-ul pe cmpul memo corespunztor
30 Informaii privind:
fiierele tabel de date prezente pe disc, n directorul de lucru:
dir
numrul de nregistrri ale tabelului de date i numrul de
ordine al nregistrrii curente:
?reccount()
?recno()
Baze de date n Visual FoxPro 23
browse
nlocuirea valoric a salariului, la toi salariaii, cu 12%:
replace all salariu with salariu*1.12
browse
50 Editarea tabelului de date selectiv (selecii pe orizontal i pe
vertical) utiliznd comanda BROWSE:
afiarea pe cmpurile nume, functia, salariu :
browse fields nume, functia, salariu
editarea nregistrrilor corespunztoare persoanelor de sex
masculin i a cmpurilor nume, salariu:
browse fields nume, salariu for sex=.T.
editarea tabelului de date doar pe cmpul salariu:
brow freeze salariu
Prin crearea unei baze de date mai multe tabele de date sunt
reunite ntr-o singur colecie. Fiecare baz de date are asociat un
dicionar de date care ofer mai mult flexibilitate n proiectarea i
modificarea bazei de date i reduce sarcina programatorului de a
scrie cod pentru validrile la nivel de cmp i de nregistrare sau
pentru a asigura unicitatea valorilor din cmpurile reprezentnd chei
primare. Fiierele baz de date, coninnd tabele de date i
informaiile asociate lor sunt fiiere avnd extensia implicit dbc.
Dicionarul de date Visual FoxPro permite crearea sau
specificarea unor elemente cum ar fi:
Cheile primare i secundare;
Relaiile dintre tabelele bazelor de date;
Valorile implicite ale cmpurilor;
Mtile de intrare i a formatelor de afiare a cmpurilor;
Regulile la nivel de cmp i de nregistrare;
Procedurile stocate.
sau prin alegerea opiunii File, New din meniu (n acest caz n caseta
New se selecteaz Database i New file). Cnd se creeaz o nou
baz de date, aceasta nu conine nimic (tabele asociate sau alte
obiecte).
* Sfat
Lucrai cu bara de instrumente Database Designer. Dac
aceasta nu este afiat utilizai meniul: View,
ToolbarsDatabase Designer.
Remove Table
New Local View Browse Table
Add Table Modify Table
New Table
n baza de date;
Add Table Includerea unui tabel deja creat n baza de date;
date;
Modify Table Modificarea structurii unui tabel;
un tabel;
New Local View Crearea unei vederi (View).
28 Baze de date n Visual FoxPro
Figura 2.1
Figura2.2
Figura 2.3
Figura2.4
Observaii
Se recomand lansarea generatorului de integritate
referenial imediat dup includerea unui nou tabel i
stabilirea relaiilor cu alte tabele deja incluse.
Se recomand realizarea relaiilor de integritate n
cascad.
Dac se intervine n arhitectura bazei de date, de pild, prin
modificarea tabelelor sau a indecilor folosii ntr-o relaie
permanent, se impune relansarea generatorului nainte de
a se folosi baza de date astfel nct acesta s reflecte noua
arhitectur. Altfel, pot fi generate rezultate imprevizibile.
Figura 2.5
34 Baze de date n Visual FoxPro
Aplicaii
10 Pentru evidena produselor livrate de un furnizor se creeaz
baza de date Furnizor.dbc, avnd n componen urmtoarele tabele
de date:
a) clienti.dbf (Client C, 35 / Codc C, 4 / Adresa - memo)
unde Codc este codul atribuit firmei, iar Codp este codul produsului i
vor constituii cheile de legtur ntre tabele.
) Indicaie
Se va aciona butonul New Local View din bara de instrumente
Database Designer i se vor include n vedere cele trei tabele de date (vezi
figura 2.5), precum i cmpurile necesare. La nchiderea ferestrei View
Designer, acestei vederi, i se va asocia numele livrari.
sau prin alegerea opiunii File, New din meniu (n acest caz n caseta
New se selecteaz Form i New file).
* Sfat
Lucrai cu bara de instrumente Query Designer. Dac aceasta
nu este afiat utilizai meniul: View, ToolbarsQuery
Designer.
Remove Table
Add Table Add Join
Show the SQL window
Query Destination
Maximize the table
i
Bara de instrumente Query Designer permite efectuarea unor
operaiuni cum ar fi:
Add Table Includerea unui tabel de date n interogare;
Figura 3.1
Baze de date n Visual FoxPro 39
Observaii:
Este obligatorie indexarea tabelului copil dup criteriul care
stabilete legtura (de obicei acesta este un cmp comun cu
al tabelului printe, dar poate fi i o expresie oarecare).
Se pot stabilii dou tipuri de legturi ntre tabelul printe i
tabelul copil:
o legturi unu la unu, cnd n tabelul copil valorile
cheii de indexare sunt unice;
o legturi unu la mai multe, cnd nregistrrile
tabelului copil pot lua i valori egale pe cheia de
indexare.
Legturile permanente necesare pentru stabilirea unei
interogri se aleg folosind pagina Join (figura 3.2), prin specificarea
cmpurilor care fac obiectul legturii i a tipului de legtur:
Inner Join legtur interioar, ntre nregistrrile din tabelul
printe care au corespondent n tabelul copil i invers;
Left Join legtura la stnga, cnd vor fi luate n considerare
i nregistrrile din tabelul printe (din stnga) care nu au
corespondent n tabelul copil;
Right Join legtura la dreapta, cnd vor fi luate n
considerare i nregistrrile din tabelul copil (din dreapta) care
nu au corespondent n tabelul printe;
Full Join vor fi considerate toate legturile.
Figura 3.2
Baze de date n Visual FoxPro 41
Figura 3.3
Figura 3.4
Gruparea datelor
42 Baze de date n Visual FoxPro
Destinaia interogrii
Figura3.5
Aplicaii
10 S se creeze urmtoarele tabele de date:
Studenti.dbf (nume C, 30 / matricola N,4 /grupa C,4)
Discipline.dbf (materia C, 30 / cod C,4)
Note.dbf (nota N,2 / matricola N, 4 / cod C,4):
4. Utilizarea formularelor
sau prin alegerea opiunii File, New din meniu (n acest caz n caseta
New se selecteaz Form i New file).
Barele utilitare
Form Designer Toolbar - bara de butoane standard a
formularului:
Data Environment Layout Toolbar
Properties Window Color Palette Toolbar
Valoarea
proprietii
Proprietate
FORMULARUL
Obiect
* Sfat
Lucrai cu barele de instrumente. Dac acestea nu sunt
afiate utilizai meniul: View, Toolbars
Baze de date n Visual FoxPro 47
Proprieti i metode
Exemple
Form1.Caption=Actualizare
modific proprietatea Caption (titlu) a formularului
Form1
Form1.Vizualizare
execut metoda Vizualizare ataat formularului
Form1.Label1.Caption=Numele persoanei
modific proprietatea Caption (titlu) a obiectului
Label1
ThisForm.Caption=Adugare
50 Baze de date n Visual FoxPro
Obiecte simple
Standard Graphical
Proprieti principale:
Proprietatea Value stabilete valoarea iniial nscris n
caset i furnizeaz valorile editate la execuia formularului.
Proprietile KeyboardHighValue i KeyboardLowValue
stabilesc limita superioar i inferioar a valorilor introduse
n cmpul de editare direct de la tastatur (depirea acestor
limite genereaz mesaj de eroare).
Proprietile SpinnerHighValue i SpinnerLowValue
stabilesc limita superioar i inferioar a valorilor introduse
cu ajutorul butoanelor de incrementare/decrementare
(depirea acestor limite nu conduce la eroare dar valoarea
aflat n editare nu mai este mrit/micorat).
Standard Graphical
Grid Grila
Column1 Coloana1
Header1 Antet1
Text1 Cmp1
Column2 Coloana2
Header2 Antet2
Text2 Cmp2
Aplicaii
10 S se editeze urmtorul formular:
) Indicaii
Se lanseaz Constructorul de formulare.
Se stabilesc proprietile obiectelor n felul urmtor:
Obiect Tip Proprietate Valoare Observaii
proprietate
Form Caption Calcule
Form1 financiare
Button Caption Calculeaz Color Pallete : Verde
Command1 Command
FontBold .T. -True
Label Caption Funcia: Color Pallete : Rou
Label1
Optiongroup Name Opt
FV
Caption FV Color Pallete : Rou
PV
Caption PV Color Pallete : Rou
Payment
Caption Payment Color Pallete : Rou
FontBold .T. -True
Text Box Name a1 Color Pallete :
a1 Albastru
FontSize 11
FontBold .T. -True Primul argument
Text Box Name a2 Color Pallete :
a2 Albastru
FontSize 11
FontBold .T. -True Al doilea argument
Baze de date n Visual FoxPro 57
) Indicaii
Obiectul GrdCalificative poate fi creat n formular prin tragerea
tabelului Calificative.dbf, cu mouse-ul, din fereastra Data
Environment.
Se stabilesc proprietile obiectelor active n felul urmtor:
5. Proiectarea meniurilor
Submeniu Vertical
(Submenu)
sau prin alegerea opiunii File, New din meniu (n acest caz n caseta
New se selecteaz Menu i New file). Din fereastra deschis pe
ecran se alege butonul Menu (meniu), dac se dorete crearea unui
meniu cu bar i submeniuri verticale, respectiv butonul Shortcut
(scurttur), dac se dorete construirea unui submeniu vertical,
avnd subordonate alte meniuri verticale. Astfel va fi lansat n lucru
Constructorul de meniuri.
* Sfat
nainte de a stabili componentele unui meniu i caracteristicile
acestora trebuie precizate o serie de opiuni, cum ar fi poziia
fa de meniul sistemului Visual FoxPro. Opiunile generale ale
unui meniu pot fi precizate n fereastra de dialog General
Options (opiuni generale): View, General Options din meniul
Visual FoxPro-ului.
Aplicaie
S se editeze un meniu pentru crearea i modificarea
structurii unui fiier ct i pentru editarea coninutului lui:
) Indicaii
Se lanseaz Menu Designer.
Se editeaz opiunile meniului principal.
6. Generarea rapoartelor
sau prin alegerea opiunii File, New din meniu (n acest caz n caseta
New se selecteaz Report i New file).
Tiprire
Observaie
Se poate obine trimiterea raportului spre un fiier (n loc de
imprimant) cu ajutorul clauzei TO FILE a comenzii REPORT
FORM:
REPORT FORM <nume raport> TO FILE <fiier> [ASCII]
Baze de date n Visual FoxPro 71
Data Grouping
Color Palette Toolbar
Layout Toolbar
* Sfat
Lucrai cu barele de instrumente asociate Constructorului de
rapoarte. Dac acestea nu sunt afiate utilizai meniul: View,
Toolbars
72 Baze de date n Visual FoxPro
Field Cmpuri.
Cmpurile reprezint elementele variabile ale unui raport,
putnd genera n raportul final mai multe valori, valori care vor fi
determinate de sursa de date precizat: o variabil a raportului, o
expresie de calcul, un cmp al unui tabel de date. Caracteristicile
legate de fontul n care se realizeaz afiarea valorii din cmp se
stabilesc la fel ca pentru obiectele de tip Label.
Definirea caracteristicilor unui obiect de tip Field se realizeaz n
fereastra de dialog Report Expression (deschis prin dublu clic pe
obiect).
Poziia cmpului (Field position) relativ la banda din raport n
care este definit poate fi: Float (poziie variabil, n funcie de
obiectele definite deasupra lui), Fix relative to top of band (poziie
fix relativ la marginea superioar a benzii), Fix relative to bottom of
band (poziie fix relativ la latura inferioar a benzii).
n caseta Expression se nscrie expresia care va furniza
valoarea ce trebuie afiat. De multe ori, aceast expresie este un
simplu cmp al unei tabele surs sau o variabil de lucru.
76 Baze de date n Visual FoxPro
Aplicaie
10 S se creeze tabelulul de date, mfix.dbf
avnd structura:
Denumirea mijlocului fix DENUMIRE C 30
Valoarea de inventar VALINV N 10
Valoarea amortizat VALAMOR N 10
) Indicaii
Se lanseaz Constructorul de rapoarte.
n mediul de date al raportului se introduce tabelul de date definit
anterior.
Se includ n raport obiectele necesare i anume:
o n banda Page Header:
textele informative (denumirea raportului, capul de
tabel),
elementele semigrafice (linii, chenare),
cmpul care furnizeaz data calendaristic.
78 Baze de date n Visual FoxPro
sau prin alegerea opiunii File, New din meniu (n acest caz n caseta
New se selecteaz Project i New file). Astfel este deschis fereastra
Gestionarului de proiecte:
80 Baze de date n Visual FoxPro
- baze de date
- tabele izolate
- interogri
- formulare
- rapoarte
- etichete
- programe
- biblioteci API
- aplicaii
Baze de date n Visual FoxPro 81
- meniuri
- fiiere text
- alte tipuri de
fiiere
Observaie
n mod implicit, tabelele sunt marcate ca excluse, deoarece
Visual FoxPro presupune c acestea vor fi modificate n cadrul
aplicaiei. Ca regul general, elementele unui proiect care au
ca rezultat generarea de cod (formulare, rapoarte, interogri,
meniuri i programe) trebuie incluse n fiierul aplicaie, pe
cnd fiierele de date trebuie excluse. Stabilirea fiierelor
incluse, respectiv excluse, se realizeaz pe baza cerinelor
aplicaiei. De pild, o tabel care cuprinde informaii de sistem
importante sau informaii folosite pentru cutare pot fi incluse
n fiierul aplicaie pentru a le proteja mpotriva modificrilor
neavenite. Invers, un fiier raport (.frx) poate fi exclus pentru a
permite modificarea lui dinamic n timpul rulrii.
84 Baze de date n Visual FoxPro
Observaie
Fiierul desemnat ca fiier principal al aplicaiei este marcat ca
parte a proiectului, astfel c dup compilarea aplicaiei el va fi
protejat la scriere (read-only). ntr-un proiect nu poate exista
dect un singur fiier principal.
DO <nume aplicaie>.APP
* Sfaturi
Includei comanda READ EVENTS n fiierul principal. Dac
acesta este
o un formular: n metoda Activate Event;
o un meniu: n procedura Cleanup (meniu: View, General
Options).
Asigurai-v c interfaa are un mecanism (cum ar fi un
buton Exit sau o comand de meniu) pentru a lansa
comanda CLEAR EVENTS.
Aplicaie
10 S se editeze un proiect, pentru evidena studenilor nscrii
la o facultate care s includ:
a) fiierul INSCRISI.DBF cu structura: