BAZE DE DATE
<titlu>45.1. Generalitati
Īn acceptiunea programului Visual Basic o baza de date standard este o colectie de unul sau mai multe tabele. Un tabel este format dintr-un numar de linii si dintr-un numar de coloane. Prima linie are un rol special, ea este linia de antet a tabelului. Fiecare celula a liniei de antet contine un nume de cāmp. Celelalte linii din tabel sunt articolele (īnregistrarile) tabelului. Fiecarui nume de cāmp īi este asociat un anumit tip de data si o anumite dimensiune, exprimata īn octeti.
n acest capitol se va considera o baza de date (de tip Access) care are trei cāmpuri:
NUME (un sir de caractere de lungime maxima 20 caractere, care contine numele unei persoane);
STUDII (un sir de caractere de lungime maxima 4 caractere, care se refera la studiile persoanei, valorile posibile fiind sup, med si elem) ;
PERMIS (de tip logic, care indica daca persoana respectiva poseda sau nu permis de conducere auto).
Baza de date va contine un numar de articole, de exemplu zece, de forma urmatoare:
<table>
*NUME
STUDII
PERMIS
*Popescu Ion
med
True
*Ionescu Vasile
sup
False
*Vasilecu stefan
sup
True
*stetanescu Ion
elem
False
*Constantinescu Ilie
med
True
*IIiecu Angela
med
False
*Turdeanu Ana
med
True
*Ipatescu Maria
sup
False
*Georgescu Cristina
elem
False
*Moldovan Elena
sup
False
</tabel>
Utilitarul Visual Data Manager (VisData), disponibil īn meniul Add-In (extensii) al programului Visual Basic, permite crearea si deschiderea diferitelor tipuri de baze de date.
Pot fi create urmatoarele tipuri de baze de date:
Microsoft Access, versiunile 7.0 si 2.0, de extensie MDB (tipul implicit);
Dbase, versiunile 5.0, IV si III;
FoxPro, versiunile 3.0, 2.6, 2.5 si 2.0;
Paradox, versiunile 5.0,4.x si 3.x;
ODBC;
fisiere text.
Pot fi deschise (prelucrate) urmatoarele tipuri de baze de date:
Microsoft Access, versiunile 7.0 si 2.0, de extensie MDB (tipul implicit);
Dbase, versiunile 5.0, IV si III;
FoxPro, versiunile 3.0, 2.6,2.5 si 2.0;
Paradox, versiunile 5.0,4.x si 3.x;
ODBC;
fisiere text;
Excel.
Bazele de date create cu Visual Basic sau cu utilitarul Visual Data Manager pot fi manipulate cu programul Microsoft Access, si invers, bazele de date create cu Microsoft Access pot fi gestionate prin intermediul programului Visual Basic si al utilitarului Visual Data Manager. Pe parcursul acestui capitol termenul de baza de date va desemna o baza de date creata cu Visual Basic, cu Visual Data Manager sau cu Microsoft Access.
<titlu>45.2. Crearea unei noi baze de date cu Visual Data Manager
Din meniul Add-Ins se alege comanda Visual Data Manager, īn urma acestei actiuni este lansat īn executie utilitarul de gestiune a bazelor de date si pe ecran este afisata fereastra intitulata VisData.
Din meniul File al utilitarului Visual Data Manager se aIege comanda New. Din primul submeniu se aIege tipul bazei de date, Microsoft Access. Din cel de-al doilea submeniu se alege versiunea utilizata: Version MDB. Pe ecran este afisata fereastra de dialog intitulata Select Microsoft Acces Database to Create (selectarea bazei de date Microsoft Acces care urmeaza sa fie creata).
3. Cu ajutorul listei combinate Look in se selecteaza unitatea si calea spre dosarul (directorul), īn care se va salva baza de date, de exemplu C:\My Programs\Date. In cutia de text File name se introduce numele bazei de date, de exemplu BazaMea. In continuare se efectueaza un clic pe butonul de comanda Open (deschidere). Extensia mdb este adaugata automat la numele bazei de date. īn fereastra utilitarului VisData vor apare doua subferestre: Database Window (fereastra de baza de date) si SQL Statement (instructiune SQL*). Linia de titlu a ferestrei Visdata este actualizata cu numele bazei de date, precedat de calea completa spre fisier, īn acest moment baza de date deja exista, īnsa nu contine nici un tabel.
4. Se executa un clic cu butonul drept de mouse īn subfereastra Database Window. Se afiseaza un meniu local, din care se alege comanda New Table (tabel nou), prin care se va adauga un tabel nou (adica primul tabel) īn baza
de date. Se afiseaza o fereastra de dialog intitulata Table Structure, prin care se va defini numele tabelului si structura lui (adica linia de antet a tabelului, format din mai multe nume de cāmpuri).
<nota>
Structured Query Language, limbaj structurat de interogare. 428
</nota>
īn cutia de text Table Name se introduce numele tabelului, de exemplu TabOameni. Acesta este numele primului tabel al bazei de date.
Se executa un clic pe butonul de comanda Add Field (adaugare de cāmp). Pe ecran se afiseaza fereastra de dialog intitulata Add Field, specializata īn definirea structurii tabelului.
7. Īn cutia de text Name se introduce numele primului cāmp al tabelului, de exemplu Nume.
8. Lista combinata Type permite stabilirea tipului cāmpului. Valorile posibile sunt urmatoarele: Boolean, Byte, Integer, Long, Currency, Single, Double, Date/Time, Text, Binary si Memo. Tipul predefmit este Text. Pentru primul cāmp se va alege varianta Text.
9. Īn cutia de text Size se introduce dimensiunea maxima, īn octeti, a primului cāmp, de exemplu 30.
Se executa un clic pe butonul de comanda OK, prin care definitia de cāmp va fi adaugata īn lista cāmpurilor tabelului curent.
Se repeta pasii 7, 8,9 si 10 pentru fiecare cāmp al tabelului, īn cazul de fata vom folosi urmatoarele definitii de cāmpuri:
cāmpul doi: Name = Studii Type = Text Size = 4
cāmpul trei: Name = Permis Type = Boolean Siye = 1
12. Dupa ce au fost definite toate cāmpurile tabelului se va efectua un clic pe butonul de comanda Close, prin care se īnchide fereastra de dialog Add Field si se revine la fereastra Table Structure, īn lista Field List sunt afisate cāmpurile noului tabel.
Table Stiucture
13. Pentru construirea efectiva a noului tabel se va executa un clic pe butonul 430
de comanda Build the Table, īn urma acestei actiuni se revine īn fereastra principala a utilitarului VisData. īn acest moment este definit un tabel (primul tabel) al bazei de date, īnsa acest tabel momentan nu contine nici un articol (īnregistrare).
14. Pentru a reveni īn mediul Visual Basic, din meniul File se va da comanda Exit.
<titlu>45.3. Adaugare sau editare de articole īntr-un tabei existent cu Visual Data Manager
1. Din meniul Add-Ins al programului Visual Basic se alege comanda Visual Data Manager, īn urma acestei actiuni este lansat īn executie utilitarul de gestiune a bazelor de date si pe ecran este afisata fereastra intitulata VisData.
2. Din meniul File al utilitarului Visual Data Manager se alege comanda Open DataBase, subcomanda Microsoft Access. Pe ecran se afiseaza fereastra de dialog intitulata Open Microsoft Acces Database (deschiderea bazei de date Microsoft Acces).
3. Cu ajutorul listei combinate Look in se selecteaza unitatea si calea spre dosarul (directorul), care contine baza de date, de exemplu C:\My Programs\Date. īn cutia de text File name se introduce numele bazei de date, de exemplu BazaMea. īn continuare se efectueaza un clic pe butonul de comanda Open (deschidere), īn fereastra utilitarului VisData vor apare doua subferestre: Database Window (fereastra de baza de date) si SQL Statement (instructiune SQL). Linia de titlu a ferestrei Visdata este actualizata cu numele bazei de date, precedat de calea completa spre fisier.
4. Se executa un clic cu butonul drept al mouse-ului īn subfereastra Database Window pe numele tabelului pentru care vor fi adaugate articole noi (sau al carui articole vor fi editate), īn cazul nostru TabOameni.
Se afiseaza un meniu local, īn care apar comenzile:
Open (deschiderea tabelului selectat)
Design (modificarea structurii tabelului selectat)
Rename (redenumirea tabelului selectat)
DeIete (stergerea tabelului selectat).
Se alege comanda Open. Se afiseaza o fereastra de dialog specializata īn adaugarea si editarea articolelor tabelului.
6. Fereastra este prevazuta cu opt butoane de comanda. Pentru fiecare nume de cāmp al tabelului este rezervat cāte o cutie de text. īn continuare se efectueaza un clic pe butonul de comanda Add. Se afiseaza o fereastra de dialog specializata īn adaugare de articole.
Se completeaza fiecare cutie de text cu informatiile necesare. Pentru a finaliza adaugarea articolului se executa un clic pe butonul Update (actualizarea tabelului), īn urma acestei comenzi se reobtine fereastra afisata la pasul 5 si se poate continua introducerea articolelor īn tabel. Daca se selecteaza comanda Cancel, editarile efectuate sunt abandonate.
Dupa ce au fost introduse toate articolele tabelului se va da comanda Close.
Pentru a reveni īn mediul Visual Basic, din meniul File se va da comanda Exit.
Observatii:
Fereastra afisata la pasul 5 permite efectuarea si a urmatoarelor operatii:
parcurgerea articolelor existente īn tabel; īn acest scop se va folosi bara de defilare orizontala a ferestrei;
selectarea articolului necesar si editarea cāmpurilor articolului respectiv cu ajutorul butonului de comanda Edit; se va afisa o fereastra asemanatoare ferestrei care se obtine cu ajutorul comenzii Add;
stergerea articolului selectat cu ajutorul butonului de comanda Delete; operatia de stergere a articolului respectiv trebuie confirmata de utilizator;
sortarea articolelor tabelului cu ajutorul butonului de comanda Sort, prin introducerea numelui coloanei (cāmpului) dupa care se sorteaza;
filtrarea articolelor tabelului cu ajutorul butonului de comanda Filter, prin introducerea unei expresii de filtrare;
mutarea articolului selectat cu ajutorul butonului de comanda Move, prin introducerea unui numar de linii care specifica directia de mutare (valori negative pentru mutare īnapoi, valori pozitive pentru mutare īnainte);
cautarea unui articol care satisface anumite conditii specificate poate fi realizata cu ajutorul butonului de comanda Find.
<titlu>45.4. Adaugarea unui tabel nou la o baza de date existenta cu Visual Data Manager
Din meniul Add-Ins se alege comanda Visual Data Manager, īn urma acestei actiuni este lansat īn executie utilitarul de gestiune a bazelor de date si pe ecran este afisata fereastra intitulata VisData.
Din meniul File al utilitarului Visual Data Manager se alege comanda Open DataBase, subcomanda Microsoft Access. Pe ecran se afiseaza fereastra de dialog intitulata Open Microsoft Acces Database (deschiderea bazei de date Microsoft Acces).
Cu ajutorul listei combinate Look in se selecteaza unitatea si calea spre dosarul (directorul), care contine baza de date, de exemplu C:\My Programs\Date. īn cutia de text File name se introduce numele bazei de date, de exemplu BazaMea. īn continuare se efectueaza un clic pe butonul de comanda Open (deschidere), īn fereastra utilitarului VisData vor apare doua subferestre: Database Window (fereastra de baza de date) si SQL Statement (instructiune SQL). Linia de titlu a ferestrei Visdata este actualizata cu numele bazei de date, precedat de calea completa spre fisier.
4. Se executa un clic cu butonul drept al mouse-ului īn subfereastra Database Window. Se afiseaza un meniu local, din care se alege comanda New Table (tabel nou),-prin care se va adauga un tabel nou īn baza de date selectata. Se afiseaza o fereastra de dialog intitulata Table Structure, prin care se va defini numele tabelului si stractura lui (adica cāmpurile tabelului).
5. Se repeta pasii 5 - 13 utilizati la crearea unei baze de date.
<titlu>45.5. Controale utilizate īn gestiunea bazelor de date
In procesul de gestiune a bazelor de date programul Visual Basic utilizeaza doua categorii de controale:
Controlul Data, invizibil la executie, care apare īn paleta controalelor
standard, avānd un simbol grafic de forma unei iconite. Controlul este utilizat pentru a conecta o aplicatie Visual Basic cu o sursa de date selectata si pentru a avea acces la articolele unui tabel dintr-o baza de date specificata. Acest control este utilizat si pentru realizarea interfetei cu controale "legate". Controlul Data creeaza un panou format din patru butoane de comanda, prin care se poate naviga printre articolele tabelului: trecerea la primul articol, la articolul precedent, la articolul urmator, la ultimul articol.
2. Un numar de controale vizuale, denumite controale "legate" la controlul Data, care permit afisarea si editarea articolelor tabelului: TextBox, LabeI, CheckBox, ListBox, ComboBox, PictureBox, Image, OLE, DBGrid, DBList, DBCombo, MaskEdit, ProgressBar si RichTextBox. Aceste controale realizeaza o īnlantuire spre anumite cāmpuri ale tabelului selectat, īn momentul īn care un control vizual (de exemplu cutie de text) este īnlantuit la un anumit cāmp, orice modificare a continutului controlului (cutiei de text) este īnregistrata automat īn cāmpul asociat.
Urmatoarea figura ilustreaza modul de īnlantuire a acestor elemente:
Fig.pag. 435 sub forma unei scheme.
Aplicatiile Visual Basic orientate spre prelucrarea bazelor de date trebuie sa fie realizate astfel:
Se aseaza pe forma un control Data si se configureaza proprietatile controlului. Cele mai importante proprietati ale acestui control sunt urmatoarele: Connect, DataBaseName, RecordSource, RecordsetType, Exclusive, ReadOnly si Options.
Se aseaza pe forma diferite controale vizuale (legate) si se configureaza
proprietatile DataSource si DataField ale acestora. Proprietatea DataSource trebuie īncarcata cu numele controlului Data (de exemplu Datal). Proprietatea DataFieId trebuie īncarcata cu numele unui cāmp al tabelului care se afiseaza īn controlul vizual. Continutul cāmpului desemnat este asociat controlului vizual.
Proprietatile cele mai importante ale unui control Data si modul de configurare a acestor proprietati sunt centralizate īn tabelul urmator:
<tabel>
*Proprietate
Semnificatie
*Connect
Numele programului cu care a fost creata baza de date. Valoarea implicita este Access.
*DatabaseName
Numele bazei de date, cu unitatea si cu calea completa, de exemplu: C:\My Programs\Date\BazaMea.mdb
*RecordSource
Numele tabelului bazei de date, de exemplu: TabOameni
*RecordsetType
Tipul obiectului Recordset care urmeaza sa fie creat de controlul Data. Valorile posibile sunt urmatoarele:
Table
Dynaset (valoare implicita)
Snapshot
*Exclusive
Valoare booleana care stabileste daca baza de date este deschisa pentru un singur utilizator sau pentru mai multi utilizatori. Valoarea implicita este False, care permite acces multiutilizator.
*ReadOnly
Valoare booleana care stabileste daca articolele bazei pot fi editate sau nu. Valoarea implicita este False, prin care se permite editarea articolelor.
*Options
Un numar īntreg prin care se pot preciza anumite optiuni referitoare la obiectul Recordset care urmeaza sa fie creat de controlul Data. Valoarea implicita este 0.
*BOFAction
Stabileste actiunea controlului Data īn momentul īn care proprietatea BOF (Begin Of File) este adevarata (pozitia articolului curent este īn fata primului articol īntr-un obiect Recordset). Valorile posibile sunt:
Move First Primul articol ramāne articolul curent. Valoare implicita.
BOF: Pentru primul articol se declanseaza evenimentul Validate al controlului Data.
Acest eveniment este urmat de evenimentul Reposition referitor la articolul invalid (BOF). īn acest moment (la controlul Data) butonul de trecere la articolul precedent va fi inhibat.
*EOFAction
Stabileste actiunea controlului Data īn momentul īn care proprietatea EOF (End Of File) este adevarata (pozitia articolului curent este dupa ultimul articol īntr-un obiect Recordset). Valorile posibile sunt:
Move Last: Ultimul articol ramāne articolul curent. Valoare implicita.
EOF: Pentru ultimul articol se declanseaza evenimentul Validate al controlului Data. Acest eveniment este urmat de evenimentul Reposition referitor la articolul invalid (EOF), īn acest moment Ia controlul Data butonul de trecere la articolul urmator va fi inhibat.
Add New: Adaugarea unui articol nou dupa ultimul articol. Pentru ultimul articol se declanseaza evenimentul Validate al controlului Data. īn continuare se apeleaza automat metoda AddNew si evenimentul Reposition referitor la noul articol.
</tabel>
Principalele controalele vizuale sunt urmatoarele:
<titlul>Controlul TextBox
Afiseaza continutul unui cāmp specificat din articolul actual al bazei de date, sub forma unei cutii de text. Specificarea cāmpului se realizeaza prin proprietatea DataField. Continutul cāmpului afisat poate fi modificat.
<titlul>Controlul Label
Afiseaza continutul unui cāmp specificat din articolul actual al bazei de date, sub forma unei etichete. Specificarea cāmpului se realizeaza prin proprietatea DataField. Continutul cāmpului afisat nu poate fi modificat.
<titlul>Controlul CheckBox
Afiseaza continutul unui cāmp specificat din articolul actual al bazei de date, sub forma unei cutii de validare. Specificarea cāmpului se realizeaza prin proprietatea DataField. Continutul cāmpului afisat poate fi modificat. Controlul este utilizat pentru vizualizarea valorilor logice. Daca valoarea cāmpului este True, cutia de validare este selectata. Daca valoarea cāmpului este False, cutia de validare nu este selectata.
<titlul>Controlul ListBox
Afiseaza continutul unui cāmp specificat din articolul actual al bazei de date, sub forma unei liste simple. Specificarea cāmpului se realizeaza prin proprietatea DataField. Valoarea actuala a cāmpului este indicata prin elementul selectat al listei. Daca valoarea actuala nu apare īn lista, atunci nici un element al listei nu este selectat. Daca utilizatorul selecteaza un element al listei, atunci elementul selectat devine valoarea curenta a cāmpului. Lista contine un numar de elemente, care reprezinta valorile posibile ale cāmpului desemnat de proprietatea DataField. Valorile afisate īn lista sunt stabilite de proprietatea List; īn executie elementele listei trebuie sa fie īncarcate cu metoda AddItem.
<titlul>Controlul ComboBox
Afiseaza continutul unui cāmp specificat din articolul actual al bazei de date, sub forma unei liste combinate. Specificarea cāmpului se realizeaza prin proprietatea DataField. Valoarea actuala a cāmpului este indicata prin elementul selectat al listei. Daca valoarea actuala nu apare īn lista, atunci nici un element al listei nu este selectat. Daca utilizatorul introduce un text īn componenta cutie de text sau daca selecteaza un element al listei, atunci textul introdus sau elementul selectat devine valoarea curenta a cāmpului. Lista contine un numar de elemente, care reprezinta valorile posibile ale cāmpului desemnat de proprietatea DataField. Valorile afisate īn lista sunt stabilite de proprietatea List; īn executie elementele listei trebuie sa fie īncarcate cu metoda AddItem.
<titlul>Controlul DBGrid
Afiseaza toate articolele unei baze de date īntr-o retea de celule. Continutul diferitelor celule poate fi editat, īn fiecare linie a retelei se afiseaza un articol al bazei de date. Celulele unei linii reprezinta cāmpurile unui articol. Dupa ultima linie a retelei poate fi introdus un nou articol al bazei de date. Controlul DBGrid nu este standard.
Simbolul grafic aferent este o iconita.
<titlul>Controlul DBList
Este asemanator controlului ListBox, īnsa elementele listei sunt īncarcate automat, deci utilizatorul nu mai trebuie sa initializeze lista apelānd metoda AddItem. Proprietatile DataSource si RowSource trebuie sa fie initializate cu humele componentei Data. Proprietatile DataField, BoundColumn si ListField trebuie sa fie initializate cu numele cāmpului din lista care se afiseaza. Controlul DBList nu este standard. Simbolul grafic aferent este o iconita.
<titlul>Controlul DBCombo
Este asemanator controlului ComboBox, īnsa elementele listei sunt īncarcate automat, deci utilizatorul nu mai trebuie sa initializeze lista apelānd metoda AddItem. Proprietatile DataSource si RowSource trebuie sa fie initializate cu numele componentei Data. Proprietatile DataField, BoundColumn si ListFieId trebuie sa fie initializate cu numele cāmpului din lista care se afiseaza. Controlul DBCombo nu este standard. Simbolul grafic aferent este o iconita.
Tabelul urmator centralizeaza componentele vizuale utilizate des īn gestiunea bazelor de date, precum si proprietatile care trebuie sa fie initializate cu o valoare īn perioada de elaborare a proiectului sau īn executie:
<tabel>
*Componenta
Proprietati care trebuie sa fie initializate
*DBGrid
DataSource
*TextBox
DataSource
DataField
*Label
*DataSource
DataField
*CheckBox
DataSouvce
DataField
*ListBox
DataSource
DataField
Elementele listei.
*ComboBox
DataSource
DataField
Elementele listei.
*DBList
DataSource
*RowSource
DataField
*BoundColumn
*ListField
*DBCombo
DataSource
*RowSource
DataField
*BoundColumn
*ListField
</tabel>
Īn momentul lansarii īn executie a aplicatiei, īnainte de declansarea evenimentului Load pentru forma, controlul Data este initializat automat. Daca proprietatile Connect, DatabaseName, RecordSource, Options, Exclusive, ReadOnIy si RecordsetType ale controlului Data au fost configurate corect, atunci pe baza lor programul Visual Basic va crea un obiect de tip Recordset. Acest obiect va fi accesibil prin intermediul proprietatii Recordset a controlului Data. Cu ajutorul proprietatii Recordset pot fi apelate diferite metode referitoare gestiunea bazei de date si pot fi examinate diferite proprietati ale bazei.
Principalele metode aferente obiectului Recordset sunt urmatoarele:
<tabel>
*Metoda
Functie
Data1 .Recordset.AddNew
Creeaza o zona tampon īn memorie pentru noul articol al bazei de date si goleste controalele vizuale īnlantuite la controlul Data. Adaugarea noului articol la baza de date trebuie finalizata prin apelarea metodei Update.
*Data1. Recordset. Update
Depune articolul nou adaugat īn baza de date (salveaza īn baza de date continutul zonei tampon creata de metoda AddNew, adica se realizeaza actualizarea articolelor bazei de date).
*Data1 .Recordset.Delete
sterge articolul curent al bazei de date.
*Data1 .Recordset.MoveFirst
Trecere la primul articol al bazei de date.
*Data1 .RecordsetMoveLast
Trecere la ultimul articol al bazei de date.
*Data1.Recordset.MoveNext
Trecere la urmatorul articol al bazei de date.
*Data1 .Recordset.MovePrevious
Trecere la articolul anterior al bazei de date.
</tabel>
Principalele proprietati aferente obiectului Recordset sunt urmatoarele:
<tabel>
*Proprietate
Semnificatie
*Data1. Recordset.AbsolutePosition
Comunica numarul articolului actual al bazei. Primul articol are numarul 0. De regula se foloseste cu ajutorul unei secvente de forma urmatoare:
Dim act As Long act = Datai .Recordset.AbsolutePosition + 1
*Data1 .Recordset.RecordCount
Comunica numarul articolelor bazei. De regula se foloseste cu ajutorul unei secvente de forma urmatoare:
Dim nrart As Long
Data1 .RecordsetMoveLast
nrart = Data1 .Recordset.RecordCount
*Data1 .Recordset.Bookmark
Semn de carte. Marcheaza pozitia articolului actual īn baza de date sau realizeaza pozitionarea pe un articol marcat anterior. De regula se foloseste cu ajutorul unei secvente de forma urmatoare:
Dim p As String
p = Data1 .RecordsetBookmark ' marcare
Data1 .Recordset.Bookmark = p ' pozitionare
*Data1 .Recordset.EOF
*Aceasta proprietate livreaza valoarea True daca pozitia articolului curent este dupa ultimul articol al bazei, False īn caz contrar.
*Data1 .RecordsetBOF
Aceasta proprietate livreaza valoarea True daca pozitia articolului curent este īn fata primului articol al bazei, False īn caz contrar.
</tabel>
<titlu>Evenimentul Reposition al unui control Data
Este declansat īn momentul īn care un oarecare articol al bazei de date devine articolul curent al bazei. Prototipul procedurii atasate acestui eveniment este:
Private Sub Datal.Reposition ()
End Sub
Aceasta procedura-eveniment de regula este utilizata pentru afisarea numarului articolului curent, de exemplu:
Datal.Caption = "Articulul curent = "_
& (Data1.Recordset.AbsolutePosition + 1)
EXEMPLUL 1:
Aceasta aplicatie ilustreaza modul de creare a unui tabel Access cu ajutorul programului Visual Basic. Se presupune ca structura tabelului TabOameni (memorata īn baza de date BazaMea.mdb) a fost deja stabilita cu ajutorul utilitarului Visual Data Manager, īnsa acest tabel īnca nu contine nici un articol. Forma aplicatiei contine un control Data, o cutie de text, o lista si o cutie de validare, īn procedura-eveniment Load a formei lista este īncarcata cu trei elemente: sup, med si elem. īn perioada de elaborare a proiectului controalele au fost configurate astfel:
<tabel>
*Nume control
Configurarea proprietatilor
*Data1
Connect = Access
*DatabaseName = C:\My Programs\Date\BazaMea.mdb
RecordSource = TabOameni
*EOFAction = 2 (Add New) Nu este valoare implicita!
*Text1
DataSource = Data1
*DataField = Nume
*List1
DataSource = Data1
* DataField = Studii
Check
DataSource = Data1
* DataField = Permis
</tabel>
Pentru adaugarea unui nou articol se deplaseaza la ultimul articol al listei si se actioneaza butonul "sageata dreapta" al controlului Data. īn continuare se completeaza cutia de text cu numele angajatului, din lista se selecteaza nivelul lui de pregatire, iar cu ajutorul cutiei de validare se stabileste daca persoana poseda sau nu permis de conducere, īn continuare se actioneaza un buton "sageata" al controlului Data. Fereastra afisata de aplicatia poate avea aspectul urmator:
Fig.pag. 441
Textul sursa al programului este:
Option Explicit
Private Sub Form_Load
Forml.Caption = "Crearea si afisarea bazei de date"
Labell.Caption = "Nume"
Label2.Caption = "Studii"
Checkl.Caption = "Permis"
Listl.Clear
Listl.AddItem "sup"
Listl.AddItem "med"
Listl.AddItem "elem"
End Sub
Private Sub Datal_Reposition() Datal.Caption = "Articolul:"_
& (Datal.Recordset.AbsolutePosition + 1)
End Sub
EXEMPLUL 2:
Aceasta aplicatie ilustreaza modul de utilizare a unui control DBGrid. Forma contine un control Data, avānd numele Datal si un control DBGrid, avānd numele DBGridl. īn perioada de elaborare a proiectului aceste controale au fost configurate astfel:
<tabel>
*Nume control
Configurarea proprietatilor
*Data1
Connect = Access
*DatabaseName = C:\My Programs\Date\BazaMea.mdb
RecordSource = TabOameni
*DBGridl
DataSource = Data1
*AllowAddNew = True (pot fi adaugate articole noi)
*AllowDelete = True (pot fi sterse articole selectate)
</tabel>
Fereastra afisata de aplicatie poate avea aspectul urmator:
Textul sursa al programului este:
Option Explicit
Private Sub Form_Load
Form1.Caption = "Controlul DBGrid"
End Sub
Private Sub Datal_Reposition()
Data1.Caption = "Articolul:"_
& (Data1.Recordset.AbsolutePosition + 1)
End Sub
EXEMPLUL3:
Aceasta aplicatie ilustreaza modul de utilizare a obiectului Recordset atasat unui control Data. Forma aplicatiei contine un control Data avānd numele Data1, o cutie de text avānd numele txtNume, o lista avānd numele lstStudii, o cutie de validare avānd numele chkPermis si patru
butoane de comanda. Butonul de comanda avānd numele cmdAdd pregateste adaugarea unui nou articol la baza de date. Operatia de adaugare trebuie finalizata prin actionarea butonului de comanda cmdUpdate. Daca se renunta la adaugarea articolului pregatit, atunci se va actiona butonul de comanda cmdCancel. Prin actionarea butonului de comanda cmdDelete se sterge articolul actual al bazei. Operatia de stergere trebuie validata de utilizator, īn procedura-eveniment Load atasata formei lista este īncarcata cu trei elemente: sup, med si elem. īn perioada de elaborare a proiectului controalele au fost configurate astfel:
<tabel>
*Nume control
Configurarea proprietatilor
*Data1
Connect = Access
*DatabaseName = C:\My Programs\Date\BazaMea.mdb
RecordSource = TabOameni
*txtNume
DataSource = Data1
*DataField = Nume
*lstStudii
DataSource = Data1
*DataField = Studii
*chkPermis
DataSource = Data1
*DataField = Permis
</tabel>
Fereastra afisata de aplicatie are aspectul urmator:
Fig. Pag. 443 dub forma unei ferestre.
Textul sursa al programului este:
Option Explicit
Dim Pozitie As String
Private Sub Form_Load
Form1.Caption Data1.DatabaseName & " " & Datal.RecordSource
lstStudii.Clear
lstStudii.AddItem "sup"
lstStudii.AddItem "med"
lstStudii.AddItem "elem"
End Sub
` Add Adaugarea unui articol nou la baza de date.
` Operatia trebuie validata (Update) sau invalidata (Cancel)
Private Sub cmdAdd_Click()
` Memorarea pozitiei articolului actual īn baza de date. Eventual se va reveni la
' aceasta pozitie, prin comanda Cancel.
Pozitie = Datal.Recordset.Bookmark
cmdAdd.Enabled = False 'Add invalidat
cmdUpdate.Enabled True 'Update validat
cmdCancel.Enabled True 'Cancel validat
cmdDelete.Enabled = False 'Delete invalidat
Data1.Recordset.AddNew 'Creeaza zona tampon
' pentru nouaīnregistrare si goleste controalele legate de baza de date.
txtNume.SetFocus
End Sub
' Delete stergerea unui articol din baza de date
Private Sub cmdDelete_Click()
Dim-Raspuns As Integer
Raspuns = MsgBox("Se poate sterge ?",_
vbQuestion vbYesNo, "stergere")
If Raspuns = vbYes Then 'stergere acceptata de utilizator
Data1 Recordset. Delete 'stergerea articolului actual
Data1 Recordset. MoveNext 'Se trece la articolul urmator, daca exista
If Data1.Recordset.EOF True Then 'Daca s-a sters ultimul articol,
Data1. Recordset. MovePrevious 'atunci se trece la articolul precedent.
End If
End If
End Sub
' Update Acceptarea operatiei de adaugare
Private Sub cmdUpdate_Click()
Data1. Recordset. Update 'Memorarea noului articol in baza de date.
cmdUpdate.Enabled = False
cmdCancel.Enabled = False
cmdDelete.Enabled True
cmdAdd.Enabled = True
End Sub
' Cancel Anularea operatiei de adaugare
Private Sub cmdCancel_Click()
Data1.Recordset.Bookmark = Pozitie
cmdUpdate.Enabled = False
cmdCancel.Enabled = False
cmdDelete.Enabled = True
cmdAdd.Enabled = True
End Sub
Private Sub Datal_Reposition()
Data1.Caption = "Numarul articolului actual: " & _
(Data1.Recordset.AbsolutePosition +1)
End Sub1
EXEMPLUL 4:
Aceasta aplicatie este o varianta a aplicatiei din exemplul 1. Deosebirea consta īn faptul, ca īn loc de o lista simpla au fost utilizate doua controale specializate īn tratarea bazelor de date: DBList si DBCombo. Se mentioneaza faptul, ca elementele acestor controale sunt īncarcate automat de programul Visual Basic (deci nu cade īn sarcina utilizatorului īncarcarea lor cu metoda Add). īn perioada de elaborare a proiectului aceste controale au fost configurate astfel:
<tabel>
*Nume control
Configurarea proprietatilor
*Data1
Connect = Access
*DatabaseName = C:\My Programs\Date\BazaMea.mdb
RecordSource = TabOameni
*EOFAction = 2 (Add New) Nu este valoare implicita!
*Text1
DataSource = Data1
*DataField = Nume
*DBList1
*DataSource = Data1
* DataField = Studii
*RowSource = Data1
*BoundColumn = Studii
*ListField = Studii
*DBCombo1
*DataSource = Data1
*DataField = Studii
*RowSource = Data1
*BoundColumn = Studii
*ListField = Studii
*Check1
DataSource = Data1
*DataField = Permis
</tabel>
Fereastra afisata de aplicatie are aspectul urmator:
Fig.pag. 445 sub forma unei ferestre.
Textul sursa al programului este:
Option Explicit
Private Sub Datal_Reposition()
Data1.Caption "Articolul:"_
& (Datal,Recordset.AbsolutePosition
End Sub
|