Programarea Si Gestionarea Bazelor de Date In Visual Basic
Introducere
Baze de date
Când vine vorba despre stocarea informațiilor, pentru unii acest termen înseamnă o agenda veche în care sunt trecute toate datele importante de care au nevoie: adrese, numere de telefon, informații financiare ș.a.m.d.. Pentru cei din domeniul IT și nu numai, înseamnă sisteme dedicate special stocării datelor importante.
Primele baze de date erau dezvoltate pe sisteme mainframe și erau manipulate de oameni special pregătiți pentru a gestiona aceste sisteme. Aceste baze de date erau simple Sisteme de Gestiune a Bazelor de Date (SGBD). Primul Sistem de Baze de Date Relaționale (SGBDR) a fost lansat de Oracle Corporation si folosea limbajul de interogare SQL. Deși versiunea originală a fost dezvoltată pentru sisteme VAX/VMS, Oracle a fost unul dintre primii furnizori care a lansat o versiune si pentru sistemele PC pe sistemul de operare DOS.
La jumătatea anilor ‘80, Sybase a lansat propriul său SGBDR – SQL Server. Acesta avea biblioteci client pentru accesul la baza de date. Asigurând suportul pentru proceduri rezidente (astăzi denumite „proceduri stocate") si interoperabilitatea cu o diversitate de rețele, SQL Server a devenit un produs de succes în scurt timp, mai ales în mediile client/server.
O dată cu dezvoltarea sistemelor personale (PC), au apărut și primele aplicații de baze de date care foloseau un singur fișier pentru a stoca toată informația din baza de date (denumite baze de date „flat file"). Ele erau de tip Xbase, un limbaj care s-a răspândit foarte repede fiind folosit în special la manipularea datelor. Sistemele care l-au folosit, daca mai este nevoie sa le enumăr, au fost dBase, FoxBase, FoxPro. Aceste versiuni rulau sub sistemul MS-DOS și împărtășeau limitările acestuia. Cea mai răspândită aplicație care folosea limbajul xBase a fost FoxPro, sistem dezvoltat de firma Fox Software. Chiar și în zilele noastre există firme care stochează date extrem de importante în baze de date FoxPro, iar cel mai cunoscut exemplu este cel al organizației care gestionează Euro Tunel.
La începutul anilor 90, firma Microsoft Corporation a lansat aplicația Access, aplicație care se bazează în mare parte pe logica de stocare a sistemului FoxPro, sistem care fusese achiziționat de firmă în 1989. Aplicația Access a devenit, în scurt timp, cea mai folosită aplicație de gestiune a bazelor de date „flat file" de pe sistemele personale. Ajuns acum la versiunea 11 (denumită XP), sistemul de stocare s-a schimbat fiind pregătit să fie scalat oricând către o baza de date Microsoft SQL Server. Totodată, începând cu versiunea 7 i s-a adăugat un limbaj de programare dedicat (Visual Basic for Applications – VBA), bazat pe limbajul de programare Visual Basic. Prin intermediul acestuia se puteau manipula datele mai ușor, se puteau folosi automatisme pentru diverse interogări, afișări etc. Începând cu versiunea 9, limbajul integrat este compatibil cu Visual Basic și cu limbajul folosit de MS SQL Server.
În privința sistemelor server, piața s-a dezvoltat uimitor de repede deoarece s-a constatat cât de folositoare sunt sistemele dedicate acestui lucru. Oracle a lansat și și-a dezvoltat baza de aplicații server, astăzi ajungând la versiunea 9. Începând cu versiunea 8i, au fost introduse extensii orientate pe obiecte. Lansată cu ocazia Oracle OpenWorld, Oracle 9i reprezintă cea mai completă infrastructura pregătită pentru rularea aplicațiilor Internet. Oracle 9i include Oracle 9i Database și Oracle 9i Application Server si pachetul de unelte de dezvoltare Oracle 9i Developer Suite.
În ceea ce privește corporația Microsoft, aceasta a lansat tot în anul 2000 serverul de baze de date SQL Server 2000. Aplicația se dorește a fi un concurent direct pentru aplicațiile Oracle, iar pentru acest fapt i s-a adăugat suport 100% pentru limbajul XML prin intermediul căruia se poate interoga direct serverul dintr-un browser (dacă serverul a fost configurat să suporte această facilitate).
Tot în 2000, compania IBM a lansat varianta 7 a aplicației DB 2. Aceasta aplicație, ca și Oracle, este implementata pe mai multe platforme (inclusiv Linux), fiind o aplicație pur obiectuală. Si pentru ca am ajuns la aplicații de baze de date obiectuale, trebuie să amintim și de aplicația companiei Computer Associates, Jasmine. Deoarece despre aceasta aplicație nu se știu prea multe în România, promit ca am sa revin cu mai multe detalii.
Pe sistemele Linux, cel mai folosit server de baze de date este MySQL. Cu toate că există un alt produs gratuit (MySQL este gratuit atât timp cât aplicația dezvoltata nu este revânduta) – PostgreSQL, MySQL rămâne preferatul programatorilor de Linux. De ce? Pentru că limbajul cel mai folosit pe partea de server web – PHP – dispune de o extensie MySQL înglobată. Dar nu numai acest lucru a influențat folosirea MySQL. Una dintre alegeri a fost și datorită ușurinței administrării acestui server, el dispunând de un client de accesare inclus.
Există sute de modalități de depozitare a datelor în baza de date. Cele mai utile aplicații de computer stochează date, dar adesea ele o fac în moduri proprii, specifice.
Felurite tendințe curente stânjenesc universalitatea datelor, nu cea din urmă fiind importanța crescândă a calculului distribuit și a calculului client / server. O tendință de bază astăzi implică să lucrezi armonios cu aplicații de date răspândite pe două sau mai multe mașini. Internetul și Intranetul divid datele din baza de date.
În tot mai mare măsură, oamenii de afaceri își dau seama că o mulțime de informații importante rămân neutilizate sau neintegrate, fiindcă nu sunt într-un format „adecvat”. Companiile se instalează pe Internet și se interesează de reacțiile la produsele lor. Tot mai mult, acele reacții vin sub formă de e-mail-uri. Foarte puține companii pot face uz pe scară largă de informația din acele e-mail-uri, le pot sorta, căuta sau exploatade o manieră organizată. Și mai puține companii încă pot utiliza eficient datele pe bază de HTML, cum ar fi cataloagele Web ale competitorilor lor.
Nici o tehnologie de baze de date nu se poate compara actualmente cu popularitatea DAO (Data Access Objects). DAO este robust, bine testat și utilizat în prezent de majoritatea programatorilor de baze de date. Ei înțeleg modelul său obiect, adică toate acele colecții cu metodele și proprietățile lor.
DAO are mai multe puncte slabe și de aceea este depășit. DAO este cel mai bun în gestionarea bazelor de date de birou (mai degrabă decât client/server, Internet sau Intranet). Nu este bine proiectat pentru formatele vechi ale bazelor de date (deși multe întreprinderi au material stocat în formate moștenite), dar nici pentru noile formate de date: HTML, DHTML, e-mail, text plat sau alte „ciudățenii”. DAO lucrează cel mai bine cu baze de date relaționale, date organizate în tabele, câmpuri, indexuri și relații.
Visual Basic 6.0
Visual Basic este un mediu de dezvoltare de înaltă productivitate, conceput pentru sistemul de operare Windows, cu ajutorul căruia într-un timp record se pot elabora diferite aplicații Windows. Aflat la versiunea 7.0 (beta 1), lansată în anul 2000, produsul reprezintă un vârf al sistemelor de programare sub Windows. Începând cu versiunea 3, Visual Basic a devenit instrumentul ideal pentru programatorii bazelor de date de pe tot mapamondul. La început a fost versiunea 3, cu DAO (Data Access Objects), apoi RDO (Remote Data Access) inclus în versiunea 4 și apoi capacitatea de a construi componente robuste cu ActiveX cu versiunile 5 și 6.
Istoria sa începe cu ideea celor de la Microsoft de a crea un mediu de programare vizual, bazat pe limbajul de programare BASIC (Beginners All-Purpose Simbolic Instruction Code), creat în 1960 de Thomas Kurtz și John Kemeny. Totuși, limbajul utilizat în Visual Basic a evoluat mult față de concepția originală, la ora actuală conținând sute de instrucțiuni, funcții și cuvinte cheie; multe dintre ele se referă direct la interfața grafică a utilizatorului cu sistemul de operare Windows.
Pentru a se potrivi cât mai bine diferitelor tipuri de utilizatori, Microsoft a elaborat trei ediții ale Visual Basic-ului, fiecare conținând ajutor software interactiv precum și comanda Books Online, prin care se poate afișa o documentație completă, prezentată într-un format ușor de parcurs. Cele trei ediții sunt:
Visual Basic Learning – permite crearea aplicațiilor pe 32 de biți, care rulează sub Windows 95/98/2000/NT . Include în afara controalelor standard și controalele de bază referitoare la gestiunea bazelor de date.
Visual Basic Proffesional – prezintă toate facilitățile din ediția Visual Basic Learning și în plus diferite controale suplimentare (Internet, Cristal Report Writer).
Visual Basic Enterprise – conține tot ceea ce cuprinde ediția Proffesional și în plus administratorul de automatizare, administratorul de componente, instrumente de gestiune și multe altele.
Iată câteva din argumentele pe care le aduce Microsoft pentru a-și încuraja potențialii clienți:
Integrare perfectă cu orice Windows
Ușurință în crearea de aplicații cu baze de date
Efciență mărită cu Visual Database Tools
Posibilitatea de a folosi cunoștințele de Visual Basic pentru crearea de macro-uri pentru Microsoft Office folosind Visual Basic Applications Edition.
Aceste argumente împreună cu multe altele au reușit se pare să convingă o mulțime de programatori, Visual Basic fiind cel mai folosit mediu de dezvoltare.
Primul pas în crearea unei aplicații în Visual Basic este realizare interfeței, partea vizuală cu care utilizatorul va intra în contact. Formularele și controalele constituie elementele de bază din care este realizată interfața.
Formularele sunt obiecte care-și etalează proprietățile, care la rândul lor le definesc aspectul, metodele, comportamentul și evenimentele, prin care definesc interacțiunea cu utilizatorul. Stabilind proprietățile formularului și scriind cod în Visual Basic pentru a răspunde la evenimentele sale, veți adapta obiectele la cerințele dumneavoastră.
Controalele sunt obiecte care sunt conținute în obiectele formular. Fiecare tip de control are propriul set de proprietăți, metode și evenimente adecvat unui anumit scop. Unele controale ce pot fi folosite în cadrul aplicațiilor se potrivesc mai bine la introducerea sau afișarea textului. Alte controale permit accesul la alte aplicații și pot accesa datele acestora ca și cum ele ar face parte din propriul dumneavoastră cod.
Baze de date
Concepte
Conceptul de bază de date a apărut în anul 1969, la prezentarea primului raport CODASYL. Ideea de bază în organizarea datelor se întemeia pe existența unui fișier de descriere globală a datelor prin care se realiza independența programelor față de date și a datelor față de programe.
Prin intermediul acestui fișier se realiza accesul utilizatorilor. Acest fișier de date conținea colecțiile de date și legăturile dintre ele. Ulterior, acest concept a fost preluat și dezvoltat pentru bazele de date rețea, apoi relaționale și orientate pe obiect.
O bază de date poate fi definită de una sau mai multe colecții de date (Ki) aflate în interdependență, împreună cu descrierea datelor și a relațiilor dintre ele, (B=(K1, K2, … )). O bază de date trebuie să îndeplinească următoarele condiții:
să asigure o independență sporită a datelor față de programe și invers;
concepția structurii bazei de date trebuie făcută astfel încât să se asigure informațiile necesare și suficiente pentru necesitățile de informare și decizie;
să asigure o redundanță minimă și controlată a datelor;
să permită un acces rapid la informațiile stocate în baza de date.
Din punctul de vedere al criteriilor luate în considerare, bazele de date se împart:
după orientare:
generalizate;
specializate;
după modelul de date:
ierarhice;
rețea;
relaționale;
orientate pe obiect;
după amploarea geografică:
locale;
distribuite;
după limbajele utilizate:
autonome (dispun de limbaje proprii);
cu limbaj gazdă;
mixte;
Arhitectura bazei de date cele și controalele constituie elementele de bază din care este realizată interfața.
Formularele sunt obiecte care-și etalează proprietățile, care la rândul lor le definesc aspectul, metodele, comportamentul și evenimentele, prin care definesc interacțiunea cu utilizatorul. Stabilind proprietățile formularului și scriind cod în Visual Basic pentru a răspunde la evenimentele sale, veți adapta obiectele la cerințele dumneavoastră.
Controalele sunt obiecte care sunt conținute în obiectele formular. Fiecare tip de control are propriul set de proprietăți, metode și evenimente adecvat unui anumit scop. Unele controale ce pot fi folosite în cadrul aplicațiilor se potrivesc mai bine la introducerea sau afișarea textului. Alte controale permit accesul la alte aplicații și pot accesa datele acestora ca și cum ele ar face parte din propriul dumneavoastră cod.
Baze de date
Concepte
Conceptul de bază de date a apărut în anul 1969, la prezentarea primului raport CODASYL. Ideea de bază în organizarea datelor se întemeia pe existența unui fișier de descriere globală a datelor prin care se realiza independența programelor față de date și a datelor față de programe.
Prin intermediul acestui fișier se realiza accesul utilizatorilor. Acest fișier de date conținea colecțiile de date și legăturile dintre ele. Ulterior, acest concept a fost preluat și dezvoltat pentru bazele de date rețea, apoi relaționale și orientate pe obiect.
O bază de date poate fi definită de una sau mai multe colecții de date (Ki) aflate în interdependență, împreună cu descrierea datelor și a relațiilor dintre ele, (B=(K1, K2, … )). O bază de date trebuie să îndeplinească următoarele condiții:
să asigure o independență sporită a datelor față de programe și invers;
concepția structurii bazei de date trebuie făcută astfel încât să se asigure informațiile necesare și suficiente pentru necesitățile de informare și decizie;
să asigure o redundanță minimă și controlată a datelor;
să permită un acces rapid la informațiile stocate în baza de date.
Din punctul de vedere al criteriilor luate în considerare, bazele de date se împart:
după orientare:
generalizate;
specializate;
după modelul de date:
ierarhice;
rețea;
relaționale;
orientate pe obiect;
după amploarea geografică:
locale;
distribuite;
după limbajele utilizate:
autonome (dispun de limbaje proprii);
cu limbaj gazdă;
mixte;
Arhitectura bazei de date cuprinde:
baza de date propriu-zisă – se memorează colecțiile de date;
Sistemul de Gestiune a Bazei de Date (SGBD) – ansamblu de programe care realizează gestiunea și prelucrarea complexă a bazei de date;
un set de proceduri manuale și automate;
un dicționar al bazei de date – informații despre date, structura acestora, elementele de descriere a semanticii, elemente de statistică, documentații, etc.;
mijloace hard utilizate;
personal implicat.
Complexitatea problemelor care apar în activitatea unei unități economice implică prelucrarea operativă a datelor și obținerea de rezultate (informații) care sunt suportul deciziei managerilor.
Volumul acestor date este în continuă creștere, ceea ce determină necesitatea organizării și memorării lor pe suporturi tehnice adresabile, organizare care poate fi făcută în fișiere sau în baze de date.
Fișierele reprezintă colecții de date omogene din punct de vedere al conținutului, colecții care reprezintă înregistrări fizice. O înregistrare fizică poate conține una sau mai multe înregistrări logice. Înregistrarea logică este definitivă ca o unitate de prelucrare din punct de vedere al programului utilizator. Organizarea datelor în fișiere și accesul la ele sunt asigurate de un set de programe dedicate care sunt reunite sub denumirea de Sistem de Gestiune a Fișierelor (SGF), componenta a Sistemului de Operare (SO).
Conceptul de bază de date pornește de la ideea că există un fișier de descriere globală a datelor, prin care se realizează independența programelor față de date și acestora față de programe. Astfel, putem spune ce o bază de date este o colecție de date aflate în interdependență, împreună cu descrierea datelor și a relațiilor dintre ele.
Acest ansamblu structurat de date conține structuri de date legate funcțional între ele. Datele organizate în astfel de colecții trebuie să fie interogabile prin conținut după orice fel de criterii si trebuie să ofere posibilitatea regăsirii structurii datelor.
Descrierea unei baze de date presupune:
determinarea structurilor de date;
legăturile dintre aceste structuri;
regulile care să asigure coerența datelor, reguli care se mai numesc și reguli de integritate.
Sisteme de Gestiune a Bazelor de Date
Sistemul de gestiune a bazelor de date (SGBD) reprezintă interfața între utilizator și baza de date efectivă, care are ca rol crearea, actualizarea și consultarea acesteia. De aici rezulta că SGBD este de fapt un instument pentru asamblarea, codificarea, protecția și regăsirea datelor din baza de date. Dar, pentru a realiza aceste deziderate, SGBD are ca obiectiv principal separarea descrierii datelor față de programele de aplcație care se realizează prin abstractizarea datelor memorate în baza de date. O bază de date se poate reprezenta pe trei niveluri: extern, conceptual și intern. Acestor niveluri le corespunde o schemă a bazei de date.
Schema externă presupune stabilirea efectivă a datelor ce nu constituie obiectivul bazei de date, necesară unui utilizator sau unui grup de utilizatori. Fiind o subschema a schemei conceptuale ea este de fapt o sursă pentru întocmirea acesteia.
Conceptual, prin analiza schemei externe și eliminând redundanțele apare ce se numește schema concepuală.
Schema internă implementează schema conceptuală prin utilizarea unui SGBD. O aceeași bază de date poate avea definite mai multe scheme externe, o singură schemă conceptuală și o singură schemă internă.
Principalele obiective ale unui SGBD sunt:
Independența fizică a datelor, care constă în capacitatea de a putea schimba organizarea internă a datelor și structurilor de înregistrare, fară a modifica programele de utilizator. Aceasta mai înseamnă și independența schemei interne față de cea conceptuală. De exemplu, având anumite criterii pentru accesul la date, se pot adauga noi indecși, se pot reorganiza fișiere fara o schimbare a schemei conceptuale.
Independența logică a datelor constă în posibilitatea modificării schemei externe fară a modifica schema conceptuală, aceasta rezultând din necesitățile utilizatorilor de a-și modifica în timp cerințele informaționale.
Această independență logică a datelor permite vizualizarea datelor în maniera dorită de utilizatori, evoluția schemelor externe pentru fiecare grup de utilizatori, fără a afecta schema conceptuală.
Manipularea datelor prin limbaje neprocedurale. Aceasta presupune existența a două categorii de utilizatori interactivi.
O categorie de utilizatori neprofesioniști are nevoie de limbaje de interogare simple, apropiate de limbajul natural, cum este, de exemplu, SQL (Structured Query Language). O altă categorie, formată din programatorii de aplicație, vor folosi limbaje procedurale precum: C, COBOL, PL/1, limbaje orientate obiect (C++, Java), limbaje vizuale (Visual C++, Visual Basic, etc.).
Administrarea cât mai ușoară a datelor.
Un SGBD are posibilitatea de a pune la dispoziție instrumente pentru descrierea datelor din punct de vedere al schemei externe, cât și al schemei interne. Administrarea datelor este desemnată de totalitatea operațiilor de descriere și de modificare a descrierii datelor, pentru a evita conflictele care pot surveni în definirea acestora. Acestă operație se face de un grup restrâns de specialiști care se vor numi administratori de date.
Performanțele sporite de acces la date sunt date de doi parametrii care evidențiază eficacitatea acestui tip de acces: numărul de tranzacții pe secunda si timpul de răspund. Acești parametrii sunt dependenți de modul în care SO al calculatorului, sub care lucrează SGBD-ul, aloca și partajează resursele fizice (unitatea centrală, memorie internă, memorie externă).
Funcțiile unui SGBD
Funcțiile unui SGBD se pot grupa în:
memorarea pe suport extern prin sistemul de gestiune al fișierelor;
gestiunea datelor și a legaturilor dintre ele pentru o regăsire rapidă;
introducerea și extragerea datelor sub forma cerută de utilizator prin SGBD-ul extern.
Ultimele SGBD-uri au incorporate funcții avansate pentru gestiunea procedurilor și a evenimentelor.
Funcția de descriere a datelor presupune ca SGBD-ul să poată defini datele (schma extenă, schema conceptuală, schema internă și legăturile corespondente) cu ajutorul unui limbaj specializat DDL (Description Data Language), într-o formă numită schema sursă, să compileze apoi această schemă într-o formă internă numită schema obiect. Dacă un SGBD suportă cele trei niveluri de descriere a datelor (extern, conceptual, intern) vor exista si trei administratori de date, și anume:
administratorul bazei de date, care va defini schema internă și regulile de trecere de la schema conceptuală la cea internă;
administratorul unitații economice, care are rolul de a defini schema conceptuală;
administratorul aplicației, care va defini schema externă și regulile de corespondență cu schema conceptuală.
Aceste scheme, precum și procedurile de trecere de la o schemă la cealaltă sunt înregistrate în dicționarul de date, care are două parți:
dicționarul unității economice, care cuprinde schema conceptuală cu procedurile acesteia;
dicționarul bazei de date, care conține schema externă și cea internă împreună cu procedurile de trecere aferente. Informațiile memorate în aceste dicționare sunt în forma sursă sau obiect. Dicționarul de date organizat sub formă de baze de date poartă numele de metabază.
I. O funcție esențială a unui SGBD este interogarea bazei de date.
De obicei, in această funcție se includ căutarea și extragerea datelor, precum și operațiile de actualizare a bazei de date, concretizate în: adăugare, modificare, ștergere.
La început, primii pași în crearea și utilizarea SGBD-urilor presupunea o existență a unor limbaje procedurale prin care localizarea datelor se facea prin căutări succesive. SGBD-urile din ulimele generații implementeaa funcția de interogare a bazei de date cu ajutorul unor limbaje declarative, care au posibilitatea căutării datelor după conținut, fără însă a preciza procedurile de acces. Astfel de limbaje trebuie să permită definirea oricarei cereri de interogare a bazei de date, care este formulată de utilizator, și din acestă categorie face parte limbajul SQL. De menționat este faptul că o cerere de interogare se derulează în patru etape, și anume:
formulare, care folosesc limbajul de manipulare a datelor (DMC – Data Manipulation Language), care este un subset al SQL-ului;
compilare;
optimizare;
execuție.
De asemenea, SGBD-urile trebuie să aibă obligatoriu un compilator (analizor) al cererilor de interogare, care să permită analiza sintactică și evaluarea acesteia. Pentru validarea cererilor, compilatorul utilizează dicționarul de date și le descompune în operatori relaționali pe care îi structurează sub formă de arbore. În arborele astfel construit nodurile indică operatori, iar frunzele reprezintă relațiile. O cerere de interogare compilată este apoi transmisă către etapa de optimizare ăn care se caută modul cel mai rapid de execuție a acesteia. Rezultatul acestei etape constă în transformarea cererilor de interogare în tranzacții. Tranzacția reprezintă una sau mai multe cereri de interogare, care se vor executa din punct de vedere logic, împreună, ca o entitate funcțională. Tranzacția se execută prin doua operații principale:
gestiunea tranzacțiilor concurente;
execuția în sine.
II. Conversia datelor este una din posibilitățile pe care le oferă SGBD-ul pentru a trece datele în cele trei niveluri: extern, conceptual și intern, motiv pentru care SGBD-ul trebuie să cunoască corespondențele dintre aceste niveluri.
III. Controlul integrității datelor. Această funcție presupune ca SGBD-ul să asigure coerența datelor, adică toate regulile implicite sau explicite care trebuie să asigure integritatea datelot (restricții de integritate).
IV. Gestiunea tranzacțiilor. Tranzacția are rolul de a trece o bază de date în alta (într-o altă stare) cu condiția ca baza de date să rămână într-o stare coerentă.
Conceptele cu care se lucrează sunt:
atomicitatea tranzacțiilor (Transaction Atomicity), ceea ce înseamnă că o tranzacție este executată total sau nu este executată deloc;
corectitudinea tranzacșiilor (Transaction Correctness), care semnifică respectarea coerenței bazei de date după execuția tranzacțiilor;
izolarea tranzacțiilor, ceea ce înseamnă că modificările din exterior nu sunt percepute până când nu se termină tranzacția.
V. Securitatea datelor. SGBD-ul are posibilitatea de a garanta securitatea datelor printr-un mecanism de control al accesului la date și de resturare a acesteia în caz de pene sau erori. Mai nou, ultimele SGBD-uri au o serie de alte funcții, cum ar fi:
posibilitatea de execuție a unor proceduri atunci când sunt îndeplinite anumite condiții asupra bazelor de date;
reguli de inferențe, care permit deducerea unor date noi pe baza celor existente;
posibilitatea de a gestiona obiecte complexe, cum ar fi: hărți, grafice, filme, ceea ce a dus la apariția bazelor de date multimedia.
Etapele realizării unei baze de date
În proiectarea unei baze de date sunt prevăzute mai multe etape:
analiza sistemului sau a domeniului economic și a cerințelor informaționale asociate, pentru care se realizeauă baza de date;
proiectarea structurii bazei de date, adică elaborarea schemei conceptuale externe și a schemei conceptuale interne;
încărcarea datelor în baza de date;
exploatarea și întreținerea bazei de date.
Analiza sistemului economic presupune patru etape:
analiza componentelor sistemului și a legăturilor dintre acestea, sau analiza structurală în urma căreia rezultă modelul structural sau static al sistemului;
analiza stărilor sistemului și a tranzacțiilor posibile între aceste stări, în raport cu anumite evenimente. În urma acestei analize rezultă modelul dinamic sau temporal;
analiza cerințelor informaționale, în urma căreia se obține modelul funcțional sau transformațional al modelului economic;
integrarea modelelor sistemului economic (structural, dinamic și funcțional), în scopul corelării și completării lor.
Tehnica diagramelor entitate-asociere
Analiza sistemului economic are ca obiectiv evidențierea componentelor din cadrul sistemului pentru care urmează să se colecteze și să se memoreze în baza de date, precum și evidențierea legăturilor dintre aceste componente.
Tehnica entitate-asociere permite construirea modelului structuralsub forma unei diagrame entitate-asociere, prin parcurgerea următorilor pași:
Identificarea componentelor (entităților) din cadrul sistemului economic. Fiecare entitate prezintă mai multe realizări. În urma acestei etape se elaborează o primă formă a diagramei entitate-asociere.
Identificarea asocierilor dintre entități și codificarea acestora. Legăturile dintre entități sunt reprezentate prin arce neorientate, care fac legătura între nodurile ce reprezintă entitățile participante la asociere.
Tipul sau forma legăturii se exprimă cu ajutorul cardinalității. Cardinalitatea asocierilor exprimă numărul minim și numărul maxim de realizări (instanțe) de entitate, care pot fi asociate cu o realizare a partenerului de asociere. Cardinalitatea se exprimă prin perechi de numere, câte o pereche pentru fiecare entitate din cadrul legăturii.
Identificarea atributelor aferente entităților și asocierile dintre entitați.
Stabilirea atributelor de identificare a entităților.
Tipuri de legături între entități
După cardinalitatea asocierii. În acest caz, se are în vedere gradul asocierii și obligativitatea participării entităților la asociere. După gradul asocierii (maximele cardinalității), identificăm:
asociere de tip „unu la unu”
asocieri de tip „unu la mulți”
asocieri de tip „mulți la mulți”
După obligativitatea participării entităților la asociere (minimele cardinalității), există:
asocieri parțiale
asocieri totale
Concomitent, după gradul asocierii și după obligativitatea participării la asociere, sunt:
asocieri pațiale de tip „unu la unu”
asocieri totale de tip „unu la unu”
asocieri parțiale de tip „unu la mulți”
asocieri totale de tip „unu la mulți”
asocieri parțiale de tip „mulți la mulți”
asocieri totale de tip „mulți la mulți”
După numărul de entități distincte care participă la asociere:
asocieri binare (între două entități distuncte)
asocieri recursive (asocieri ale entităților cu ele însele)
asocieri complexe (între mai mult de două entități distincte)
Asocierile parțiale sunt acele asocieri care nu obligă participarea la asociere a tuturor entităților vizate, ci numai a unora dintre ele sau a nici uneia. Această obligativitate este reflectată de minimele cardinalității. Valoarea zero a uneia dintre minime arată lipsa de obligativitatea participării partenerului la această asociere, în timp ce o valoare mai mare decât zero exprimă obligativitatea participării la asociere.
Tipuri de atribute
Atributele exprimă caracteristici ale componentelor domeniului economic analizat sau ale asocierilor dintre aceste componente.
De obicei, atributele sunt asociate entităților, dar ele pot descrie și asocierile dintre acestea.
Atributele pot fi clasificate astfel:
Atribut compus sau bloc, constituit din cel puțin alte două atribute. Valoarea sa este reprezentată de valorile atributelor componente;
Atribut calculat sau dedus. Valoarea sa nu este cunoscută direct, ci calculată pe baza valorilor altor atribute;
Atributul simplu este acel atribut care are valori atomice;
Atributul repetitiv sau multivaloare. Este un atribut care la un moment dat are mai multe valori ce apar sub forma unor liste de valori.
Un atribut de identificare se numește cheie dacă se caracterizează prin unicitatea valorii sale pentru fiecare instanță a entității.
Baze de date relaționale
Generalități
Ideea unui model asamblistal datelor pornește de la faptul că orice structură de date poate fi reprezentată prin una sau mai multe tabele de date, în care trebuie să existe și informații de legătură pentru a asigura corespondența între tabele.
Baza matematică pentru modelul relațional este dată de teoria ansamblurilor. Orgnizarea datelor în baze de date relaționale asigură o interdependență mai mare a programelor de aplicație față de organizarea datelor și utilizează limbaje de manipulare a datelor și instrumente eficace de control al coerenței și redundanței datelor.
Avantajele modelului relațional al datelor:
Programele de aplicație pentru o bază de date relațională nu fac apel la pointeri, fișiere inverse sau alte elemente ale schemei interne ale bazei de date.
Utilizează metode și tehnici de control al coerenței și redundanței datelor. Modelul relațional, prin tehnica normalizării relațiilor, permite definirea unei structuri conceptuale a datelor optime, prin care să se minimizeze riscurile apărute la actualizare.
Oferă facilități multiple de definire și manipulare a datelor prin folosirea unor limbaje procedurale bazate pe algebra relațională, și limbaje neprocedurale, având la bază calculul relațional.
Ameliorează integritatea și confidențialitatea datelor, prin utilizarea restricțiilor de integritate și a relațiilor virtuale.
Modelul relațional se compune din:
Structura relațională a datelor. Datele sunt organizate sub forma unor tablouri bidimensionale de date care poartă numele de relații. Asocierea dintre relații se reprezintă explicit prin atribute de legătură. Atributele figurează într-una din relațiile implicate în asociere, în cazul legăturilor „unu la mulți” sau sunt plasate într-o relație distinctă construită special pentru exprimarea legăturilor între relații (în cazul legăturilor de tip „mulți la mulți”). O bază de date relațională reprezintă un ansamblu de relații prin care se prezintă atât datele, cât și legăturile dintre ele.
Operatorii modelului relațional definesc operațiile care se pot efectua asupra relațiilor în scopul realizării funcțiior de prelucrare aplicate bazei de date, respectiv consultarea, inserarea, modificarea și stergerea datelor.
Restricțiile de integritate ale modelului relațional permit definirea stărilor coerente ale bazei de date.
Restricțiile de integritate ale modelului relațional
Aceste restricții se numesc și reguli de integritate și definesc cerințele pe care trebuie să satisfacă datele din baza de date pentru a fi corecte și coerente în raport cu ceea ce reprezintă.
Restricțiile de integritate se pot clasifica în:
Structurale, care se definesc în raport cu egalitatea sau inegalitatea unor valori din cadrul lor. Din această categorie fac parte:
Restricția de unicitate a cheii;
Restricția referențială
Restricția entității;
Dependențele între date.
De integritate de comportament propriu unei anumite baze de date. Aceste restricții au în vedere semnificația valorilor din cadrul bazei de date.
Utilizarea modelului relațional nu impune definirea și verificarea tuturor tipurilor de restricții de integritate, ci numai a unor restricții minimale.
Acestea sunt obligatoriu de definit și de respectat atunci când se lucrează cu modelul relațional. Din această categorie de restricții fac parte:
Restricția de unicitate a cheii
Restricția referențială
Restricția entității
Alte restricții, cum ar fi: dependențele între date și cele de comportament.
Restricțiile de integritate minimale sunt definite în raport cu noțiunea de cheie a unei relații.
Relația se reprezintă cu o mulțime de tupluri și pentru că o mulțime nu poate conține elemente duplicate, relația nu poate prezenta tupluri identice. Identificarea unui tuplu se face cu ajutorul cheii. Cheia unei relații R reprezintă un ansamblu minimal de atribute prin care se poate identifica în mod unic orice tuplu din R. Cheia este formată fie dintr-un singur atribut, fie din totalitatea atributelor din schema relației respective. În primul caz se numește cheie simplă, iar în cazul al doilea cheie compusă.
Intr-o relație pot exista mai multe atribute sau combinații de atribute cu proprietatea de identificare a tuplurilor. Astfel de chei formate din combinații de atribute se numesc chei candidate. Din acest motiv, administratorul bazei de date va alege o cheie care să idendifice efectiv tuplurile și aceasta se va numi cheie primară; restul de chei candidate vor purta numele de chei alternate.
Un grup de atribute din cadrul unei relații care conține o cheie a relației se numește supercheie.
O cheie externă reprezintă un atribut sau un grup de atribute dintr-o relație R1, ale cărei sau căror valor sunt definitepe același sau aceleași domeniu/domenii ca și cheie primară a unei relații R2 și care are rolul de a modela asocierea între entitățile reprezentate prin relațiile R1 și R2. R1 este denumită relație care se referă, în timp ce R2 este relație referită.
Modelul relațional are următoarele restricții de integritate minimale:
Restricția de unicitate a cheii, care impune într-o relație R care are cheia K, oricare ar fi tuplurile t1 și t2, să fie satisfăcută inegalitatea: t1(K)≠t2(K), aceasta însemnând că într-o relație nu pot exista două tupluri co o aceeași valoare pentru atributele cheie.
Restricția referențială (integritatea referirii), ce impune ca, într-o relație R1 care referă o relație R2, valorile cheii externe să figureze printre valorile cheii primare din relația R2 sau să fie valori NULL (nedefinite). Relațiile R1, R2 trebuie să fie distincte una de alta. O asociere nu poate exista decât între parteneri cunoscuți, deci care sunt deja definiți.
Restricția entității (integritatea entității). Ea impune ca într-o relație atributele cheii primare să fie nenule. Unicitatea cheii presupune ca la încărcarea unui tuplu, valoarea cheii să fie cunoscută pentru a putea verifica faptul că această valoare nu este deja încărcată.
O altă restricție de integritate este restricția care se referă la dependența datelor; ea semnifică modul în care datele depind unele de altele, iar această dependență poate fi:
a) dependența funcțională, prin care se poate identifica un atribut/grup de atribute prin intermediul altui atribut/grup de atribute.
Fiind dată o relație R, un atribut Y din R este dependent funcțional de un alt atribut X din R, dacă și numai dacă fiecare valoare a lui X are asociată o valoare precisă a lui Y.
Notație: , sau .
Partea stângă a dependenței funcționale se numește determinant, iar partea dreaptă se numește determinat. Pentru exemplul de mai sus X este determinantul, iar Y este determinatul;
b) dependențele multivaloare sunt acele tipuri de dependențe între date în care un atribut/grup de atribute poate prezenta mai multe valori pentru o singură valoare a unui alt atribut/grup de atribute;
c) dependențele joncțiune. Reconstruirea relației R se realizează prin joncționarea proiecțiilor: P1, P2 și P3, unde P1, P2, P3 sunt proiecții ale relației R descompuse. Din acest motiv, dependența din cadrul relației R a primit numele de dependență joncțiune.
Formele normale ale relației
Anomaliile care apar în lucrul cu baza de date relațională se produc datorită dependențelor nedorite ce se manifestă între datele din cadrul relațiilor bazei de date. Aceste dependențe determină creșterea redundanței datelor și reducerea flexibilității structurii bazei de date. Anomaliile care pot apărea sunt:
De actualizare, datorate dependențelor funcționale parțiale;
De actualizare, datorate dependențelor funcționale tranzitorii;
De actualizare, datorate dependențelor multivaloare.
Formele normale ale relațiilor într-o bază de date relațională sunt definite în raport cu anomaliile care apar în lucrul efectiv cu aceste baze de date.
În cadrul relațiilor dintr-o asfel de bază de date apar dependențe nedorite, care vor fi înlăturate, folosind urmatoarele forme normale:
FN1: O relație R este în FN1 (formă normală 1) dacă domenile pe care sunt definite atributele relației sunt constituite numai din valori elementare. Un tuplu nu trebuie să conțină atribute sau grupuri de atribute repetitive.
FN2: O relație R este în FN2 (formă normală 2) dacă este în FN1 și oricare din atributele noncheie este dependent funcțional complet de cheia primară a relației.
FN3: O relație R este în FN3 (formă normală 3) dacă este în FN2 și atributele noncheie nu sunt dependente tranzitiv de cheia primară a relației.
FN Boyce-Codd: O relație R este în BCFN dacă dependențele funcționale netriviale care se manifestă în cadrul relației conțin în partea stângă, ca determinant, o cheie candidată.
Fie relația: ; să presupunem că relația R are cheia (K1, K2) și că în cadrul relației se manifestă, alături de alte dependențe funcționale, și de dependența: . De aici rezultă că relația R nu este în forma normală Boyce-Codd.
FN4: O relație R este în FN4 (formă normală 4) dacă este în cadrul ei nu se manifestă mai mult de o dependență multivaloare.
FN5: O relație R este în FN5 (formă normală 5) dacă fiecare dependență joncțiune este implicată printr-un candidat cheie al lui R.
Sisteme de gestiune ale bazelor de date relaționale (SGBDR)
SGBDR-ul este un SGBD care utilizează, ca și concepție de organizare a datelor, modelul relațional.
În acest sens, Codd a formulat 13 reguli ce exprimă cerințele pe care trebuie să le satisfacă un SGBDR:
R0: regula privind gestionarea datelor la nivel de relație.
Acest lucru înseamnă că sistemul trebuie să utilizeze ca unitate de informații relația, adică limbaje, ca SQL, care să opereze pe întreaga relație.
R1: regula privind reprezentarea logică a datelor.
Toate datele din BDR (baza de date relațională) trebuie să fie reprezentate explicit la nivel logic într-un singur mod, și anume ca valori în tebelele de date. Aeasta înseamnă că toate datele trebuie să fie memorate și prelucrate în același mod. Informațiile privind numele de tabele, coloane, domenii, definițiile tabelelor virtuale și restricțiile de integritate trebuie să fie memorate tot în tabele de date (catalog).
R2: regula privind garantarea accesului la date.
Orice dată din BDR trebuie să poată fi accestă prin specificarea numelui de tabelă, a valorii cheie primare și numelui de coloană.
R3: regula privind valorile NULL.
Sistemul trebuie să permită declararea și manipularea sistematică a valorilor NULL, cu semnificația unor date lipsă sau inaplicabile. Valorile NULL care diferă de șirurile de caractere „_” sau de șirurile vide de caractere sunt importante în implementarea restricțiilor de integritate.
R4: regula privind metadatele.
Descrierea bazei de date trebuie să se prezinte la nivel logic în același mod cu descrierea datelor propriu-zise, sistemele nu trebuie să facă diferențieri în ce privește definirea și tratarea datelor și a metadatelor, utilizând o singură structură, cea relațională.
R5: regula privind facilitățile limbajelor utilizate.
Trebuie să existe cel puțin un limbaj de nivel înalt ale cărui instrucțiuni să poată exprima oricare din următoarele operații: definirea tabelelor de bază, definirea tabelelor virtuale, manipularea datelor (interactiv sau prin program), definirea restricțiilor de integritate, autorizarea accesului, precizarea limitelor tranzacțiilor.
R6: toate tabelele virtuale care teoretic sunt posibil de actualizat trebuie să fie practic actualizate.
R7: regula pentru inserări, modificări și ștergeri în baze de date.
Această regulă exprimă cerința ca în operațiile prin care se schimbăconținutul bazelor de date să se lucreze la un moment dat pe toată relația.
R8: regula privind independența fizică a datelor.
Programele de aplicație nu trebuie să fie afectate de schimbările efectuate în modul de reprezentare a datelor sau în metodele de acces. O schimbare a structurii fizice a datelor nu trebuie să blocheze funcționarea programelor de aplicație.
R9: regula privind independența logică a datelor.
Programele de aplicație nu trebuie să fie afectate de schimbările efectuate asupra relațiilor bazelor de date.
R10: regula privind restricțiile de integritate.
Aceste restricții trebuie să poată fi definite în limbajul utilizat de sistem pentru definirea datelor și să fie memorate în catalogul bazelor de date și nu în cadrul programelor de aplicație.
R11: regula privind distribuirea geografică a datelor.
Limbajul de manipulare a datelor utilizat de sistem trebuie să permită ca, în situația în care datele sunt distribuite, programele de aplicație să fie logic aceleași cu cele utilizate în cazul în care datele sunt fiăic centralizate.
R12: regula privind prelucrarea datelor la nivelul de bază.
Dacă sistemul posedă un limbaj de bază de nivel scăzut orientat pe prelucrarea de tupluri și nu pe prelucrarea mulțimilor (relațiilor), acest limbaj nu trebuie utilizat, deoarece nu respectă lucrul cu restricțiile de integritate sau restricțiile introduse prin utilizarea limbajelor relaționale de nivel înalt. Se obișnuiește ca, în conformitate cu tipul de cerințe pe care le exprimă, regulile să fie grupate în 5 categorii:
reguli de bază: R0, R12;
reguli structurale: R1, R6;
reguli privind integritatea datelor: R3, R10;
reguli privind manipularea datelor: R2, R4, R5, R7;
reguli privind independența datelor: R8, R9, R11;
Nici unul dintre SGBD-urile disponibile astăzi nu respectă în totalitate cerințele celor 13 reguli ale lui Codd.
Totuși, un SGBD este minimal relațional dacă satisface condițiile:
Toate datele din bazele de date sunt reprezentate prin valori în tabele;
Nu există pointeri observabili de către utilizator între tabele, în sensul că operațiile cu relații nu fac apel la pointeri, indecși, fișiere inverse, etc.;
Sistemul suportă operatori relaționali de proiecție, selecție și join natural, fără limitări impuse. Unitatea de informație cu care se lucrează este relația;
Sistemul suportă operațiile de bază ale algebrei relaționale;
Sistemul suportă două dintre restricțiile de integritate de bază ale modelului relațional, și anume: unicitatea cheii unei relații și restricția referențială.
Securitatea bazei de date
Asigurarea securității bazei de date presupune interzicerea accesului neautorizat la date și se realizează cu un set de măsuri de protcție umană, software și hardware. Astfel se pot stabili parole pe baza cărora să le poată fi permis accesul la resursele sistemului de calcul. SGBD-ul poate activa și un jurnal pentru urmărirea accesului la baza de date, cu ajutorul lui fiind posibilă detectarea încercărilor de acces neutorizat. Pentru cererile de I/O transmise sistemului de operare de către SGBD, sunt posibile verificări suplimentare referitoare la utilizarea corectă a fișierelor sau a funcțiilor sistemului de operare.
Hardware-ul poate oferi și el o protecție suplimentară prin transferarea datelor numai în zone de memorie care sunt controlate de SGBD.
Modalitățile de asigurare a bazei de date sunt:
autorizarea și controlul acceului la date, care presupune identificarea utilizatorilor, restricționarea accesului acestora la date, precum și stabilirea de restricții pentru datele accesate.
SGBD-urile actuale folosesc pentru identificarea utilizatorului, parole, fiecare parolă fiind asociată cu anumite drepturi de acces la date. SGBD-ul va menține pentru fiecare parolă o listă de privilegii pentru user-ul care folosește acea parolă.
User-ii pot fi asociați unor grupuri, la drepturile fiecăruia adăugându-se drepturile stabilite pentru grupul respectiv. Administratorul bazei de date este user-ul care, implicit, are toate drepturile asupra bazei de date, precum și dreptul de a stabili sau revoca privilegii pentru ceilalți utilizatori.
Utilizatorii obișnuiți sunt cei care nu au în proprietate obiecte și nu au alte privilegii decât celel moștenite ca membrii unui grup sau menționate explicit de administratorul bazei de date sau de proprietarii de obiecte.
Definirea și utilizarea viziunilor (a schemei externe a bazei de date). Viziunile sunt partiții logice ale bazei de date. Ele sunt diferite pentru diferiți utilizatori în raport cu necesitățile acestora de a avea acces la date. Securitatea datelor va fia asigurată prin definirea tuturor drepturilor necesare unui utilizator, pentru o viziune, și revocarea drepturilor, pentru obiecte inițiale.
Utilizatorul nu va avea acces la efectuarea unor operații asupra viziunii care să afecteze obiectele inițiale.
Realizarea de proceduri speciale. Sunt SGBD-uri care au facilitatea definirii unor proceduri care să fie păstrate la nivelul sistemului, întt-o formă precompilată. În aceste proceduri se vor specifica explicit operațiile care se vor efectua aupra datelor.
Criptarea datelor este operația de codificare a datelor pe timpul stocării sau al transportului lor, astfel încât descifrarea lor să poată fi facută numai de posesorii autorizați de cod. La nivelul SGBD-ului aceastăfacilitate are două forme:
Existența unor rutine speciale care realizează criptarea datelor la cerere sau automat;
Existența unor instrumente care permit utilizatorului să-și realizeze rutine proprii de criptare.
Cum funcționează o bază de date
O bază de date este o colecție de informații organizate într-un anumit fel și depozitate într-un calculator. Dacă aveți acasă o agendă de adrese, aceasta este aproape o bază de date. Tot ce are nevoie pentru a fi recunoscută ca o bază de date propriu-zisă este să copiați informația într-un computer și s-o salvați – într-o manieră ordonată – într-un fișier.
Gândiți-vă însă ce se întâmplă de fapt dacă luați numele, adresele și numerele de telefon ale tuturor prietenilor și rudelor dumneavoastră și copiați acele date în calculator. Dactilografierea pur și simplu la întâmplare a datelor nu va avea ca rezultat o stocare organizată a informației. Mai întâi trebuie să definiți o structură de bază de date. Ea poate fi similară cu structura din agenda dumneavoastră de adrese.
Există diferite modele de baze de date, dar noi ne vom concentra asupra tipului care este cel mai răspândit – baza de date relațională. O bază de date relațională are trei calități principale:
Datele sunt stocate în tabele (subdivizate în câmpuri);
Puteți atașa (uni) într-o relație, tabelele astfel încât mai târziu să puteți extrage date din mai multe tabele în același timp.
Puteți interoga tabelele, obținând seturi de înregistrări (submulțimi ale unuia sau mai multor tabele)
Să presupunem că agenda dumneavoastră cuadrese conține informații despre o persoană per pagină. Fiecare pagină, după completarea ei cu informații, va fi echivalentă, în termenii bazelor de date, cu o înregistrare. Primul rând de pe fiecare pagină a agendei are eticheta Nume, următorul Adresă, etc. În termenii bazelor de date, aceste etichete se numesc câmpuri.
Vă puteți imagina un câmp ca un tip de informație; fiecare câmp are propriul său nume, dar o înregistrare nu are nume. Ea conține datele propriu-zise, informația concretă ce completează câmpurile. În terminologia bazelor de date, o înregistrare este deseori desemnată ca o linie, iar un câmp mai este numit și coloană.
În funcție de tipul de programare care-l faceți, dacă numele unui câmp este alcătuit din două cuvinte ar putea fi necesară închiderea sa în paranteze sau, uneori, în ghilimele simple. Bazele de date în stilul Access cu care am lucrat în Visual Basic permit utilizarea spațiilor. Totuși să reținem următorul aspect: majoritatea bazelor de date relaționale nu permit acest lucru, astfel că trebuie să recurgeți la caracatere de subliniere pentru separarea cuvintelor.
Să revenim la agenda de adrese ce ilustrare a bazelor de date. Întreaga agendă este echivalentă cu un tabel întrâo bază de date a unui computer. Tebelele sunt colecții de datela scară relativ mare, cum ar fi întreaga dumneavoastră agendă, dar o bază de date poate conține mai multe tabele – conținutul unei baze de date îl definiți atunci când o creați, astfel că determinați câte tabele are și ce câmpuri conține fiecare tabel.
Poate că ați marcat în tabel zilele de naștere ale prietenilor și rudelor dumneavoastră. Ați putea introduce aceste date într-un al doilea tabel al bazei dumneavoastră de date numit, eventual, Cadouri, în care veți avea de asemenea un câmp Nume. Această caracteristică vă poate fi utilă mai târziu, deoarece vă va permite să uniți tabelele. Puteți astfel să interogați ambele tabele deoadată. Rezultatul acestei interogări este făcut disponibil în ceea ce se numește set de înregistrări.
Bazele de date având un singur tabel supradimensionat sunt mai puțin flexibile și mai pușin eficiente decât tabelele multiple și mai mici. Bineînțeles că dacă baza de date este mică, organizarea ei nu contează foarte mult. Dar dacă proiectați o bază de date multifuncțională cu 250.000 de înregistrări, orice mică facilitate contează. Prin crearea mai multor tabele, puteți să îmbunătățiți organizare bazei dumneavoastră de date, să scroeți mai ușor programe pentru ea și, în general, să găsiți mai ușor înregistrările.
Figura 1 Exemplu de bază de date cu tabele multiple
Când specificați o relație între tabele în timp ce proiectați o bază de date, spuneți de fapt că s-ar putea să am nevoie de informații suplimentare despre acest individ, cau în care ele pot fi găsite în acest nou tabel folosind un câmp, indexulș primar, folosit în ambele tabele.
Astfel să presupunem că într-un tabel Ion Ionescu are un număr CodAbonat egal cu 666 (două tabele din baza de date au fiecare acest câmp CodAbonat). Pentru a afla mai multe despre Ionescu, caut același număr CodAbonat în tabelul al doilea, unde pot găsi stocate informații suplimentare despre el.
Într-o bază de date relațională, informașia nu este automat stocată alfabetic (sau în ordine numerică, pentru un câmp numeric). Într-un câmp Nume Andrei poate să apară după Zamfir.
Esențialul este că nu ne putem aștepta ca înregistrările să fie într-o anumită ordine. Când cineva adaugă o nouă înregistrare la baza de date aceasta este pur și simplu așezată la sfârșitul tabelului. Atunci când proiectați o bază de date, puteți preciza că unele din câmpurile sale trebuie să fie indexuri. Un index este ceva precum acele indentări profilate, de mărimea degetului mare de pe marginea unui dicționar. Fiecare profil este imprimat cu o literă diferită a alfabetului.
Mediul vizual de programare Visual Basic
Dezvoltarea unei aplicații în Visual Basic
Introducere
Este nevoie doar de câteva minute pentru a construi prima aplicație în Visual Basic. Putem crea interfața cu utilizatorul „desenând” controale, cum ar fi casetele cu text sau butoanele de comnezi, pe un formular. Apoi, vom fixa proprietățile formularului și controalelor pentru a specifica diverse valori ale lor precum titlurile, culorile și dimensiunile. În fine, vom scrie cod pentru a da viață aplicației. Pașii de bază pe care îi vom parcurge la crearea primei aplicații ne vor arăta care sunt principiile pe care le vom aplica pentru oricare altă aplicație pe care o vom realiza. Acest capitol face o trecere în revistă a procesului de dezvoltare a aplicației, descrie termenii și cunoștințele de care avem nevoie pentru a folosi meniul Visual Basic.
Concepte din Visual Basic
Pentru a înțelege procesul de dezvoltare al aplicației, este de mare ajutor înțelegerea unora din conceptele cheie pe care se bazează Visual Basic. Deoarece Visual Basic este un limbaj de dezvoltare în Windows este necesară o oarecare familiarizare cu mediul Windows.
Dacă sunteți începător în programarea în mediul Windows trebuie să fiți conștient de unele diferențe fundamentale ale programării în mediul Windows față de celelalte medii de programare.
Cum funcționează Windows: ferestre, evenimente și mesaje
O discuție completă despre funcționarea mediului Windows ar necesita o lucrare de sine stătătoare. Nu este însă necesară o înțelegere profundă a tuturor detaliilor tehnice. O versiune simplificată a funcționării mediului Windows implică trei concepte cheie: ferestre, evenimente și mesaje.
O fereastră trebuie privită ca o zonă dreptunghiulară împreună cu marginile sale. Sunteți deja familiarizat, probabil, cu mai multe tipuri de ferestre: o fereastră de tip Explorer, o fereastră de document din cadrul editorului dumneavastră de texte sau o casetă de dialog ce apare pe ecran pentru a vă aduce aminte de o întâlnire. Deși acestea sunt cele mai răspândite, există de fapt mai multe tipuri de ferestre. Un buton de comandă este tot o fereastră. Pictogramele, casetele cu text și barele de meniuri sunt toate ferestre.
Sistemul de operare Microsoft Windows administrază aceste ferestre alocându-le fiecăreia câte un identificator numeric unic (hWnd). Sistemul monitorizează în mod continuu fiecare din aceste ferestre pentru a detecta semnalele vreunei activități sau ale unui eveniment. Evenimentele pot apărea datorită acțiunilor utilizatorului, cum ar fi un click de mouse sau apăsarea unei taste, datorită controlului prin program sau chiar datorită acțiunii altor ferestre.
Ori de câte ori survine un eveniment acesta gnerează un mesaj care este trimis sistemului de operare. Sistemul de operare procesează mesajul și îl transmite celorlalte ferestre. Fiecare fereastră poate atunci să execute acțiunea corespunzătoare, care tratează acel tip de mesaj, bazându-se pe instrucțiunile proprii de lucru.
Tratarea tuturor combinațiilor de ferestre, evenimente și mesaje vă poate aduce la disperare. Din fericire, Visual Basic vă apără de necesitatea de a avea de a face cu toate aceste mesaje de nivel scăzut. Multe din mesaje sunt tratate automat de Visual Basic, altele sunt afișate ca proceduri de tip Event. Aveasta vă permite să creați aplicații puternice fără a trebui să vă ocupați de detaliile neimportante.
Modelul de lucru bazat pe evenimente.
În aplicațiile tradiționale, numite și „procedurale”, aplicația însăși decide care porțiuni din cod se execută la un moment dat și în ce ordine. Execuția pornește de la prima linie de cod și urmărește o cale predefinită de-a lungul aplicației, apelând procedurile pe măsură ce este nevoie de ele.
Într-o aplicație bazată pe evenimente codul nu urmărește o cale predeterminată, ci execută diverse secvențe de cod ca răspuns la evenimente. Evenimentele pot fi declanșate de acțiunile utilizatorului, de mesaje ale sistemului sau ale altor aplicații sau chiar ale aplicației înseși. Secvența în care apar aceste evenimente determină secvența în care se execută codul, ceea ce înseamnă că de fiecare dată când programul se execută el va urma o cale diferită prin codul programului.
Deoarece nimeni nu poate prevedea secvența de apariție a evenimentelor, codul pe care îl scrieți trebuie să facă anumite presupuneri despre „situația curentă” atunci când se execută. Atunci când faceți presupuneri (ex: un anumit câmp conține o valoare, înainte de a executa o procedură care să proceseze acea valoare), trebuie să vă structurați aplicația în așa fel încât să fiți siguri că acea presupunere este întotdeauna validă (ex: dezactivând butonul de comandă care pornește procedura până când câmpul va conține o valoare).
Codul scris de dumneavoastră va putea, de asemenea ,să declanșeze evenimente în timpul execuției. De pildă, schimbare prin program a textului dintr-o casetă de text determină execuția evenimentului Change. Dacă ați presupus că acest eveniment va apărea doar datorită acțiunii utilizatorului, probabil că veți obține rezultate neprevăzute. De aceea este foarte important să înțelegeți modelul bazat pe evenimente și să-l aveți permanent în minte atunci când vă proiectați aplicația.
Dezvoltarea interactivă.
Procesul de dezvoltare a aplicațiolor tradiționale poate fi împărțit în trei etape distincte: scrierea, compilarea și testarea codului. Spre deosebire de limbajele tradiționale, Visual Basic abordează interactiv dezvoltarea codului, nefăcând o distincție netă între cele trei etape.
În cele mai multe limbaje, dacă faceți o greșeală scriind codul, aceasta este semnalată de compilator atunci când compilați aplicația. Trebuie apoi să găsiți și să corectați greșeala, după care să reluați ciclul de compilare, repetănd procesul pentru fiecare eroare găsită. Visual Basic interpretează codul pe măsură ce-l introduceți de la tastatură, semnalând „din zbor” și evidențiind orice greșeală sintactică sau semantică. Este ca și cum un expert ar sta să urmărească peste urmărul dumneavoastră cum introduceți codul.
Pe lângă semnalarea pe loc a erorilor, Visual Basic compilează parțial codul, pe măsură ce acesta este introdus. Când sunteți gata să rulați și să testați codul, compilarea se termină foarte repede. Când compilatorul găsește o eroare, ea este evidențiată în cod. Puteți să corectați greșeala și să continuați compilarea fără a o lua de la capăt.
Din cauza naturii interactive a limbajului Visual Basic, veți simți nevoia să rulați destul de des aplicația pe măsură ce o dezvoltați. Astfel, puteți testa efectele codului dumneavoastră pe măsură ce lucrați, în loc să așteptați compilarea lui mai târziu.
Elemente ale mediului integrat de dezvoltare
Generalități
Mediul de lucru Visual Basic este deseori denumit mediu integrat de dezvoltare (IDE), deoarece el integrează numeroase funcții diferite, cum ar fi proiectarea, editarea de text, compilarea și depanarea în cadrul unui mediu comun. În cele mai multe unelte de dezvoltare tradiționale, fiecare dintre aceste funcțiuni sunt îndeplinite de un program separat, fiecare cu interfața lui. Când porniți Visual Basic veți observa interfața mediului integrat de dezvoltare precum în figura următoare:
Figura 2 Mediul Integrat de Dezvoltare Visual Basic
Mediul integrat de dezvoltare Visual Basic (IDE) constă în următoarele elemente:
Bara cu meniuri
Afișează comenzile pe care le veți folosi în Visual Basic. Pe lângă meniurile standard File, Edit, View, Window și Help, există meniuri care permit accesul la funcțiile specifice programării, precum Project, Format sau Debug.
Meniurile conceptuale
Conțin comenzi rapide pentru acțiunile efectuate frecvent. Pentru a deschide un meniu contextual, apăsați butonul din dreapta al mouse-ului pe obiectul pe care îl folosiți. Lista specifică a comenzilor rapide disponibile din meniurile contextuale depinde de locul din meniul de dezvoltare unde executați click-dreapta.
Barele cu instrumente
Furnizează acces rapid la comenzile desfolosite în mediul de programare. Executând click pe un buton din bara de instrumente veți lansa operația reprezentată de acel buton. Bara cu instrumente standard este afișată în mod implicit la intrarea în Visual Basic. Mai pot fi afișate sau eliminate bare cu instrumente pentru editarea de text, pentru proiectarea formularelor sau pentru depanare și aceasta cu ajutorul comenzii Toolbars din meniul View.
Barele cu instrrumente pot fi ancorate dedesubtul barei cu meniuri, sau pot fi flotante, dacă selectați bara verticală din marginea din stânga și o deplasați în afara barei cu meniuri.
Fereastra Toolbox
Furnizază o serie de instrumente folosite în timpul proiectării pentru a plasa controale pe formular. Pe lângă configurația implicită a casetei cu instrumente, vă puteți crea propriile configurații selectând Add Tab din meniul contextual și adăugând controale la secțiunea rezultată.
Fereastra Project Explorer
Afișează formularele și modulele din cadrul proiectului curent. Un proiect este o selecție de fișiere pe care le utilizați la crearea unei aplicații.
Fereastra Properties
Afișează valorile proprietăților pentru formularul sau controlul selectat. O proprietate este o caracteristică a unui obiect, așa cum sunt dimensiunea, titlul sau culoarea.
Utilitarul Object Browser
Afișează obiectele disponibile pentru a fi utilizate în cadrul proiectului și vă oferă o cale simplă de a naviga prin cod. Puteți folosi acest utilitar pentru a examina obiectle din Visual Basic și din alte aplicații, pentru a vedea ce metode și proprietăți sunt disponibile pentru aceste obiecte și pentru a copia codul de proceduri în aplicația dumneavoastră.
Fereastra Form Design
Este o fereastră pe care o personalizați pentru a proiecta interfața aplicației dumneavoastră. Puteți adăuga controale, grafică și imagini pentru a crea vederea de ansamblu pe care o doriți. Fiecare formular din cadrul aplicației are propria fereastră de tip Design.
Fereastra Code Editor
Este folosită ca editor de texte pentru a introduce codul aplicației. Fiecare formular sau modul de cod din cadrul aplicației are propria fereastră de editare a codului.
Fereastra Form Layout
Fereastra pentru aspectul formularului vă permite să poziționați formularele în cadrul aplicației folosind o mică reprezentare grafică pe ecran.
Fereastrele Immediate, Locals și Watch
Aceste ferestre suplimentare sunt folosite în procesul de depanare a aplicațiilor. Ele sunt disponibile doar atunci când rulați aplicația din interiorul mediului IDE.
Puteți, de asemenea să adăugați noi facilități interfeței Visual Basic folosind un program de tip completare (add-in). Completările, furnizate atât de către Microsoft cât și de alte firme de dezvoltare, adaugă facilități precum controlul codului sursă, ceea ce vă permite dezvoltarea proiectelor de grup.
Opțiuni pentru mediul de dezvoltare
Visual Basic oferă multă flexibilitate, permițându-vă să configurați mediul de lucru astfel încât să se adapteze căt mai bine cu stilul propriu de lucru. Puteți alege între o interfață pentru un singur document sau multi-document și puteți schimba dimensiunea și poziția diverselor elemente ale mediului integrat de dezvoltare IDE. Configurația aleasă de dumneavoastră se va păstra între două sesiuni de Visual Basic.
Interfața SDI sau MDI
În mediul integrat de dezvoltare Visual Basic sunt disponibile două stiluri diferite: interfața pentru un singur document (SDI) sau multi-document (MDI). Alegând opțiunea SDI toate ferestrele IDE pot fi mutate după dorință pe ecran; atâta vreme cât Visual Basic este aplicația curentă, ele vor ramâne deasupra celorlalte aplicații. Alegând opțiuna MDI toate ferestrele IDE sunt conținute într-o unică fereastră părinte care poate fi redimensionată.
Ancorarea ferestrelor
Multe din ferestrele din mediul IDE pot fi ancorate, sau conectate una de alta sau de marginea ecranului. Dintre acestea fac parte ferestrele Toolbox, Form Layout, Project Explorer, Properties, Color Palette și ferestrele Immediate, Locals și Watch.
Alegând opțiunea MDI, ferestrele pot fi ancorate de oricare latură a ferestrei părinte; cu opțiunea SDI, ele pot fi ancorate doar imediat sub bara cu meniuri. Caracteristicile de ancorare ale unei anumite ferestre pot fi activate sau dezactivate selectând caseta de validare corespunzătoare din secțiunea Docking a casetei de dialog Options, disponibilă în cadrul comenzii Options din meniul Tools.
Prima aplicație în Visual Basic
Crearea unei aplicații în Visual Basic este simplă. Cât de simplă? Există trei etape principale în realizarea unei aplicații Visual Basic:
Crearea interfeței;
Stabilirea proprietăților;
Scrierea codului.
Crearea interfeței
Formularele constituie baza pentru crearea interfeței unei aplicații. Formularele pot fi folosite pentru a adăuga aplicației ferestre și casete de dialog. Ele pot fi, de asemenea, folosite drept containere pentru elemente care nu sunt o parte vizibilă a interfeței aplicației. De pildă, un formular poate servi drept container pentru grafica pe care doriți s-o afișați în cadrul altor formulare.
Primul pas în construirea unei aplicații Visual Basic este de a crea formulare care vor sta la baza interfeței viitoarei aplicații. Apoi vor fi desenate obiectele care alcătuiesc interfața formularelor pe care le creați.
Există două metode pentru a plasa controale pe un formular:
executați click pe instrumentul pe care vreți să-l desenați. Mutați cursorul deasupra formularului în locul unde doriți să se afle colțul stânga-sus al controlului. Deplasați cursorul până când controlul ajunge la dimensiunea dorită;
executați dublu-click pe butonul care reprezintă acel control în caseta cu instrumente. Acest lucru duce la crearea unui control de dimensiune predefinită, situat în centrul formularului (după aceasta puteți muta controlul unde doriți în formular).
Fixarea proprietăților
Următorul pas este atribuirea valorilor pentru proprietățile obiectelor create. Fereastra Properties oferă o metodă facilă de a atribui valori proprietăților pentru toate obiectele dintr-un formular. Fereastra Properties este formată din următoarele elemente:
Caseta cu obiecte – afișează numele obiectului pentru ale cărui proprietăți stabiliți valori (click pe săgeata din dreapta casetei cu obiecte pentru a obține lista tuturor obiectelor din formularul curent).
Etichete de sortare – puteți face alegerea dintr-o listă alfabetică a proprietăților sau dintr-o ierarhie împărțită în categorii logice, cum ar fi cele legate de aspect, font sau poziție.
Lista de proprietăți – coloana din stânga afișează toate proprietățile obiectului selectat. Valorile pot fi văzute și selectate în coloana din dreapta.
Figura 3 Fereastra Properties
Proprietățile enumerate au o listă predefinită de valori. Această listă poate fi afișată executând click pe butonul din dreapta casetei Settings sau poate fi parcursă circular executând dublu-click pe unul din elementele sale.
Scrierea codului
Fereastra de scriere a codului (Code Editor) este cea în care puteți scrie codul în Visual Basic pentru aplicația dumneavoastră. Codul constă în instrucțiuni ale limbajului, constante și declarații. Folosind fereastra Code Editor puteți vizualiza rapid și edita orice parte din codul aplicației.
Figura următoare vă arată fereastra editorului de cod ce apare când executați dublu-click pe caseta de text, precum și evenimentele pentru acel control.
Figura 4 Fereasta Code Editor
Puteți opta pentru afișarea tuturor procedurilor în aceeași fereastră de cod sau pentru afișarea doar a unei singure proceduri la un moment dat.
Fereastra de cod include următoarele elemente:
Caseta cu listă Object – afișează numele obiectului selectat. Executați click pe săgeata din dreapta casetei cu listă pentru a afișa o listă a tuturor obiectelor asociate respectivului formular.
Caseta cu listă Procedure – afișează toate procedurile sau evenimentele asociate unui obiect. Executați click pe săgeata din dreapta casetei pentru a afișa o listă a tuturor procedurilor asociate respectivului obiect.
Codul în Visual Basic se împarte în blocuri de dimensiuni mai mici numite proceduri. O procedură-eveniment conține cod care este executat atunci când survine un anumit eveniment. Procedura-eveniment asociată unui control are numele alcătuit din numele controlului (dat de proprietatea Name), o liniuță de subliniere („_“) și numele evenimentului. Dacă doriți ca un buton de comandă, numit Command1, să apeleze o procedură-eveniment când se execută click, procedura va fi numită Command1_Click.
Rularea aplicației
Pentru a rula aplicația, alegeți comanda Start din meniul Run sau executați click pe butonul Start de pe bara cu instrumente sau apăsați tasta F5.
Formulare, controale și meniuri
Proprietăți, metode și evenimente
Formularele și controalele din Visual Basic sunt obiecte care-și etalează propriile metode, proprietăți și evenimente. Ne putem gândi la proprietăți ca fiind atribute ale obiectelor, la metode ca la acțiunile asociate acestora, iar la evenimente ca fiind răspunsuri la acțiuni.
Un obiect din viața de zi cu zi, cum ar fi un balon cu care se joacă uneori copiii, are și el proprietățile, metodele și evenimentele sale. Proprietățile unui balon includ atributevizibile, precum înălțimea, diametrul sau culoarea. Alte proprietăți descriu starea balonului (dacă este umflat sau nu) sau atribute care nu sunt vzibile, precum vechimea. Prin definiție toate baloanele au aceste proprietăți; valorile asociate acestor proprietățidiferă de la balon la balon.
Un balon are, de asemenea, metode moștenite și acțiunipe care le poate îndeplini. El are o metodă de umflare (acțiunea de umplere a sa cu aer), una de dezumflare (eliminarea conținutului de aer) și o metodă de înălțare în văzduh. Desigur toate baloanele sunt capabile să realizeze aceste acțiuni.
Baloanele au, de asemenea, răspunsuri predefinite la anumite evenimente externe. De exemplu, un balon poate reacționa la o înțepătură dezumflându-se sau la evenimentul de a fi lăsat liber să se înalțe. Dacă ar trebui să scriem un program pentru un balon, codul în Visual Basic ar arăta ca mai jos:
Baloon.Color = Red
Balloon.Diameter = 10
Balloon.Inflated = True
Să observăm sintaxa codului – obiectul (Baloon), urmat de proprietate (.Color), urmată de atribuirea valorii (Red). Puteți schimba culoarea balonului prin cod, repetând instrucțiunea respectivă și punând o altă valoare. De asemenea, proprietăților li se pot atribui valori în fereastra de proprietăți atunci când proiectați aplicația.
Metodele asociate unui balon ar putea fi apelate astfel:
Baloon.Inflate
Baloon.Deflate
Baloon.Rise 5
Sintaxa este similară cu cea de la proprietăți – obiectul (un substantiv), urmat de o metodă (un verb). În exemplul următor există un element suplimentar, numit argument, care definește distanța la care se va înălța. Unele metode pot avea unul sau mai multe argumente pentru a descrie mai în detaliu acțiunea de executat.
Balonul ar putea răspunde la evenimente după cum urmează:
Sub Baloon_Puncture()
Baloon.Deflate
Baloon.MakeNoise “Bang”
Balloon.Inflated = False
Baloon.Diameter = 1
End Sub
În acest caz codul descrie comportarea balonului atunci când survine evenimentul de înțepare: apelează metoda de dezumflare (Deflate), apoi metoda de făcut zgomot împreună cu un argument (MakeNoise “Bang”, care arată tipul de zgomot). De vreme ce balonul nu mai este umflat, proprietății Inflated i se atribuie valoarea False, iar proprietatea Diameter capătă și ea o nouă valoare.
Firește, un balon nu poate fi programat; în schimb poate fi programat un formular sau un control în Visual Basic. Programatorul decide care proprietăți vor fi schimbate, ce metode vor fi apelate și la ce evenimente se va răspunde, totul cu scopul de a obține aspectul și comportarea dorită.
Proiectarea unui formular. Atribuirea valorilor pentru proprietățile formularului
Obiectele de tip fomular sunt elementele de bază din care se construiește aplicația în Visual Basic. Ele sunt ferestrele prin care utilizatorul interacționează cu aplicația atunci cănd aceasta rulează. Formularele au propriile proprietăți, metode și evenimente, cu ajutorul acestora putând fi controlate aspectul și comportarea lor.
Primul pas în proiectarea unui formular este atribuirea de valori proprietăților sale. Puteți atribui valori proprietăților formularului la momentul proiectării, în fereastra de proprietăți, sau la momentul execuției, prin cod.
Lucrul cu formularele și corntroalele, atribuirea de valori pentru proprietățile lor, scrierea codului pentru evenimentele lor se petrec în momentul proiectării, adică atunci când construiți aplicația în mediul Visual Basic. Momentul execuției este atunci când rulați aplicația și interacționați cu ea așa cum ar face utilizatorul.
Multe din proprietățile formularului îi afecteazăcaracteristicile fizice. Proprietatea Caption stabilește textul care va fi afișatîn bara de titlu a formuralului; proprietatea Icon alege pictograma care va fi afișată atunci când formularul va fi minimizat. Proprietățile MaxButton și MinButton arată dacă formularul poate fi maximizat sau minimizat. Schimbând valoarea proprietății BorderStyle, poate fi controlat comportamentul formularului la redimensionare.
Proprietățile Height și Width caracterizează dimensiunea inițială a formularului; proprietățile Left și Top determină dispunerea formularului relativ la colțul din stânga-sus al ecranului. Proprietatea WindowState poate fi fixată astfel încât, la pornire, formularul să apară în formă maximizată, minimizată sau normală.
Proprietatea Name atribuie o valoare numelui prin care va fi apelat formularul în cadrul codului. La adăugarea unui formular la un proiect numele implicit este Form1, Form2 și așa mai departe. Este totuși bine ca proprietatea Name să aibă valori cât mai pline de înțeles.
Evenimentele și metodele formularelor
Fiind obiecte, formularele pot acționa prin metode și pot răspunde la evenimente.
Evenimentul Resize este declanșat de fiecare dată când un formular este redimensionat, fie datorită interacționării cu utilizatorul, fie prin cod. Aceasta vă permite să executați anumite acțiuni, cum ar fi mutarea sau redimensionarea controalelor dintr-un formular, atunci când i se modifică dimensiunile.
Evenimentul Activate are loc oride câte ori un formular devine activ; evenimentul Deactivate are loc când un alt formular sau aplicație devine activă. Aceste evenimente sunt foarte potrivite pentru inițializarea sau finalizarea comportamentului unui formular.
Pentru a face vizibil un formular va trebui să apelați metoda Show:
Form2.Show
Apelarea metodei Show are același efect cu atribuirea valorii True pentru proprietatea Visible a formularului.
Multe dintre metodele unui formular au nevoie de text sau grafică. Metodele Print, Line, Circle și Refresh sunt folositoare la tipărirea sau desenarea direct pe suprafața unui formular.
Folosirea butoanelor de comandă
Pentru un utilizator, calea cea mai simplă prin care i se poate permita să interacționeze cu o aplicație este de a i se oferi un buton pe care să execute click. Pot fi folosite controalele de tip buton de comandă oferite de Visual Basic, sau pot fi create propriile „butoane” cu ajutorul unui control imagine care să conțină grafică (ex: o pictogramă).
Cele mai multe aplicații în Visual Basic conțin butoane de comandă care permit utilizatorului să îndeplinească diverse acțiuni doar executând click pe ele. Când un utilizator alege un astfel de buton, acesta va executa acțiunea respectivă și va arăta ca și cum ar fi fost fizic apăsat și apoi i s-ar fi dat drumul. Ori de câte ori un utilizator execută click pe un buton, este apelată procedura eveniment Click. Inserați cod în interiorul procedurii eveniment Click pentru a îndeplini acțiunea dorită.
Controale pentru afișarea și introducerea textului
Controalele de tip Label (Etichetă) și TextBox (Casetă cu text) sunt folosite pentru a afișa și a introduce text. Etichetele sunt bune atunci când doriți ca aplicația să afișeze text pe un formular, iar casetele cu text atunci cănd utilizatorul este solicitat să introducă text.
Etichetele conțin text care poate fi doar citit, pe când casetele cu text conțin text care poate fi editat. Astfel, o casetă cu text se poate folosi pentru un text care poate fi editat de către utilizator, de exemplu un câmp care conține o comandă sau o casetă pentru parolă. Pentru un text care este doar afișat, de exemplu pentru a identifica un câmp pe un formular sau pentru a afișa instrucțiuni pentru utilizator se foloșeste eticheta.
Folosirea etichetelor pentru a afișa text
Un control etichetă afișează text pe care utilizatorul nu-l poate modifica direct. Puteți folosi etichete pentru a identifica controalele, precum casetele cu text și barele de derulare, adică cele care nu au proprietate Caption proprie. Textul afișat de o etichetă este controlat de proprietatea Caption, căreia i se poate atribui o valoare la momentul proiectării, în fereastra de proprietăți, sau la momentul execuției, prin cod.
Titlul este singura parte implicit vizibilă a controlului etichetă. Cu toate acestea, dacă atribuiți valoarea 1 proprietății BorderStyle, eticheta va apărea înconjutrată de un chenar, dându-i un aspect similar cu al unei casete cu text. Puteți, de asemenea, să schimbați aspectul etichetei dând valori corespunzătoare proprietăților BackColor, BackStyle, ForeColor și Font.
Lucrul cu casete cu text
Casetele cu text sunt controale versatile care pot fi folosite pentru a obține date de la utilizator sau pentru a afișa text. Casetele cu text nu trebuie utilizate pentru afișartea unui text pe care nu vreți ca utilizatorul să-l modifice, cu excepția cazului în care ați atribuit valoarea True proprietății Locked.
Textul afișat într-o casetă cu text este controlat de proprietatea Text. Lui i se poate atribui o valoare pe trei căi diferite: la momentul proiectării în fereastra de proprietăți, la momentul execuției, prin cod sau de către utilizator, la momentul execuției. Conținutul curent al casetei cu text poate fi aflat la momentul execuției citind proprietea Text.
O casetă cu text afișează implicit o singură linie de text și nu posedă bare de derulare. Dacă textul este mai lung decât spațiul disponibil, numai o parte din el va fi vizibil. Aspectul și comportarea unei casete cu text pot fi modificate schimbând valorile a două proprietăți, MultiLine și ScrollBar, lucru posibil doar la momentul proiectării.
Punctul de inserare și comportamentul selecției de text din cadrul unei casete cu text pot fi controlate cu ajutorul proprietăților SelStart, SelLenght, SelText. Aceste proprietăți sunt disponibile doar la momentul execuției.
Când o casetă cu text primește prima dată focusul, punctul de inserare sau poziția implicită a cursorului se află la stânga evenimentului text existent. El poate fi mutat de către utilizator cu ajutorul tastaturii sau al mouse-ului. Când caseta cu text pierde și apoi reprimește focusul punctul de inserare se va afla acolo unde îl plasase utilizatorul ultima oară.
În unele cazuri, acest comportament îl poate descumpăni pe utilizator. Într-o aplicație de tip procesor de text, e posibil ca utilizatorul să se aștepte ca noile carectere să apară la sfârșitul textului deja existent. Într-o aplicație de tip introducere de date, utilizatorul se așteaptă ca ceea ce introduce de la tastatură să înlocuiască textul deja existent. Proprietățile SelStart și SelLenght permit modificarea comportamentului potrivit cerințelor dumneavoastră.
Proprietatea SelStart este un număr care indică punctul de inserare în cadrul unui șir de caractere (0 fiind poziția cea mai din stânga). Dacă proprietatea SelStart capătă o valoare egală sau mai mare decât numărul de caractere din casetacu text, punctul de inserare se va afla după ultimul caracter.
Proprietatea SelLength este o valoare numerică indicând lățimea punctului de inserare. Atribuirea unei valori mai mari decât 0, pentru SelLenght, duce la slectarea și evidențierea atâtor caractere cât indică valoarea respectivă, începând cu punctul curent de inserare.
Dacă un utilizator începe să introducă text atunci când este selectat un bloc de text, textul selectat va fi înlocuit. În unele cazuri, este posibilă înlocuirea unui bloc de text selectat cu un text nou cu ajutorul comenzii Paste. Proprietatea SelText este un șir de caractere pe care îl puteți aloca la momentul execuției pentru a înlocui selecția curentă. Dacă nu există text selectat, SelText va insera textul său în punctul de inserare curent.
Controale care prezintă opțiuni pentru utilizator
Numeroase aplicații sunt nevoite să prezinte utilizatorului variante de alegere, începând de la un simplu DA/NU, până la selectarea dintr-o listă cuprinzând sute de opțiuni. Visual Basic conține câteva controale standard foarte folosiltoare pentru prezentarea variantelor. Tabelul de mai jos sintetizează aceste controale și utilizarea lor.
O casetă de validare arată dacă o anumită condiție este îndeplinită sau nu. Aceste casete de validare sunt folosite într-o aplicație pentru a oferi utilizatorului opțiuni din tipul Adevărat/Fals sau Da/Nu. Deoarece casetele de validare sunt independente unele de altele, utilizatorul poate selecta oricâte casete la un moment dat.
Butoanele de opțiuni oferă utilizatorului una sau mai multe posibilități de alegere. Spre deosebire de casetele de validare, butoanele de opțiuni trebuie întotdeauna să facă parte dintr-un grup; selectarea unui buton de opțiune invalidează automat toate celelalte butoane din grup. Definirea unui grup de butoane de opțiuni spune utilizatorului „Iată o serie de variante din care trebuie să alegi una singură”.
Toate butoanele de opțiune plasate direct pe formular (deci nu într-un cadru sau casetă cu imagine) formează un singur grup. Dacă vreți să creați grupuri suplimentarede butoane de opțiune, trebuie să plasați unele dintre ele într-un cadru sau într-o casetă cu imagine.
Toate butoanela de opțiune situate în interiorul unui cadru dat constituie un grup separat; la fel se petrec lucrurile în interiorul unei casete cu imagine. Când un astfel de grup este creat separat, întotdeauna cadrul sau caseta cu imagine sunt desenate primele și numai după aceea pot fi desenate butoanele de opțiune peste ele. Figura de mai jos arată un formular cu două grupuri de butoane de opțiuni.
Figura 5 Grupuri de butoane de opțiuni
Deși controalele sunt obiecte independente, există o anumită relație părinte-copil între formulare și controale. Figura de mai sus demonstrează cum pot butoanele de opțiune să fie conținute într-un formular sau în interiorul unui control cadru.
Pentru a înțelege conceptul de container, trebuie să înțelegeți întâi că toate controalele sunt copiii formularului în care sunt desenate. De fapt, majoritatea controalelor proprietatea nemodificabilă Parent, care returnează formularul în care se află controlul. Starea de copil influențează amplasarea unui control pe formularul părinte. Proprietățile Top și Left ale unui control sunt relative la formularul părinte, iar controalele nu pot fi mutate în afara marginilor părintelui. Mutarea unui container mută totodată și controalele, iar poziția relativă a controlului dată față de proprietățile Left și Top ale containerului nu se schimbă, deoarece controlul se mută odată cu containerul.
Casetele cu listă și casetele combinate prezintă utilizatorului o listă de opțiuni. Implicit, opțiunile sunt afișate pe verticală pe o singură coloană, dar pot exista și mai multe coloane. Dacă numărul elemente depășește numărul celor ce pot fi afișate în caseta cu listă sau casetă combinată, controlul capătă automat bare de derulare. Utilizatorul poate astfel derula lista în sus și în jos, respectiv spre dreapta și spre stânga. Un control tip casetă combinatăreunește caracteristicile unei casete cu text și ale unei casete cu listă. Aceste două casete conțin mai multe valori sau, altfel spus, o colecție de valori.
Folosirea barelor de derulare ca dispozitive de introducere a datelor
Deși barele de derulare sunt de cele mai multe ori legate de casete cu text sau ferestre, uneori ele sunt utilizatepe post de dispozitive de introducere a datelor. Deoarece aceste controale indică poziția curentă pe o scală, controalele bară de derulare pot fi folosite de sine-stătător pentru a controla introducerea datelor. Controalele HscrollBar și VscrollBar funcționează independent de alte controale și au propriul set de evenimente, proprietăți și metode. Controalele bară de derulare nu sunt identice cu barele de derulare încorporate care sunt adăugate casetelor cu text, casetelor cu listă, casetelor combinate, sau formularelor MDI (casetele cu text și formularele MDI au o proprietate ScrollBar care permite adăugarea sau eliminarea barelor de derulare atașate controlului).
Indicațiile interfeței Windows recomandă folosirea controalelor de tip șină pe post de dispozitive de introducere a datelor în locul barelor de derulare.
Solicitarea datelor prin casete de dialog
În aplicațiile Windows, casetele de dialog sunt folosite pentru a solicita utilizatorului date pentru ca aplicația să poată continua sau să poată afișa diverse informații. Casetele de dialog sunt un tip specializat de obiect al formularului care poate fi creat prin una din următoarele trei căi:
Casetele de dialog predefinite pot fi create prin cod folsind funcțiile MsgBox sau InputBox.
Casetele de dialog personalizate pot fi utilizate folosind un formular standard sau personalizănd o casetă de dialog deja existentă.
Casetele de dialog standard precum Print sau File Open, pot fi create folosind controlul dialog uzual.
Deoarece majoritatea casetelor de dialog impun intervenția utilizatorului, ele sunt, de obicei, afișate sub forma casetelor de dialog modale. O casetă de dialog modală trebuie închisă (acsunsă sau descărcată din memorie) înainte de a putea continua aplicația. De pildă, o casetă de dialog este modală dacă este necesar să executați click pe butoanele OK sau Cancel înainte de a trece la un alt formular sau casetă de dialog.
Casetele de dialog non-modale permit trecerea focusului de la caseta de dialog la un alt formular fără să fie nevoie de închiderea casetei de dialog. Lucrul poate fi contiunuat oriunde în cadrul aplicației, în timp ce caseta de dialog este afișată. Casetele de dialog non-modale sunt rare; afișarea unei casete de dialog se face pentru că este nevoie de un răspuns înainte de a continua aplicația. În cadrul meniului Edit, caseta de dialog Find din Visual Basic este un exemplu de casetă de dialog non-modală. Casetele de dialog non-modale pot fi folosite pentru a afișa comenzi sau informații frecvent utilizate.
Controale care afișează imagini și grafică
Deoarece Windows este o interfață grafică, prezența unei metode de a afișa imagini grafice în interfața aplicației este importantă. Visual Basic conține patru controale care facilitează lucrul cu grafica: controlul casetă cu imagini, controlul imagine, controlul formă și controlul linie.
Controalele imagine, formă și linie sunt uneori denumite controale grafice „de categorie ușoară”. Ele au nevoie de mai puține resurse ale sistemului și deci se afișează mai repede decât controlul casetă cu imagini; ele dispun de un subset al proprietăților, metodelor și evenimentelor existente în caseta cu imagini. Fiecare din ele se potrivește mai bine unui anumit scop.
Controale suplimentare
Mai există câteva controale standard incluse în caseta cu instrumente Visual Basic. Unele controale sunt utile pentru lucrul cu volume mari de date aflate în baze de date externe. Alte controale pot folosi la accesul în sistemul de fișiere Windows. Există totuși și controale care nu se supun totuși nici unei clasificări, ele fiind totuși utile.
Puteți, de asemenea, folosi într-o aplicație Visual Basic controale ActiveX, numite înainte controale controale create de utilizator sau controale OLE. Ele sunt folosite la fel ca și controalele standard. Edițiile Professional și Enterprise includ mai multe controale ActiveX, precum și capacitatea de a crea propriile dumneavoastră controale. Numeroși furnizori oferă controale ActiveX suplimentare pentru aproape orice scop ce poate fi imaginat.
Controale de acces la date
Cea mai mare parte a informațiilor din afacerile din zilele noastre sunt stocate într-una sau mai multe baze de date centrale. Visual Basic include mai multe controale de acces la bazele de date adaptate la cele mai răspândite sisteme de gestionare a bazelor de date, inclusiv Microsoft Access și SQL Server.
Controlul ADO Data – este folosit pentru conectarea la o bază de date. El este gândit ca o conductă (pipeline) între baza de date și celelalte controale din formular. Proprietățile, metodele și evenimentele sale permit navigarea și manipularea datelor externe din cadrul propriei dumneavoastră aplicații.
Controlul DataList – seamănă cu controlul casetă cu listă. Când este folosit împreună cu un control ADO Data, el poate fi completat cu o listă de date dintr-un câmp al bazei de date externe.
Controlul DataCombo – seamănă cu o combinație de control DataList cu o casetă de text. Textul selectat în cadrul casetei cu text poate fi modificat, modificările apărând și în baza de date corespunzătoare.
Controlul DataGrid – afișează datele dsub forma unei grile sau tabele. Când este folosit împreună cu un control ADO Data, el oferă date care pot fi complet editate, date provenind din mai multe câmpuri ale unei baze de date externe.
Controlul Microsoft Hierarchical FlexGrid – este un control deosebit, capabil să prezinte mai multe vizualizări ale datelor. El trebuir înțeles ca o combinație a unei grile cu un control tip arbore sau de contur. La momentul execuției, utilizatorul poate rearanja coloanele și rândurile pentru a oferi vizualizări diferite asupra datelor.
Controale pentru sistemul de fișiere
Visual Basic are încorporate trei controale pentru a adăuga aplicației capacități de manevrare a fișierelor. Aceste controal sunt în mod obișnuit folosite împreună pentru a oferi vizualizări ale unităților de disc, directoarelor și fișierelor. Ele posedă proprietăți speciale și evenimente care le unesc.
Controlul DriveListBox – seamănă cu o casetă combinată. Ea oferă o listă derulantă de unități de disc din care utilizatorul poate alege.
Controlul DirListBox – seamănă cu un control casetă cu listă, dar are capcitatea intrinsecă de a afișa o listă arborescentă de directoare din cadrul unității de disc selectate curent.
Controlul FileListBox – seamănă și el cu o casetă cu listă care cuprinde numele fișierelor din cadrul directorului selectat.
Aceste controale sunt furnizate în principal pentru compatibilitatea cu aplicațiile create în versiuni mai vechi de Visual Basic. Controlul tip dialog uzual oferă o metodă mai ușoară de lucru cu fișiere
Alte controale
Mai sunt și alte controale standard incluse în Visual Basic. Fiecare servește unui anumit scop.
Controlul Timer – poate fi folosit pentru a crea un eveniment în aplicația dumneavoastră la intervale de timp regulate. El este util pentru executarea unui cod fără a necesita intervenția utilizatorului.
Controlul OLE – oferă o metodă simplă de adăugare la aplicație a unor capacități de tip legare și încorporare. Prin controlul container OLE, puteți permite accesul la facilitățile oricărei aplicații ce permite OLE, cum ar fi Microsoft Excel, Word și altele.
Controlul CommonDialog – adaugă la aplicație casete de dialog încorporate pentru selectarea fișierelor, culorilor, fonturilor ți funcțiilor de tipărire la imprimantă.
Ce este focusul
Focusul este capacitatea de aprelua datele introduse de utilizator prin mouse sau de la tastatură.
Când un obiect deține focusul, el poate primi date de la utilizator. În interfața Microsoft Windows, mai multe aplicații se pot afla permanent în execuție, dar numai aplicația care are focusul are bara de titlu activă și poate primi date de la utilizator. Într-un formular Visual Basic care are mai multe casete cu text, doar caseta cu text care are focusul poate afișa textul introdus de la tastatură.
Evenimentele GotFocus și LostFocus survin ori de câte ori un obiect primește sau pierde focusul. Formularele și majoritatea controalelor acceptă aceste evenimente.
Un obiect poate primi focusul numai dacă proprietățile sale Enabled și Visible au valoarea True. Proprietatea Enabled permite obiectului să răspundă la evenimente inițiate de utilizator, cum ar fi evenimentele de la tastatură sau de la mouse. Proprietatea Visible spune dacă un obiect este vizibil pe ecran sau nu.
Un formular poate primi focusul numai dacă nu conține nici un control care să poate primi focusul.
Despre meniuri
Dacă doriși ca aplicația dumneavoastră să ofere utilizatorului un set de comenzi, meniurile oferă o metodă potrivită și consistentă de a grupa comenzile și o cale ușoară de a avea acces la ele.
Figura următoare ilustrează elementele unei interfețe-meniu pentru un formular fără titlu.
Figura 6 Elemente ale unei interfețe-meniu
Bara de meniuri se găsește imediat sub bara de titlu a formularului și cuprinde unul sau mai multe titluri de meniu. Atunci când executași click pe un meniu (exemplu în figură pe meniul File), un meniu care cuprinde lista elementelor de meniu se va derula în jos. Elementele de meniu pot include comenzi (precum New sau Exit), bare de separare și titluri de submeniu. Fiecare element de meniu pe care îl vede utilizatorul corespunde unui control de meniu definit în Menu Editor.
Pentru a face aplicația mai ușor de utilizat, o idee bună ar fi gruparea elementelor de meniu conform funcției lor. În figura de mai sus comenzile referitoare la fișiere New, Open și Save se află toate în meniul File.
Unele elemente de meniu realizează acțiunile direct; de exemplu elementele de meniu Exit din cadrul meniului File închide aplicația. Alte elemente de meniu afișează o casetă de dialog – o fereastră care cere utilizatorului să ofere mai multe informații necesare aplicației pentru a realiza acțiunea. Aceste elemente de meniu ar trebui să fie urmate de puncte de suspensie („…”).
Un control de meniu este un obiect; precum celelalte obiecte el posedă proprietăți care pot folosi la definirea aspectului și comportării sale. Puteți atribui o valoare a proprietății Caption, proprietăților Enabled și Visible, proprietății Cheked și altora, la momentul proiectării sau la momentul execuției. Controalele de meniu conțin doar un singur eveniment, și anume Click, care este apelat ori de câte ori controlul de meniu este selectat cu mouse-ul sau de la tastatură.
Un meniu pop-up este un meniu flotant care este afișat deasupra unui formular, independent de bara de meniu. Elementele afișate de meniul pop-up depind de locul unde se află cursorul atunci când a fost apăsat butonul drept al mouse-ului; de aceea, meniurile pop-up se mai numesc și meniuri contextuale. Folosirea meniurilor pop-up oferă o metodă eficientă de acces la unele comenzi obișnuite, contextuale.
Orice meniu care are cel puțin un element poate fi afișat la momentul execuției ca meniu pop-up. Pentru a afișa un meniu pop-up folosiți metoda PopupMenu.
Figura 7 Editorul de meniuri
Cu ajutorul editorului de meniuri pot fi adăugate noi comenzi la meniurile deja existente, pot fi înlocuite comenzi existente cu ale dumneavoastră, pot fi create noi meniuri și bare de meniuri și pot fi mdificate și șterse meniuri sau bare cu meniuri existente. Principalul avantaj al editorului de meniuri este ușurința cu care poate fi utilizat. Meniurile pot fi personalizate într-o manieră complet interactivă care implică foarte puțină programare.
În timp ce valorile majorității proprietăților controlului de meniu pot fi fixate cu ajutorul editorului de meniuri, valorile pentru toate proprietățile meniului pot fi disponibile în fereastra de proprietăți. În mod obișnuit, un meniu va fi creat cu Menu Editor; cu toate acestea, schimbarea rapidă a unei singure proprietăți poate fi făcută prin fereastra de proprietăți.
Organizarea proiectelor
Pentru a crea o aplicație în Visual Basic trebeuie să lucrați cu proiecte. Un proiect este o colecție de fișiere care sunt folosite pentru a construi o aplicație.
La crearea unei aplicații, se crează de obicei formulare noi; pot fi, de asemenea, refolosite sau modificate formularele care au fost create pentru proiectele precedente. Același lucru este valabil și pentru celelalte module sau fișiere care pot fi incluse în proiect. Controalele ActiveX și obiectele din cadrul altor aplicații pot fi și ele partajate între proiecte.
După ce toate componentele unuie proiect au fost asamblate și a fost scris și codul, proiectul va fi compilat pentru a se obține un fișier executabil.
Lucrul cu proiecte
Pe măsură ce dezvoltați o aplicație, veți lucra cu un proiect pentru a controla toate fișierele de diverse tipuri care o compun. Un proiect este format din următoarele:
Un fișier proiect care ține evidența tuturor celorlalte componente (.vbp);
Câte un fișier pentru fiecare formular (.frm);
Câte un fișier de date binare pentru fiecare formular, care conșine date pentru proprietățile controalelor din formular (.frx). Aceste fișiere nu pot fi modificate și sunt create automat pentru orice fișier .frm care conține proprietăți binare, precum Picture sau Icon;
Opțional, câte un fișier pentru fiecare modul clasă (.cls);
Opțional, câte un fișier pentru fiecare modul standard (.bas);
Opțional, unul sau mai multe fișiere cuprinzând controale ActiveX (.ocx);
Opțional, un unic fișier pentru resurse (.res).
Fișierul proiect este pur și simplu o listă a tuturor celorlalte fișiere și obiecte asociate cu proiectul, precum și cu informațiile despre opțiunile de mediu pe care le-ați setat. Aceste informații sunt actualizate de fiecare dată când salvați proiectul. Toate fișierele și proiectele pot fi partajate și de alte proiecte.
După ce au fost încheiate toate fișierele din proiect, proiectul poate fi transpus într-un fișier executabil (.exe): din cadrul meniului File, alegeți comanda de tip Make proiect.exe.
Edițiile Professional și Enterprise de Visual Basic permit crearea și a altor tipuri de fișiere executabile, ca de pildă fișiere .ocx și .dll.
Pe măsură ce creați, adăugați sau eliminați fișiere editabile din cadrul unui proiect, Visual Basic reflectă aceste schimbări în cadrul ferestrei Project Explorer, care cuprinde o listă a tuturor fișierelor din proiect. Fereastra exploratorului de proiecte din figura următoare prezintă unele tipuri de fișiere pe care le puteți include într-un proiect Visual Basic.
Figura 8 Fereastra Project Explorer
De fiecare dată când salvați un proiect, Visual Basic actualizează fișierul proiect (.vbp). un fișier proiect conține aceeași listă de fișiere care apare în fereastara exploratorului de proiect, precum și trimiterile la controale ActiveX și obiectele inserabile folosite în proiect.
Structura unui proiect în Visual Basic
Următoarele puncte descriu diferitele tipuri de fișiere și obiecte pe care le puteți include într-un proiect:
Module formular (extensia .frm) – conțin descrieri textualeale formularului și controalelor sale, inclusiv valorile atribuite proprietăților. Ele pot conține, de asemenea, declarații de constante, variabile și proceduri externe, toate la nivelul formularului, proceduri eveniment și proceuri generale.
Module clasă (extensia .cls) – sunt analoage modulelor formular doar că nu posedă o interfață vizibilă cu utilizatorul. Modulele clasă pot fi utilizate pentru a crea propriile obiecte, inclusiv codul pentru metode și proprietăți.
Module standard (extensie .bas) – cuprind declarații de tipuri, constante, variabile, proceduri publice și proceduri externe, toate fiind ori publice, ori la nivelul modulului.
Fișiere de resurse (extensie .res) – conțin imagini bitmap, șiruri de caractere, precum și date pe care le puteți schimba fără a mai modifica și codul. De exemplu, dacă doriți să traduceți aplicația într-o limbă străină, puteți păstra toate imaginile bitmap și șirurile de caractere într-un fișier de resurse, pe care apoi îl veți traduce (doar pe el, nu toată aplicația). Un proiect nu poate cuprinde mai multe fișiere de resurse.
Documente de tip ActiveX (extensie .dob) – seamănă cu formularele, numai că pot afișa doar într-un browser de internet, precum Internet Explorer. Edițiile Professional și Enterprise de Visual Basic sunt capabile de a genera documente de tip ActiveX.
Module cu controale ale utilizatorului și module cu proprietăți de pagină (extensie .ctl – controale utilizator; extensie .pag – proprietăți pagină) – seamănă și ele cu formularele, dar sunt folosite pentru a crea controale ActiveX și proprietățile lor de pagină asociate, în scopul afișării proprietăților de la momentul proiectării.
Componente:
Controale ActiveX – sunt controale opționale care pot fi adăugate la caseta cu instrumente și folosite în cadrul formularelor. Când instalați Visual Basic, fișierele ce conțin controalele furnizate împreună cu Visual Basic sunt copiate într-un director comun. Controalele ActiveX suplimentare pot fi obținute dintr-o multitudine de surse.
Obiecte inserabile – cum ar fiobiectul Microsoft Excel WorkSheet, sunt componente care le puteți folosi la construirea unor soluții integrate. O soluție integrată poate conține date în diverse formate, precum foi de calcul tabelar, imagini bitmap, text, create fiecare de aplicații diferite.
Referințe – puteți adăuga referințe la componentele ActiveX externe care ar putea fi folosite de aplicația dumneavoastră. Puteți adăuga referințele folosind caseta de dialog References, la care aveți acces din elementul de meniu References din meniul Project.
Proiectanții pentru ActiveX – sunt instrumente pentru proiectarea claselor în cadrul cărora pot fi create obiecte. Interfața de proiectare pentru formulare este proiectantul implicit. Alți proiectanți pot fi obținuți din alte surse.
Controale standard – sunt furnizate de Visual Basic. Controalele standard, cum sunt butonul de comandă și controlul tip cadru, sunt întotdeauna incluse în caseta cu instrumente, spre deosebire de controalele ActiveX și obiectele inserabile, care pot fi eliminate sau adăugate la caseta cu instrumente.
Lucrul cu baze de date în Visual Basic
Verificare instrumentelor unei baze de date în Visual Basic 6
Visual Basic 5 și versiunile anterioare dispuneau de unele facilități legate de bazele de date, dar erau și foarte multe lipsuri. Deseori trebuia să deschizi Mocrosoft Access sau vreu alt instrument de dezvoltare al bazelor de date pentru îndeplinirea unor sarcini uzuale de programare a bazelor de date, cum ar fi proiectarea și testarea unei interogări SQL.
Acum, cu Visual Basic 6, puteți conta să găsiți aproape tot ce aveți nevoie chiar în Visual Basic. Iată câteva din aspectele importante – caracteristicile puternice ale bazelor de date pe care le găsiți în Visual Basic 6:
ADO (ActiveX Data Objects): principalul element al noii strategii Microsoft este de acces universal la bazele de date (Universal Data Access). Este universal deoarece se presupune că în ultimă instanță extrage date din fișierele de e-mail, fișierele obișnuite de text și alte surse de date netradiționale.
ADO Data Control: un control Visual Basic care folosește noua tehnologie ADO a bazelor de date. Până la urmă ADO Data Control va înlocui DAO Data Control aflat de mai mulță ani pe caseta cu instrumente Visual Basic.
Fereastra Data View: un instrument grozav când vreți să manipulați structura unei baze de date. Prin structură a unei baze de date se înțelege organizarea ei internă – categoriile în care se divide. Este similară cu structura unei colecții de CD-uri. Dacă sunteți o persoană cu adevărat ordonată, puteți aranja CD-urile în diverse categorii, ceva analog cu tabelele folosite pentru organizarea datelor într-o bază de date. Cu această fereastră puteți crea și modifica diagramele, tabelele, vizualizările, procedurile de stocare sau declanșatoarele bazelor de date.
Query Designer: o metodă rapidă pentru definirea și testarea interogărilor SQL prin utilizarea listelor derulante, a casetelor de validare și a altor comenzi rapide. Dacă doriți, puteți salva interogările în baza dumneavoastră de date, grăbind astfel execuția.
Data Repeater Control: un container care repetă comnezi uzuale. Cu alte cuvinte, definiți un set de componente uzuale (de exemplu șase casete cu text și șase etichete pentru afișarea unor înregistrări care conțin șase câmpuri). Setul acesta de componente este UserControl-ul dumneavoastră. Pe urmă plasați acest UserControl pe Data Repeater, ceea ce le permite utilizatorilor să parcurgă un grup uriaș, de tip casetă cu listă, din aceste UserControl-uri. Este o metodă bună de a etala înregistrări multilple într-un format ușor de navigat.
DataReport Designer: un nou utilitar excepțional pentru cei care trebuie să creeze rapoarte, acest instrument surprinzător de ușor de folosit generează rapoarte suficient de complexe pentru numeroase sarcini. În afară de afișarea pe ecran sau tipărirea rezultatelor, puteți chiar trimite repoartele obținute spre niște fișiere HTML, pentru afișarea în pagini Web.
Data Environment Designer: un fel de canal de preluare paralelă (pipeline) universală pentru conectarea unui proiect Visual Basic la o bază de date. Un instrument similar, UserConnection Designer, era disponibil în versiunile precedente ale Visual Basic. Data Environment Designer oferă tot ce făcea și UserConnection Designer, dar îl depășește. Acesta permite de asemenea, conexiuni multiple de date. El poate manevra noile surse de date OLE DB (împreună cu mai vechile ODBC), poate fi legat direct la controale și îl puteți manipula pe calea programării.
ActiveX Document Migration Wizard: un instrument care face rapid și semiautomat munca de traducere a oricăreia din vechile dumneavoastră aplicații și utilități Visual Basic, astfel îcât să le puteți conecta în paginile Web. Așa cum, într-un fel sau altul, ne dăm cu toții seama metafora Windows pentru calcul este înlocuită nu tocmai treptat cu o metaforă browser: butoane Back și Forward, liste Favorites și History, pagini împărțite în cadre și toate celelalte elemente ale unui browser.
WebClass Designer: un proiectant care vă ajută să creați programe ce rulează pe un server și poate consolida în mare măsură paginile dumneavoastră Web. Aplicațiile IIS (Internet Information Server), puteți utilizați clase, un cod Visual Basic compilat și componente ActiveX. Puteți exploata modelul obiect IIS, dobândind un control suplimentar asupra conținutului și comportării paginilor Web pe care le trimiteți vizitatorilor. Tehnica WebClass este superioară alcătuirii unui script din mai multe motive. Pe de o parte, codificarea dumneavoastră nu se amestecă de-a dreptul cu HTML, astfel că o puteți feri de priviri indiscrete. Codul este ascuns și mai mult deoarece este compilat și oricum nu părăsește niciodată serveru-ul. Aplicațiile IIS utilizează de asemenea obiectul model ASP (Active Server Pages), dar Visual Basic generează automat învelitori de care aveți nevoie.
Visual Data Manager: un instrument care face ca proiectarea unei noi baze de date, sau manipularea uneia deja existente, să fie foarte ușoară. Nu puteți defini relații în Visual Data Manager sau adăuga alte complexități, dar puteți lua un start bun și mai târziu, dacă vă hotărâți, să adăugați un cod de programare sau să folosiți Access pentru ajustări suplimentare.
Crearea și manipularea unei noi baze de date
Crearea unei noi baze de date poate fi destul de ușoară în Visual Basic. Alegeți pur și simplu Add-InsVisual Data Manager, și vă găsiți la numai câțiva pași de completarea unui nou tabel. Când ternâminați acest tabel și câmpurile sale, puteți face alt tabel dacă doriți. Nu puteți defini relații în Visual Data Manager sau să adăugați alte complexități.
Bineînțeles un intrument atât de bun precum Visual Data Manager este atât de bun pe cât este de bun creierul aflat de partea cealaltă a tastaturii. Construirea unei baze de date implilcă numeroase date importante, incluzând interfața cu utilizatorul, ce anume câmpuri trebuie să fie disponibile și proprietățile fiecăruia.
Vă revine să decideți cum să abordați sarcina creării unei structuri pentru o nouă bază de date.
Pentru crearea unei noi baze de date, urmați acești pași:
Alegeți Add-InsVisual Data Manager;
În Visual Data Manager, alegeți File New Microsoft Access Version 7.0 MDB;
Scrieți un nou nume de fișier pentru noua dumneavoastră bază de date în caseta de text File Name;
În caseta de dialog plasați-vă în directorul unde vreți să depozitați noua bază de date;
Executați click pe Save;
Din grupul de trei butoane aflat în capătul din stânga al barei cu instrumente VisData, executați click pe butonul corespunzător tipului de set de înregistrări pe care doriți să-l utilizați în aplicația dumneavostră.
Înregistrări de tip Table – vă conectează la un singur tabel;
Înregistrări de tip Dynaset – care poate conecta la mai multe tabele simultan;
Înregistrări de tip Snapshot – util pentru rapoarte, dar nici una din datele bazei de date subadiacente nu poate fi actualizată, fiind protejat la scriere;
Figura 9 Fereastra VisData
Executați click-dreapta pe Properties în fereastra Database;
Alegeți New Table în meniul contextual;
Figura 10 Caseta de dialog Table Structure
Introduceți un nume pentru noul tabel
Executați click pe Add Field.
Înscrieți numele primului câmp în tabelul dumneavoastră.
Modificați tipul de dată, dimensiunea sau orice altă proprietate a acestui câmp, conform nevoilor dumneavoastră.
Figura 11 Caseta de dialog Add Field
Executați click pe OK.
Continuați să adăugați noi câmpuri, cum se arată în pașii precedenți, până la definirea completă a tabelului.
Executați click pe Close.
În caseta de dialog Table Structure, executați click pe butonul Build the Table.
Executați click pe Close.
Fixarea proprietăților câmpurilor
Când adăugați un câmp la o bază de date, puteți specifica diverse proprietăți ale acelui câmp.
Tipul: specificarea unui tip de date permite bazei de date să-și depoziteze și gestioneze datele mai eficient. Puteți aspecifica următoarele tipuri de date într-o aplicație bază de date Visual Basic. Evident, dacă câmpul poate conține maxim 10 caractere, este inutil să irosim spațiul alegând un spațiu de depozitare de 50 de bytes (mărimea impllicită pentru un câmp de tip Text).
Dimensiunea: pentru unele tipuri de date puteți specifica o dimensiune particulară. De exemplu, tipul de date Text poate fi cu lungime variabilă, însemnând că este dimensionat dinamic; îi precizați lungimea care ste între 0 și 255 de caractere.
FixedField sau VariabileField: în cazul unor câmpuri, puteți alege dacă vreți să le precizați lungimea sau să le lăsați să se redimensioneze dinamic pentru a ajusta datele atribuite câmpului. Alegeți FixedField sau VariabileField pentru determinarea acestui tip de comportament.
AutoIncremental: dacă faceți un câmp AutoIncremental (trebuie de asemenea ca tipul de dată să fie Long), prima înregistrare din baza de date (cu acest câmp ca parte a înregistrării), capătă automat o valoare 1 în acest câmp, a doua înregistrare capătă valoare 2 în acest câmp, ș.a.m.d. până la peste două miliarde. Rezultatul este că fiecare înregistrare este în mod garantat unică, deoarece măcar acest câmp va avea o valoare unică. Câmpuri precum acesta pot fi utilizate la crearea de legături între tabele.
ZeroLength: această opțiune precizează dacă este permis un șir de lungime 0 („” este simbolul Visual Basic pentru un șir gol). Un șir de lungime 0 nu este același lucru ca o valoare NULL.
Required: această opșiune precizează dacă în acest câmp este permisă o valoare NULL.
Programarea Data Access
Programele de ghidare, șabloanele și proiectanții pot oferi un punct de pornire foarte util pentru toți începătorii în programarea bazelor de date. Ele pot adesea manavra pentru dumneavoastră detalii anoste și împovărătoare, cum ar fi codula extrem de repetitiv necesar pentru adăugarea unor proceduri de proprietate la o clasă. Adesea, nu aveți decât să dați drumul unuia din aceși asistenți, lăsându-l să facă o parte a programării. Aceasta vă eliberează să vă concentrați supre adaptării și sporirii eficacității generale a aplicației pe care o construiți.
Oricine a lucrat cu Visual Basic este deja destul de bine familiarizat cu obiectele. O casetă cu text, de exemplu, este un obiect și are proprietăți, metode și evenimente. Similar, când faceți programarea unui obiect DAO, utilizați proprietățile și metodele sale și puteți scrie cod în evenimentele sale. Totuși, cu DAO, trebuie mai întâi să instanțiați (să creați) un obiect. Obiectul nu există până când nu-i programați existența.
Deschiderea unei conexiuni cu o bază de date
Deschiderea unei conexiuni cu o bază de date înseamnă în primul rând crearea unui obiect bază de date. Acest proces implică doi pași:
Creați o variabilă obiect care să păstreze obiectul bază de date. Puteți utiliza comanda Dim a Visual Basic pentru crearea variabilei.
Utilizați comanda Set pentru a atribui o anumită bază de date acestei variabile obiect.
Pentru a realiza deschiderea unei conexiuni cu o bază de date utilizând codul DAO al Visual Basic, mai întâi ne vom deplasa în parte superioară a ferestrei de cod, în regiunea General Declarations. Această secțiune din fereastra de cod este în afara tuturor evenimentelor (procedurilor). Utilizând aici comanda Dim, facem obiectul bază de date disponibil tuturor evenimentelor și procedurilor din întregul modul.
Dim dbAbon As Database
Apoi, în evenimentul Form_Load vom scrie următorul cod:
Set dbAbon = opendatabase (App.Path & "\dumalcom.mdb")
Înainte să puteți untiliza DAO (sau ADO), trebuie mai întâi să-l refernțiați, adică să adăugați bibliotaca sa de posibilități la proiectul Visual Basic. Omisiunea referențierii ObjectLibrary este o greșeală comună în lucrul cu obiectele bază de date.
Lucrul cu puternicul obiect Recordset
După ce deschideți o conexiune cu baza de date următorul pas, când accesați date sub DAO, este să creați un obiect set de înregistrări (Recordset).
Un set de înregistrări este un conteiner temporar pe care îl completați cu un grup de înregistrări, pe baza unui criteriu pe care îl specificați. Un set de înregistrări este similar cu o matrice. Criteriul de selectare pentru completarea unui set de înregistrări poate fi un tabel, definiția unei interogări stocate sau o instrucțiune SQL Select.
O instrucțiune SQL solicită date ăntr-o manieră similară acestui exemplu: din tabelul numit Abonati dă-mi toate înregistrările în care Nume începe cu litera S. O procedură stocată este un tip special de instrucțiune SQL stocată chiar în baza de date.
Iată cum folosim comanda OpenRecordset pentru a încărca un întreg tabel în setul dumneavoastră de înregistrări:
Dim dbAbn As Datbase
Private Sub Form_Load()
Dim rsPersonal As Recordset
Set dbAbn = opendatabase (App.Path & _ „\dumalcom.mdb”)
Set rsPersonal = dbAbn.OpenRecordset(„date_pers”)
End Sub
Termenul de înregistrare curentă înseamnă pur și simplu că un indicatorîn setul de înregistrări crește sau scade, după caz, de fiecare dată când utilizați comenzi precum MoveNext sau MovePrevious. Indicatorul parcurge tot drumul până la ultima înregistrarecând utilizați comanda MoveLast. Cu alte cuvinte, o singură îregistrare este la un moment dat înregistrarea curentă. Când creați prima oară un set de înregistrări (anterior oricărei comenzi de mișcare), indicatorul este poziționat la prima înregistrare. Totuși, nu uitați niciodată că un tabel obișnuit într-o bază de date relațională nu este neapărat în ordine alfabetică (sau în orice altă ordine).
Crearea unui set de înregistrări bazat pe o instrucțiune SQL
Specificarea faptului că vreți să vedeți numai o parte a datelor dintr-un tebel este deseori utilă (și mai eficientă), după ce ați creat un set de înregistrări. De exemplu, în loc să încărcați întregul tabel Abonati, puteți fi selectivi și să cereți să vedeți numai acele persoane care incep cu literele No. Dar cu cât este mai mic setul de înregistrări cu atât sunt necesare mai puține calcule pentru deplasarea prin el, căutarea lui sau trimiterea lui prin Internet sau printr-un Intranet. Și nu uitați, unele câmpuri (îndeosebi tipul Memo) pot fi gigantice. De asemeanea, un tabel poate să conțină prea multe înregistrări – TeraBytes de date , milioane de înregistrări – pentru a le păstra în memorie.
Puteți crea un set de înregistrări bazat pe o interogare SQL folosind următorul cod:
SQLQuery = „SELECT * FROM Abon WHERE Nume LIKE ‘No*’”
Set rsPerson = dbAbon.OpenRecordSet(SQLQuery)
Șirul spune „alegeți toate înregistrările (primul * înseamnă toate) din baza de date pentru care (WHERE) câmpul lor Nume începe cu literele No”.
Observați că trebuie să folosim ghilimelele simple în jurul lui No*. De asemenea, * care urmează după No este un simbol de înlocuire care înseamnă că orice caractere după No sunt acceptabile. De preferabil este să definim o variabilă (SQLQuery) care definește instrucțiunea SQL, iar apoi să utilizăm acea variabilă pentru comanda OpenRecordset. Totuși unii programatori utilizează instrucțiunea SQL direct în rândul OpenRecordset.
Instrucțiunea SQL este mai ușor de citit și de lucrat cu ea dacă procesul este fragmentat în două rânduri.
Proprietatea RecordCount nu conține, prin ea însăți numărul total de înregistrări până nu vă deplasați la capătul unui set de înregistrări. Destul de straniu trebuie să va deplasați „fizic” până la ultima înregistrare, într-un fel sau altul, înainte de a putea obține un răspuns riguros din partea proprietății RecordCount. Nu are nici un sens, dar este una din acele chichițe pe care trebuie să le rețineți.
Rezolvarea erorii „No current record”
Când lucrați cu înregistrări, aplicația dumneavastră poate provoca lesne erori prin încercarea de a merge dincolo de ultima înregistrare, sau înainea primeia. Dacă utilizați una din comenzile de mișcare, MoveNext sau MovePrevious, dar nu aveți înregistrări în setul de înregistrări, primiți infamul mesaj de eroare No current record. Din nefericire sunt mai multe erori care pot cauza acest mesaj: utilizatorul șterge înregistrări din setul de înregistrări până nu mai rămâne cu nimic; el execută click pe butonul Next (sau cel care are în codul său o comandă MoveNext) până trece de ultima înregistrare; comanda MoveFirst este executată într-un set de înregistrări gol; ș.a.m.d.
Trebuie să vă asigurați că această eroare nu se produce. Ea vă poate bloca aplicația dacă nu inserați On Error Resume Next la începutul fiecărui Sub sau Function în care ea poate să apară.
Unii programatori preferă să trateze această eroare trimițând-o către un corector de erori în acceași procedură. La începutul acestei proceduri inserați o comandă On Error, care trimite execuția către rutina corectoare de erori din finalul procedurii (dacă apare vreo eroare cât timp rulează procedura). Pentru ca acest corector de erori să nu fie executat ori de câte ori este executată procedura înainte de această subrutină se va insera în cod comanda Exit Sub.
Un scurt dicționar al SQL
Există numeroase ale SQL:
ANSI SQL – standard
Transact SQL – al Microsoft SQL Server
PL/SQL – al Oracle
ODBC SQL
Access SQL
Aceste versiuni ale SQL sunt oarecum asemănătoare. Există totuși unele deosebiri între ele. În continuare voi prezenta versiunea Access SQL.
Comnezile din limbajul SQL sunt desemnate ca propoziții (cum ar fi ORDER BY), cuvinte cheie (cum ar fi TOP) sau operatori (cum ar fi LIKE sau BETWEEN). Un aspect suplimentar ar fi că SQL nu este de fapt un limbaj de computer complet, ca Visual Basic. SQL este lipsit de unele caracteristici importante ale unui limbaj „real” de programare și astfel trebuie folosit în asociație cu un limbaj gazdă.
SELECT: una din cele mai importante propoziții SQL, apare la începutul fiecărei instrucțiuni SQL care regăsește date într-o bază de date.
SELECT nume_campuri FROM nume_tabele – formatul de bază;
SELECT * FROM nume_tabel – selectarea tuturor câmpurilor;
SELECT [nume_camp1],[nume_camp2] FROM nume_tabel;
WHERE: furnizează criterii sau filtrează datele.
WHERE camp operator criteriu
ORDER BY: specificarea modului în care dorim să fie sortate datele: numeric sau alfabetic, ascendent sau descendent
SELECT Nume FROM Abonati ORDER BY Nume DESC
TOP: dacă aveți o bază de date mare cu mii de înregistrări și cineva dorește să vadă cele mai căutate 25 de produs, puteți utiliza propoziția ORDER BY DESC pentru alcătuirea unei liste de produse în ordinea vânzărilor totale, apoi putem separa primele 25 utilizănd cuvântul cheie TOP:
SELECT TOP 25 * FROM tblSales ORDER BY TotalSales DESC
Dacă există produse care se vând la fel vom obține mai mult de 25 de înregistrări, deoarece egalitățile contează ca un singur rezultat.
Putem cere de asemenea un procentaj din numărul total de înregistrări:
SELECT TOP 5 PERCENT * FROM tblSales ORDER BY TotalSales DESC
DISTINCT: pentru evitarea dublurilor
SELECT DISTINCT camp FROM tabel
Utilizarea acestei propoziții poate stânjeni performanțele unei baze de date mari.
COUNT, SUM, AVG, MAX și MIN: puteți folosi cele cinci funcții globale pentru a calcula numărul înregistrărilor (COUNT), suma totală a înregistrărilor numerice (SUM), valoarea medie a înregistrărilor numerice (AVG) și cea mai mare (MAX) sau cea mai mică (MIN) înregistrare numerică. Numai funcția COUNT poate fi folosită cu înregistrări de tip text.
SELECT COUNT (camp) AS expr FROM tabel
GROUP BY: pentru a condensa mai multe înregistrări în una singură
HAVING: este foarte asemănătoare cu propoziția WHERE. HAVING trebuie utilizată cu propoziția GROUP BY.
SELECT COUNT(camp) AS expr, camp FROM tabel GROUP BY camp HAVING (camp LIKE expresie)
SQL returnează un set de înregistrări, dar se mai poate folosi și pentru a modifica datele dintr-o bază de date. Puteți utiliza SQL pentru anexarea de noi seturi de înregistrări cu propoziția INSERT, sau adăugarea de noi tabele folosind SELECT INTO. Utilizarea de instrucțiuni SQL pentru modificarea bazelor de date sau a datelor din ele se numește interogare de acțiune. Utilizarea SQL în felul acesta se poate dovedi o afacere foarte periculoasă, deoarece puteți șterge chiar și o întreagă bază de date cu doar foarte puțin cod.
DELETE: elimină înregistrările. Se pot folosi filtrele uzuale când se definește ceea ce trebuie șters.
DELETE camp FROM tabel WHERE (camp LIKE expr)
Unele versiuni de SQL omit acest prim camp dintre DELETE și FROM, dar Access SQL îl utilizează.
UPDATE: dacă înlocuți propoziția SELECT cu UPDATE și SET, în locul returnării unui set de înregistrări puteți schimba datele din el. Puteți folosi comanda UPDATE cu comanda execute DAO pentru operarea schimbărilor.
SQLAction = „UPDATE tabel SET camp = expr WHERE camp = expresie
dbNumeBaza.Execute SQLAction
INSERT INTO: poate copia înregistrări dintr-un tabel într-altul, sau să adauge o înregistrare individuală nouă la un tabel
Aplicație practică
Această dublă aplicație face parte din sistemele informatice ale firmelor S.C. Motel Shop Servicii Import-Export Dumitru S.R.L. și S.C. SatTV. S.R.L., fiind realizate conform solicitării directorilor economici și executivi, pentru a ușura într-o oarecare măsură munca birocratică a angajaților firmelor respective. Aplicația este foarte ușor de folosit, intuitivă, realizată și pentru persoane care au cunoștințe minime de operare pe calculator, respectiv de validare și introducere a datelor.
Prima parte a aplicației este folosită în prezent în cadrul sistemului informatic al primei firme mai sus menționate.
Pentru a accesa această aplicație este nevoie de a cunoaște o parolă de utilizator, pentru a nu avea acces orice persoană care folosește calculatorul pe care este instalat acest program. În funcție de parola introdusă programul decide mai departe ce parte a aplicației să folosească.
Figura 12 Fereastra de Login
Partea întâi aplicației este de gestiune primară a stocurilor unei firme producătoare și distribuitoare de băuturi alcoolice. Așadar structura programului va fi construită pe o bază de date ce va conține toate cele 36 de produse aflate în prezent în producție. După introducerea corectă a parolei utilizatorului i se va afișa o fereastră ce conține butoane de comandă pentru modificarea diferitelor stocuri existente.
Figura 13 Meniul principal – Form3
Ideea de bază a acestei părți este de a prelua datele despre stocurile existente și să le prelucreze conform politicii firmei. Astfel, la Sold Inițial se vor adăuga intrările din linia de producție din ziua respectivă, notate Intrări MSH, cu toate retururile celor cinci distribuitori majori ai firmei, și să se scadă toate vânzările din ziua respectivă.
Figura 14 Gestiune Stocuri – Form1
Printr-un calcul extrem de simplu vor rezulta Total Vânzări și Sold Final din ziua respectivă executând click pe butonul Calculează.
La acționarea butonului Salvare BD programul realizează salvarea datelor relevante pentru utilizator în baza de date, și anume: SoldFinal și TotalVânzări. Apoi se pot salva toate aceste date într-un format extern de tip fișier text (.txt), al cărui nume conține și data ce se cere a se introduce la apăsarea butonului Salvare/Imprimare. Butonul de Resetează TotalVânzări a fost introdus pentru a da posibilitatea gestionarului de a vedea care este totalul vânzărilor pe o anumită periodă stabilită de el.
Figura 15 Stocuri – Form2
Această a doua situație face o comparație între soldurile care rezultă din stocurile efective și cele care sunt pe actele firmei pentru a se putea ști cât se va mai îmbutelia din produsul X. Analog, această formă are cele trei butoane de calcul, salvare în baza de date și salvare pentru imprimare.
Pentru o mai bună introducere a datelor pe cele două forme prezentate anterior au fost adăugate câte un Label pentru afișarea produsului curent într-o formă mărită, pentru a se putea urmări mai ușor tastarea datelor în căsuța corespunzătoare.
Cea de-a treia formă, cea de calcul a calibrărilor bazinelor de alcool, este mult mai simplă decât celelalte două. Aceasta nu va salva nimic în baza de date, deoarece nu este necesar acest lucru. Astfel pentru primele 9 bazine, notate G1-2, R1-7, la părăsirea câmpului Calibrare, programul caută automat într-o bază de date existentă câți litri corespund nivelului introdus, în cm, și apoi actualizează câmpul Cantitate cu aceste date. Pentru următoarele bazine se va introduce un număr de litri în Calibrare care se va copia direct în Cantitate.
Figura 16 Calibrare bazine alcool – Form4
Despre următoarea formă, Form5, vă voi preciza faptul că în aceasta se fac anumite situații asupra banderolelor ce trebuiesc lipite pe fiecare sticlă îmbuteliată. Astfel se face o comparație între numărul de banderole existent și necesarul de pe săptămâna următoare. Pentru acestă situație se va face și o salvare în baza de date pentru a putea prelua ultima valoare a numărului de banderole existent în ziua precedentă. Asupra acestui număr se vor face operații de adăugare sau scădere, conform intrărilor (cumpărări de la Imprimeria Națională) sau ieșiri (conform numărului de sticle ce trebuie îmbuteliat în ziua respectivă).
Figura 17 Situația stocurilor de banderole – Form5
Următoarele două butoane din meniul principal, respectiv Gestiune Socuri MotelShop și Fișe MotelShop, sunt încă în stadiul de testare și nu vor fi prezentate aici.
Ultimele două forme, respectiv Vinuri→Stocuri și Vinuri→Gestiune, sunt de fapt identice cu primele două forme prezentate mai sus (Figurile 3 și 4), decât că prin acestea se calculează gestiunile stocurilor de vinuri din această firmă.
Parte a doua a aplicației este încă în faza de concepție, existând doar o versiune de pre-testare în care se vor descoperi toate „bug”-urile acestui program. Programul vrea să rezolve problema plății abonamentului de cablu TV, prin gestionarea noilor și vechilor abonați, precum și a plații facturilor acestora catre societatea de cablu.
Bibliografie
Austing R., Cassel L., File Organization and Access: From Data to Information, D.C. Heat cop. 1988
Codd E. F., Transaction on Database Systems, vol. 4, 1979
File D., Hardgrave T., Database Concepts, South-Western, 1986
Fusaru D., Mareș D., Mihai G., Visual Basic și Access, Ed. Fundației România de Mâine, București, 2001
Jeffrey K., Experts Database Systems, Academic Press, Ltd., 1992
Mansfield R., Visual Basic 6, Ed. Tehnică, 2001
Microsoft Press, Microsoft Visual Basic 6.0 Programmers Guide, 1998
Perkins J., Bryan M., SQL fără professor în 14 zile, Ed. Teora, București, 1998
Popa Gh., Ivancenco V., Andronache V., Visual Basic, Ed. Cison, București, 1999
Programmers Heaven – Visual Basic & VB_NET Zone – Sourcecode Articles.htm, www.programmersheaven.com
Ullman J. D., Principles of Database Systems, Computer-Science Press, inc., 1982
ISO, Information Processing Systems – Database Language SQL, 1989
ISO, Database Language, 1992
*** Microsoft Visual Basic, Programming System for Windows V 6.0, Language Reference, 1998
*** Using Visual Basic 6, 1998
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Programarea Si Gestionarea Bazelor de Date In Visual Basic (ID: 149150)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
