Documente Academic
Documente Profesional
Documente Cultură
Baze de Date in Visual FoxPro
Baze de Date in Visual FoxPro
1. Tabele de date
constructorului
de
tabele,
care
vor
fi
precizate
nume (Name);
DESCENDING
precizeaz
tipul
ordonrii
Observaii
DIR
Zone de lucru
Pentru manipularea simultan a mai multor tabele de date,
FoxPro folosete zone speciale de memorie numite zone de lucru, n
care depune informaiile necesare efecturii operaiilor cu tabelele de
date respective.
Pentru identificarea unei zone de lucru se folosesc alias-uri
(literele A, B, C sau cifrele 1, 2, 3, ) care permit identificarea
tabelelor de date i altfel dect prin numele lor. n afar de aceste
alias-uri utilizatorul poate defini i propriile sale alias-uri.
Observaii
USED([<alias>])
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.
sau
CLOSE ALL
SKIP [<expN>]
(salt nainte sau napoi cu un numr de nregistrri);
LOCATE [<domeniu>] [FOR <cond1>] [WHILE <cond2>]
(cut prima nregistrare care respect condiia <cond1>,
domeniul nregistrrilor fiind dat de clauzele <domeniu> i
WHILE).
Poziia curent n tabelul de date poate fi stabilit cu ajutorul
funciilor:
EOF() returneaz .T. sau .F. dup cum este detectat sau nu
marcajul de sfrit de fiier (aflat dup ultima nregistrare);
Exemple:
use personal
?recno()
1
goto record 7
?recno()
7
goto top
?recno()
1
skip 1
?bof()
.T.
skip 3
?recno()
3
go bottom
skip
?eof()
.T.
locate for nume=ALEX
sau
definitiv.
Pentru
tergerea
logic
este
utilizat
comanda:
DELETE [<domeniu>] [FOR <cond1>] [WHILE <cond2>]
Aceast comand (precum i altele) folosete clauza FOR pentru
selectarea tuturor nregistrrilor care corespund condiiei logice
<cond1>. Clauza WHILE ntrerupe testarea nregistrrilor cnd
gsete o nregistrare ce nu respect condiia dat, <cond2>.
Accesul la nregistrrile marcate pentru tergere este controlat de
comanda:
SET DELETED ON OFF
sau
ZAP
10
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
Principala
comand,
pentru
realizarea
diferitelor
operaiuni
11
Domeniul
Clauza FOR
Clauza WHILE
12
modificri
ale
valorilor
nscrise
cmpurile
tabelelor
Cmpuri MEMO
Cmpurile MEMO definesc cmpuri de lungime variabil de
tip text. Un tabel de date, cu cel puin un cmp MEMO, are asociat un
fiier suplimentar n care sunt depuse informaiile legate de acest
cmp. Pentru a putea identifica datele din fiierul MEMO asociat, care
Tabelul de date
Fiierul MEMO
asociat
13
14
15
16
Observaii
17
18
Exemple:
* citirea unui numr cu dou zecimale pe cmp de 7
caractere:
a=0
@10,10 GET a PICTURE '9999.99'
READ
* citirea oricror caractere pe cmp de lungime 10:
b=space(10)
@10,10 GET b PICTURE REPLICATE ('X',10)
READ
* introducere cu majuscule:
b=space(10)
@10,10 GET b PICTURE REPLICATE ('!',10)
READ
* introducerea unei majuscule i a dou cifre cu centrare:
.....PICTURE 'A99' FUNCTION 'I!'
* urmtoarele machete de editare sunt echivalente:
..... PICTURE 'AAAAA' FUNCTION '!'
..... PICTURE 'XXXXX' FUNCTION 'A!'
Caracter
Date
Caracter
30
8
10
19
20
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.
21
de
22
Aplicaii
10
structura:
Cmp
nume
marca
functia
salariu
datanast
sex
adresa
20 Se introduc n
Semnificaie
Tip de dat
Numele angajatului
ir de caractere
Cod numeric angajat ir de caractere
Funcia angajatului
ir de caractere
Salariul brut
Numeric
Data naterii
Dat calendaristic
Sex
Logic
Adresa angajatului
Memo
tabel urmtoarele nregistrri:
)
-
30 Informaii privind:
23
anularea filtrrii:
set filter to
browse
24
browse
25
26
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.
27
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).
Pentru iniierea unei sesiuni de lucru cu o baz de date,
aceasta trebuie s fie activat (deschis). Deschiderea unei baze de
date se poate realiza prin meniu (File, Open, Files of type: Database
(*.dbc)) sau prin comanda MODIFY DATABASE.
Observaie
Sfat
New Table
28
Observaie
29
Baza
Exemplu
de
date
Furnizor.dbc
include
tabelele
clienti.dbf,
Figura 2.1
30
Figura2.2
Figura 2.3
31
Figura2.4
32
Observaii
Se
recomand
lansarea
generatorului
de
integritate
-sau-
CLOSE ALL
Observaii
33
Figura 2.5
34
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)
35
unde Codc este codul atribuit firmei, iar Codp este codul produsului i
vor constituii cheile de legtur ntre tabele.
20 S se indexeze tabelele de date:
clienti.dbf dup cmpul Codc, cruia i se va atribuii statutul de
cheie primar (vezi figura 2.2);
comenzi.dbf dup cmpurile Codc i Codp crora li se va
atribuii statutul de chei normale (vezi figura 2.3);
produse.dbf dup cmpul Codp - cheie primar.
30 S se realizeze relaiile de tip una la mai multe (vezi figura 2.1):
a) ntre tabelele de date
clienti.dbf i comenzi.dbf (clic cu
mouse-ul pe cheia Codc din tabelul clienti.dbf i tragere peste
cheia Codc din tabelul comenzi.dbf).
b) ntre tabelele de date produse.dbf i comenzi.dbf.
40 S se lanseze Generatorul de Integritate Referenial (prin
meniu: Database, Edit Referetial Integrity) pentru realizarea relaiilor
de integritate n cascad (Cascade) vezi figura 2.4. S se verifice
stabilirea integritii refereniale n urmtoarele situaii:
o tergere logic (DELETE) n tabelul printe, clienti.dbf, se
reflect ca tergere logic n tabelul copil comenzi.dbf.
orice modificare a cheii primare din tabelul printe, clienti.dbf,
se reflect ca modificare n tabelul copil comenzi.dbf.
50 S se includ n baza de date un tabel vedere, livrari:
36
) 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.
37
sau prin alegerea opiunii File, New din meniu (n acest caz n caseta
New se selecteaz Form i New file).
prin comanda
Observaie
DO <nume interogare>.
Sfat
Add Join
Show the SQL window
Query Destination
Maximize the table
i
38
Figura 3.1
39
40
Observaii:
Figura 3.2
41
Figura 3.3
Figura 3.4
Gruparea datelor
42
Destinaia interogrii
Figura3.5
43
Aplicaii
10 S se creeze urmtoarele tabele de date:
44
4. Utilizarea formularelor
Formularul
(forma)
reprezint
o
fereastr
pentru
introducerea sau extragerea datelor utilizatorului, n mod interactiv,
cu ajutorul unor obiecte de interfa crora le sunt asociate
proprieti i metode (secvene de instruciuni secvene de cod).
Definirea unui formular se realizeaz prin utilizarea tehnologiei POO
(Programare Orientat Obiect) care permite modificare proprietilor
obiectelor incluse n formular, ceea ce se reflect n aspectul
formularului i a comportamentului acesteia n diferite situaii.
Form Designer (Constructorul de formulare) este o
component a Visual FoxPro - ului dedicat crerii i modificrii
formularelor precum i generrii secvenei de cod necesare pentru
execuia acestora (fiierele corespunztoare au extensia implicit
scx).
45
prin comanda
Observaie
Barele utilitare
Layout Toolbar
Properties Window
Code Window
46
Butoanele
din
aceast
bar
de
instrumente
permit
deschiderea/nchiderea ferestrelor: Data Environment, Properties,
Code (afiarea secvenei de cod) sau a barelor de lucru:
Form Control Toolbar butoanele de control;
Color Palette Toolbar stabilirea atributelor de culoare;
Layout
Toolbar alinierea obiectelor n formular,
suprapunerea obiectelor, etc.
Valoarea
proprietii
Proprietate
FORMULARUL
Obiect
Sfat
47
Observaii
48
Proprieti i metode
49
Observaie
asociate
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
Button
este
tipic
pentru
startul
51
Standard
Spinner
(casete
Graphical
de
incrementare/decrementare).
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).
Combo Box - List Box (casete cu list - list
derulant). Listele sunt obiecte care ofer utilizatorului posibilitatea
selectrii unor elemente dintr-o mulime finit, afiat total sau
parial pe ecran. Se utilizeaz dou tipuri de liste: liste simple - List
Box i liste derulante sau expandabile - ComboBox care afieaz doar
elementul curent al listei.
52
53
54
(implicit 1).
Proprietatea Style a fiecrui obiect din container
schimb stilul de afiare, avnd valoarea 0Standard sau 1Graphical :
Standard
Graphical
55
Grila
Column1
Coloana1
Header1
Antet1
Text1
Cmp1
Column2
Coloana2
Header2
Antet2
Text2
Cmp2
56
Aplicaii
10 S se editeze urmtorul formular:
Indicaii
Label
FontBold
Caption
.T. -True
Funcia:
Optiongroup
Name
Opt
Caption
Caption
FV
PV
Payment
.T. -True
a1
Text Box
Caption
FontBold
Name
Text Box
FontSize
FontBold
Name
11
.T. -True
a2
FontSize
FontBold
11
.T. -True
FV
PV
Payment
a1
a2
Color
Pallete
Albastru
Primul argument
Color
Pallete
Albastru
Al doilea argument
57
Text Box
Name
a3
Text Box
FontSize
FontBold
Name
11
.T. -True
Rezultat
FontSize
12
FontBold
.T. -True
a3
Color
Pallete
Albastru
Al treilea argument
Color Pallete : Rou
rezultat
Obiect
Afieaz rezultatul
Calculeaz
(se poate
executa i
dublu click pe
obiect)
a2=val(ThisForm.a2.Value)
a3=val(ThisForm.a3.Value)
Opt=ThisForm.Opt.Value
do case
case Opt=1
ThisForm.rezultat.Value=FV(a1,a2,a3)
case Opt=2
ThisForm.rezultat.Value=PV(a1,a2,a3)
case Opt=3
ThisForm.rezultat.Value=Payment(a1,a2,a3)
endcase
) Indicaii
ca
fiind
de
tip
Text
Box
(txtNume,
txtMarca,
58
Obiect
Tip
Proprietate
Valoare
Observaii
proprietate
Form1
Command1
Command2
Command3
Command4
M
Contor
Form
Caption
Actualizare
Button
Caption
Vizualizare
Caption
Adaug
Caption
terge
Caption
Stop
Name
Poziionare pe o anumit
Command
Button
Command
Button
Command
Button
Command
Text Box
marc
Spinner
FontBold
.T. -True
Name
Contor
Value
FontBold
.T. -True
Contorul nregistrrilor
59
Obiect
Metoda
Secvena de cod
Click
Event
browse
Click
Event
append blank
ThisForm.Refresh
ThisForm.Contor.Value=recno()
Click
Event
delete
pack
ThisForm.Refresh
ThisForm.Contor.Value=recno()
ThisForm.Release
Vizualizare
Adaug
terge
Click
Event
Stop
M
Lost Focus
Event
LostFocus
Event
Contor
DownClick
Event
- la fel ca la Contor.LostFocus
UpClick
Event
- la fel ca la Contor.LostFocus
60
Character
Numeric
Numeric
Numeric
30
2
2
5,2
Indicaii
Obiectul GrdCalificative poate fi creat n formular prin tragerea
tabelului Calificative.dbf, cu mouse-ul, din fereastra Data
Environment.
Obiect
Tip
Proprietate
Form
Caption
Button
Command
Caption
Valoare
proprietate
Acordare
calificative
Adaug
FontBold
.T. -True
Form1
Adaug
Observaii
Stop
Caption
Stop
FontBold
FontBold
.T. -True
.T. -True
RowSourceType
RowSource
2 - Alias
Personal.marca+
Personal.nume
Grid
FontSize
10
Header1
Caption
Alignment
Numele persoanei
2 Middle Center
Enabled
.F. - False
Combo
Box
Combo1
61
Permite
selectarea unei
componente din
fiierul
Personal.dbf
GrdCalificative
Text1
Afiarea listei se
face pe dou
coloane
Liniile listei se
adaug prin
acionarea
butonului
Adaug
La fel i pentru
celelalte cmpuri
La fel pentru
coloana 4
Obiect
Metoda
Lost
Focus
GrdCalificative,
Column2,
Text1
Adaug
Click
Event
Stop
Click
Event
Secvena de cod
repl media with (nota1+nota2)/2
append blank
repl nume with personal.marca+personal.nume
thisform.refresh
-introduce n list marca i numele persoanei
ThisForm.Release
-dezactiveaz (nchide formularul)
62
5. Proiectarea meniurilor
Submeniu Vertical
(Submenu)
63
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.
64
65
\-
Efect
Dac este plasat naintea unuia dintre caracterele irului
face ca acel caracter s fie folosit ca o tast pentru
selectarea direct a opiunii respective, atunci cnd
meniul este activat. Caracterul respectiv apare subliniat
n textul opiunii
Determin dezactivarea opiunii respective. Aceasta
apare pe ecran n culori terse, iar alegerea sa nu
declaneaz nici o aciune (chiar dac n cazul su au fost
specificate operaii de executat)
Trasarea unei bare delimitatoare ntre mai multe grupuri
de opiuni ale aceluiai submeniu
66
67
68
Observaie
Aplicaie
S se editeze un meniu pentru crearea i modificarea
structurii unui fiier ct i pentru editarea coninutului lui:
Indicaii
69
6. Generarea rapoartelor
Observaie
70
sau a butonului
din linia
prin comanda:
butonul
comanda:
REPORT FORM <nume raport> PREVIEW
Pagina urmtoare
Tiprire
Prima pagin
Ultima pagin
Selectare pagin
nchidere afiare
Scala de afiare
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]
71
Butoanele
din
aceast
bar
de
instrumente
permit
deschiderea/nchiderea ferestrelor: Data Environment, Data Grouping
(gruparea datelor) sau a barelor de lucru:
o Report Control Toolbar butoanele de control;
o Color Palette Toolbar stabilirea atributelor de culoare;
o Layout Toolbar alinierea obiectelor n formular,
suprapunerea obiectelor, etc.
Sfat
Lucrai cu barele de instrumente asociate Constructorului de
rapoarte. Dac acestea nu sunt afiate utilizai meniul: View,
Toolbars
72
73
74
Field
Line
Rounded Rectangle
Rectangle
Picture/OLE
Bound Control
75
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
77
Aplicaie
10 S se creeze tabelulul de date, mfix.dbf
avnd structura:
20
C 30
N 10
N 10
urmtorul raport:
Indicaii
78
79
sau
deschiderea
unui
proiect
este
declanat
prin
80
Tipul elementului
-
baze de date
tabele izolate
interogri
formulare
rapoarte
etichete
programe
biblioteci API
aplicaii
81
meniuri
fiiere text
alte tipuri de
fiiere
82
83
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
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.
85
86
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:
Numr legitimaie
Numele candidatului
Nota proba 1
Nota proba 2
Media
LEG
NUME
N1
N2
Media
N3
C 15
N 5,2
N 5,2
N 5,2
87
) Indicaie
) Indicaii