Baza de Date Access – Gestiune Farmacie [310314]

[anonimizat], bine stabilit. Ele nu conțin date care nu sunt necesare în vederea prelucrării sistemelor de gestiune( [anonimizat]).

[anonimizat](fizic)

[anonimizat].

[anonimizat]. Tot nivelul extern realizează și operațiile de acces secvențial la informațiile conținute de baza de date. Astfel, [anonimizat], sau permis numai pe bază de parolă. [anonimizat], pentru a se face o distincție, sau o individualizare.

Nivelul logic reprezintă modul în care vor fi organizate datele din punct de vedere logic. Există mai multe tipuri de modele:

modelul ierarhic

modelul rețea

modelul relațional

modelul orientat pe obiect

Modelul ierarhic: [anonimizat], care poate avea oricât de mulți descendenți. [anonimizat]. Este modelul cel mai puțin folosit în realizarea nivelului logic

Modelul rețea: [anonimizat]. [anonimizat] o structură destul de complicată. Este puțin folosit în gestionarea bazelor de date.

Modelul relațional: [anonimizat] o [anonimizat], fără a altera integritatea datelor existente. [anonimizat], acestea fiind la rândul lor formate din câmpuri. [anonimizat] a informațiilor. Sistemele de gestiune a [anonimizat], Iformix etc.

Modelul orientat pe obiect: cel mai nou tip folosit de sistemele de gestiune al bazelor de date. A apărut ca urmare a diversificării tipului de informații care trebuie gestionate de către bazele de date([anonimizat], [anonimizat], animație etc.) .

[anonimizat], în funcție de sistemul de gestiune al bazei de date. Ca sistem de gestiune al bazei de date putem folosi: Oracle, Access, DB2, Ifromix, Fox. [anonimizat], [anonimizat](astfel încât baza de date să fie utilizată în rețea de mai multe persoane în același timp)

[anonimizat].

Realizarea unei baze de date funcționale se aseamănă oarecum cu rezolvarea unui puzzle. Pentru a reuși, mai întâi trebuie adunate toate piesele, apoi trebuie proiectată o structură corespunzătoare naturii acestora, după care este construită interfața care permite introducerea și extragerea cu ușurință a componentelor dorite, simplu și eficient.

Microsoft Access oferă utilizatorului posibilitatea de a manipula datele comform nevoilor sale specifice. Efortul inițial necesar creării unei baze de date este deseori mai mare decât cel necesar realizării unor foi de calcul tabelar, sau a unui document, dar eforturile depus va fi recompensat în momentul în care se ajunge în situația extragerii informațiilor. Baza de date perimite localizarea cu repeziciune a anumitor elemente, compararea statisticilor pe diverse perioade de timp, obținerea cu ușurință a unor rezultate tipărite.

La una din extremele pieței se găsesc produse simple, care pot fi învățate cu ușurință(pachete de programe care nu pot realiza mai mult decât operații uzuale de stocare și căutare) La celălalt capăt se află unele din cele mai complexe programe de calculator existente, care rulează pe mai multe calculatoare, în mai multe locații, pentru a colecta și distribui simultan cantități uriașe de date de-a lungul globului pământesc. De exemplu, societățile bancare care utilizează baze de date dedicate pentru a urmări în timp real comerțul mondial.

Access este una din soluțiile de mijloc, fiind unul din cele mai bune sisteme pentru baze de date disponibil pentru calculatoare personale. Fiind proiectat astfel încât să fie prietenos și cât mai ușor de folosit, utilizatorii care nu doresc să se implice în proiectarea bazelor de date complexe pot să-l folosească, preluând pur și simplu elemente din caseta cu multe aplicații. Dadabase Wizard pune la dispoziție o interfață prietenoasă și simplă pentru a putea începe imediat. Prin câteva răspunsuri la întrebări simple, Access creează în mod automat diferite tabele, interogări și formulare.

Desigur, pe măsură ce se familiarizează cu o bază de date, utilizatorii vor cere tot mai mult de la ea. Sub aspectul simplu al aplicației Access se află „caii putere” ai unei mașini de baze de date care poate să ajungă atât de departe cât îi permite sistemul pe care rulează. Datorită posibilităților de programare oferite de Access, un utilizator eficient poate realiza cu ușurință operații complexe, cum ar fi de exemplu sincronizarea datelor pentru mai mulți utilizatori cuplați la o rețea. Limbajul de programare Visual Basic oferă putere bazei de date, iar dacă funcțiile oferite de acesta, sau care pot fi create cu ajutorul acestuia nu sunt potrivite, există posibilitatea de a adăuga propriile biblioteci legate dinamic(DLL- Dynamic Link Libraries).

Sistemul de gestiune al bazelor de date Access permite realizarea mai multor operații specializate, cum ar fi:

proiectarea structurii bazei de date

încărcarea datelor, regăsirea ulterioară, modificarea datelor, ștergerea datelor

generarea de rapoarte în scopul tipăririi la imprimantă a datelor introduse în baza de date

crearea de formulare, ca modalitate de manevrare a datelor prin intermediul unei interfețe mai prietenoase pentru operator.

relaționarea bazelor de date și lucrul cu combinații de baze de date

programare pentru crearea de sisteme de gestiune de uz particularizat

controlul integrității și securității datelor

Deși aceste operații au caracter general, prin intermediul numeroaselor atribute și setări specifice fiecărui element în parte putem crea baze de date flexibile, cu o interfață pe gustul nostru, care să corespundă cerințelor din toate punctele de vedere.

Crearea unei baze de date

Microsoft Access este un program care se adresează atât utilizatorilor mai puțin experimentați, cât și programatorilor specializați în crearea de baze de date. Dar fiind un program destinat utilizării pe un calculator personal, sau într-o rețea de calculatoare personale, se poate spune că este un program care se pliază cel mai bine cerințelor utilizatorilor care dețin cunoștințe medii în domeniul bazelor de date.

Pentru a crea o nouă bază de date, este suficient să deschideți aplicația Microsoft Access. O fereastră vă va întâmpina, fiind solicitat să decideți ce acțiune va face în continuare programul. Dacă doriți crearea unei baze de date uzuală, sau dacă nu dețineți decât foarte puține cunoștințe în domeniu, există posibilitatea de a selecta Wizard-ul, care vă va conduce prin întrebări simple către crearea unei baze de date care să se potrivească dorințelor dumneavoastră.

Însă pentru crearea unei baze de date mai complexă, care să se ocupe de gestionarea

informațiilor într-o formă care nu este inclusă în cele de care se poate ocupa programul Wizard, este necesară crearea unei baze de date noi. Pentru ca aceasta să își îndeplinească cu bine rolul, în etapa premergătoare construirii propriu-zise a bazei de date este absolut necesară o etapă de proiectare, care să stabilească cu exactitate care sunt obiectivele sale și modul în care acestea vor fi atinse, precum și toate facilitățile care vor fi puse la dispoziția utilizatorului, dar și tipurile de date care vor fi stocate în tabele.

fig.1 fereastra de start a Microsoft Access

Tipurile de date specifice programului Microsoft Access sunt următoarele:

Text- în celulele unui câmp de acest tip se vor putea introduce texte, deci orice înșiruire de caractere, numărul maxim admis fiind de 255 de caractere. Lungimea implicită este de 50 de caractere.

Memo- în celulele unui câmp de acest tip se vor putea introduce orice șir de caractere, însă cantitatea de text este limitată la 65535 de caractere. Acest tip de date este asemănător cu cel text.

Number- datele introduse pot fi numai valori numerice, ele fiind utilizabile în calcule matematice. În cazul în care doriți să introduceți valori reale care să nu fie rotunjite automat, trebuie să alegeți de la rubrica Field size, tabul General, varianta Double

Autonumber- în câmpul de acest timp se produce o completare automată cu valori numerice incrementate cu 1. Incrementarea se produce de fiecare dată când o nouă înregistrare este introdusă în tabel.

Yes/No- în acest câmp pot fi introduse date care au doar două stări posibile: adevarat/fals, da/nu, pornit/oprit, etc.

Ole Object- prin câmpurile de acest tip se permite accesul la obiecte de diverse naturi. ca de exemplu, foi de calcul tabelar Excel, reprezentări grafice, fișiere imagine și documente Word

Hyperlink- în câmp pot fi introduse șiruri de caractere care reprezintă adrese de pagini web

Lookup Wizard- în acest câmp pot fi introduse valori care sunt alese dintr-o listă aflată în altă tabelă.

Date/Time- în câmp nu pot fi introduse decât informații care constau în dată calendaristică sau oră.

După ce etapa de proiectare este finalizată, se poate trece la construirea bazei de date. Pentru a crea o nouă bază de date se selectează Balnk Access database din fereastra de start(fig 1.)

O dată de ați decis că doriți să creați o nouă bază de date, va trebui să îi dați un nume și să alegeți locul unde doriți ca stocată(fig. 2). După ce ați făcut asta, sunteți pregătit să creați tabelele, care sunt obiectele de la baza oricărei baze de date Access.

fig. 2 fereastra File New Database- precizare locului și numelui bazei de date

fig. 3 fereastra principală a bazei de date

O dată creată, baza de date este pregătită pentru crearea tabelelor, iar tabul care apare implicit primul este cel al tabelelor. Există trei posibilități pentru a crea un tabel: prin simpla introducere a datelor, obținându-se un tabel oarecum asemănător cu cele din Excel, prin intermediul unui Wizard, sau direct în design view, unde utilizatorul decide pentru fiecare câmp în parte cum se va numi și pentru ce tip de date este definit(fig. 4).

După ce sunt completate toate rubricile planificate, recomandabil este ca unul din câmpuri să fie marcat drept cheie primară, care are rolul de individualiza înregistrările. Cheia primară poate fi însă formată și din mai multe câmpuri, pentru a fi stabilită trebuind să selectați toate câmpurile dorite, după care se efectuează clic dreapta pe unul dintre ele și se selectează opțiunea primary key, sau se apasă pe butonul de pe bara de comandă care are aceeași funcție(fig5).

În practică apare deseori necesitatea adăugării, sau ștergerii unor anumite câmpuri dintr-un tabel, după ce acesta a fost salvat și chiar și după ce a fost completat. Pentru a întreprinde aceste acțiuni este necesară deschiderea tabelului în Design view, fie prin clic dreapta și selectarea opțiunii, fie normal, după care se selectează Design view prin butonul de pe bara de comandă.

Pentru a adăuga un câmp în tabel, trebuie să selectați câmpul care trebuie să-l urmeze pe cel nou, și se selectează Insert Rows de pe bara de comanda, sau din meniul ce apare după un clic dreapta(fig. 6).

fig. 4 crearea unui tabel în modul Design view

fig. 5 stabilirea cheii primare pentru un anumit câmp fig. 6 introducerea unui nou rând deasupra câmpului de valoare_totală

Ștergerea unui anumit câmp al unui tabel se poate face asemănător cu introducerea unui nou rând, sau pur și simplu se apasă butonul delete de pe tastatură. Prin ștergerea câmpului din tabel, sunt șterse și toate datele care au fost memorate în acest câmp în tabel până în momentul ștergerii. Câmpurile cheie primară sau cheie străină nu pot fi șterse atâta timp cât există relații cu alte tabele prin intermediul lor.

De asemenea, tipul de date cate este stocat într-un anumit câmp poate fi modificat, prin selectarea câmpului respectiv și selectarea din listă a unui alt tip. Pe de altă parte, dacă date deja au fot introduse în tabel, anumite schimbări nu vor mai putea fi făcute și în majoritatea cazurilor schimbarea tipului de date nu este indicată. De exemplu, dacă tipul număr va fi transformat în text, atunci numerele memorate în respectivul câmp vor fi tratate ca simple șiruri de caractere, deci nu vor mai putea fi implicate în calcule matematice.

Tot în modul Design view atributele anumitor câmpuri pot fi stabilite cu rigurozitate pentru a proteja integritatea datelor, sau pentru a face baza de date compatibilă cu scopul pentru care a fost creată. Astfel, în figura 7 este prezentat modul în care valoarea introdusă în câmpul cantitate al tabelului medicamente este restricționată la valori pozitive, atât pentru a se evita erorile de tastare care ar putea duce la valori negative, cât și pentru a evita vânzarea mai multor medicamente decât se află în stoc la un moment dat.

.

fig. 7 atributele câmpului cantitate. Ca regulă de validare pentru acest

câmp, valorile trebuie să fie mai mari sau egale cu 0.

Pentru gestionarea unei farmacii sunt însă necesare mai multe date decât cele strict legate de medicamentele aflate în stoc la un moment dat. Astfel, în mod asemănător cu tabelul Medicamente, sunt create tabelele Furnizori, intrări, vânzări(care înregistrează numai data și numărul facturii, de intrare, sau ieșire, precum și furnizorul, în cazul tabelului intrări) și tabelul arhivă vânzări, care înregistrează toate tranzacțiile dintre farmacie și cumpărători (fig 8-10).

Odată ce toate tabelele necesare au fost create, până la începerea utilizării bazei de date, mai trebuie finalizată o etapă extrem de importantă și anume cea de a stabili relațiile dintre tabele. Principala calitate a unei baze de date trebuie să fie ușurința de utilizare, ceea ce presupune evitarea introducerii de mai multe ori a acelorași date, de exemplu, precum și capacitatea de a fi întreținută cât mai ușor.

Pentru a răspunde primei cerințe, a fost creată relația de unu la mai mulți, despre care se poate spune că este sufletul oricărui sistem de gestiune de baze de date și nu numai al programului Microsoft Access. Astfel, dacă anumite date fac referire la aceeași, sau aceleași date la un moment dat( salariații care lucrează la aceeași secție, abonații telefonici care locuiesc în același oraș, medicamentele care sunt cumpărate sau vândute pe aceeași factură, etc.), în loc să fie specificat acest lucru de fiecare dată când este introdusă o nouă înregistrare, sunt create două tabele primul memorând de exemplu orașele, iar cel de-al doilea abonații telefonici și datele referitoare la aceștia, legătura făcându-se printr-un simplu cod.

Desigur, între tabele pot exista și relații de unu la unu(care sunt folosite foarte rar) și relații de mai mulți la mai mulți, care reprezintă de fapt două relații de unu la mai mulți conjugate, combinate prin intermediul unul tabel secundar. Aceste relații, împreună cu integritatea referențială care este asigurată de Access, fac din întreținerea bazei de date un lucru mult mai simplu. Este suficientă modificarea datelor într-un tabel pentru ca datele care se află în legătură cu cele modificate să se schimbe și ele, iar ștergerea unei înregistrări dintr-un tabel va duce la ștergerea datelor direct legate de aceasta din tabelele care se află în legătură cu acesta.

fig. 8 tabelul Furnizori (Design view) fig. 9 tabelul intrări (Design view)

fig. 9 tabelul vânzări (Design view)

fig. 10 tabelul arhivă vânzări (Design view) fig. 11 exemplu de relație unu la mai mulți între tabelul furnizori și tabelul (un

furnizor poate apărea pe mai multe facturi). Se poate observa că

integritatea referențială este selectată, ca și ștergerile și

modificările „în cascadă”

fig. 12 relațiile dintre tabelele bazei de date MhedaFarm. Între tabelele medicamente și arhiva vânzări integritatea referențială nu este selectată

pentru ca datele stocate cu privire la vânzări să nu fie șterse atunci când medicamentele la care fac referire sunt scoase din stoc.

Relațiile între tabele se fac cu ușurință, selectând câmpul dintr-un tabel și executând drag-and-drop pe câmpul pereche din celălalt tabel. Relațiile pot fi șterse prin selectarea liniilor care leagă tabelele și apăsarea pe delete și pot fi modificate prin selectarea relațiilor cu clic dreapta și intrarea în editare.

După ce au fost stabilite relațiile dintre tabele, deja se poate trece la introducerea datelor în baza de date. Prima metodă pe care o puteți folosi este introducerea directă a datelor în tabele, însă această metodă se poate dovedi ceva mai greoaie, mai ales că în acest caz anumite facilități ale Access nu pot fi folosite la adevărata lor valoare. Introducerea directă a datelor este o soluție în cazul în care tabelul respectiv nu este deseori implicat în operații ale bazei de date( de exemplu tabelul Furnizori).

O soluție mult mai eficientă și care propune și o interfață mult mai prietenoasă față de utilizator o reprezintă formularele. Formularele sunt soluții de introducere și extragere a datelor pe ecran, înregistrările fiind prezentate sub formă de cartele index, câte una o dată. De asemenea, formularele pot să aibă în componență sub-formulare, care să conțină informații suplimentare referitoare la înregistrarea din formular, pot căpăta o interfață personalizată în funcție de dorințele utilizatorului prin adăugarea de imagini și text și pot conține butoane, care să întreprindă anumite acțiuni prestabilite, sau să ruleze un macro sau un modul de cod Visual Basic.

Formularele pot fi create tot în două moduri, prin proiectare directă (Design view), sau prin intermediul unui Wizard, care să ducă la un formular tipizat, în funcție de dorințele utilizatorului. Formularele prezintă numeroase atribute, ceea ce face din ele cele mai flexibile obiecte Access și pot avea numeroase destinații.

Pentru a crea un formular cu ajutorul programului Wizard, se selectează tabul Forms în fereastra principală a bazei de date și se face dublu clic pe opțiunea create form by using wizard. În fereastra care apare este ales din listă tabelul pe baza căruia dorim să creăm formularul și apoi trecem din fereastra stângă în cea dreaptă câmpurile care trebuie să facă parte din formular (fig 13).

fig. 13 selectarea câmpurilor care trebuie să apară în formular

Mai departe este ales modul în care îl dorim organizat(după coloane, după linii, tip foaie de calcul, sau pe rubrici) și pasul următor alegem stilul de grafică pe care îl preferăm, dintre cele predefinite. În final, alegem numele formularului(implicit va fi numele tabelului pe care este bazat) și dacă dorim să îl deschidem pentru a vizualiza și introduce date, sau pentru a-i modifica atributele.

fig 14 alegerea numelui și a modului în care va fi deschis automat formularul fig. 15 formular simplu creat cu ajutorul programului Wizard

Datorită flexibilității lor, formularele pot conține sub-formulare, obiectul format din formular și sub-formular putând fi creat de asemenea cu ajutorul programului Wizard. Pentru a crea un formular care să aibă un sub-formular în componență, la primul pas al creării unui formular, în loc să alegem câmpuri numai dintr-un tabel, alegem câmpuri din două, având grijă ca aceste tabele să fie legate printr-o relație viabilă. La următorul pas suntem întrebați dacă dorim să creăm un formular cu sub-formular, sau două formulare legate între ele. În cazul în care alegem prima variantă, trebuie să alegem care dintre cele două tabele va fi bază pentru formular și care pentru sub-formular.

Următorii pași sunt aceeași cu cei necesari creării unui formular simplu, cu singura diferență că la ultimul pas este cerut și un nume pentru sub-formularul component. Numele implicit pentru acesta va fi dat de numele tabelului pe care se bazează urmat de cuvântul „subform”. Sub-formularele sunt văzute în tabul Forms ca orice formular normal.

Avantajele sub-formularelor sunt mari, importanța lor putând fi observată cel mai bine din chiar exemplul formularului intrări , care are în componență sub-formularul medicamente (fig. 17).

fig. 16 pregătirea unui formular pe baza tabelului intrări, care să aibă în componență

un sub-formular bazat pe tabelul medicamente

fig. 17. formularul intrări și sub-formularul medicamente, sub aspect de tabel

Prin intermediul sub-formularului, medicamentele sunt introduse automat în stoc în timp ce sunt introduse și în formularul de intrări, ceea ce duce la îndeplinirea a două funcții în același timp: completarea stocului, dar și organizarea medicamentelor în funcție de numărul de intrare și data la care acestea sunt cumpărate de la furnizori. De asemenea, după cum se observă și din imagine, numărul de intrare și data sunt completate automat, utilizatorul nefiind obligat să le introducă de fiecare dată când adaugă un nou medicament pe factură.

Folosind aceleași metode este creat și formularul de vânzări, numai că legătura dintre acesta și medicamente este făcută indirect, prin intermediul tabelului arhivă vânzări. Datorită acestui lucru și al faptului că integritatea referențială nu este activată între tabelul medicamente și tabelul arhiva vânzări, în acesta din urmă rămân nealterate toate înregistrările care sunt introduse de-a lungul timpului în facturile de vânzare, ceea ce permite ținerea evidenței vânzărilor pe o perioadă teoretic nelimitată.

Astfel, prin intermediul a numai trei formulare, utilizatorul nu mai trebuie să deschidă direct tabele niciodată, lucrând tot timpul cu o interfață mult mai prietenoasă și ușor de folosit.

Filtre, interogări, rapoarte

Acum mecanismul de introducere al datelor este funcțional și destul de ușor de folosit, dar baza de date este încă departe de a fi cu adevărat funcțională. Într-o bază de date cât de cât complexă, simpla introducere a datelor și regăsirea lor mai târziu nu este o soluție viabilă și nici dorită, dealtfel. Rolul bazei de date, pe lângă cel de stocare, este acela de ușura cât mai mult utilizarea funcțiilor sale și prelucrarea informațiilor stocate.

Microsoft Access pune la dispoziția utilizatorului numeroase ustensile pentru a ușura munca utilizatorului. Aceste ustensile, în funcție de complexitatea operațiilor ce trebuie îndeplinite, pot cere cunoștințe mai avansate în utilizarea Microsoft Access sau programarea în Visual Basic.

Cea mai simplă operație de întreținere a unei baze de date este aceea de a organiza datele dintr-un anumit câmp într-o anumită ordine, crescătoare sau descrescătoare, ordine alfabetică, etc.

fig 18, sortarea în ordine alfabetică a denumirilor medicamentelor aflate în stoc.

După cum se observă și din figura 18, pentru a sorta ascendent sau descendent informațiile stocate în baza de date, este suficient ca unul din câmpurile după care trebuie sortată baza de date să fie selectat și apoi în meniul records se selectează sort și tipul de sortare pe care o dorim.

Pe lângă metodele de sortare, tot în meniul records descoperim filtre, care pot îndeplini mai multe acțiuni. Astfel, prin intermediul acestor filtre putem obține un tabel secundar care să conțină numai înregistrările care au câmpurile identice cu câmpul selectat(filter by selection), putem obține un tabel secundar care să conțină numai înregistrările care au câmpurile diferite de câmpul selectat(filter excluding selection), informațiile pot fi filtrate într-un mod asemănător cu modul fylter by selection, dar alegând dintr-o listă câmpul după care se dorește făcută filtrarea sau poate fi creată o interogare de selecție(advanced filter/sort).

fig. 19 meniul filter cu metodele de filtrare predefinite.

În practică apar însă foarte des situații în care datele să fie sortate în funcție de mai multe variabile sau condiții și deseori sunt necesare operații complexe de menținere a bazelor de date, cum ar fi ștergerea automată a unor înregistrări învechite, sau actualizarea tuturor în funcție de necesități, precum și organizarea lor în moduri care să facă ușoară vizualizarea lor, lucru foarte util în cazul bazelor de date foarte stufoase. Pentru toate acestea există interogările.

Interogările sunt de mai multe tipuri, în funcție de destinația lor și precum formularele, sunt bazate pe tabele, dar și pe alte interogări. Interogarea „de bază”, este interogarea de selecție, care are rolul de a filtra datele din tabelele pe care le are la bază în funcție de criteriul ales, de a le combina, afișând în final numai câmpurile care sunt dorite. Interogările de selecție sunt foarte utile atunci când datele trebuie organizate în funcție de unul sau mai mulți parametri. Parametrii sunt variabile care, trecute în tabul de criterii țin locul acestora, utilizatorul fiind întrebat înainte de a rula interogarea care este valoarea parametrului, pentru a selecta din tabel numai înregistrările dorite. Parametrii trebuie scriși între paranteze pătrate, având ca denumire un alt nume decât numele câmpului pentru care servesc drept criteriu de sortare (fig20).

Alt tip de interogare este interogarea de ștergere, care șterge automat toate înregistrările din tabelele asociate ei, în cazul în care anumite criterii sunt îndeplinite. Pentru a crea o interogare de ștergere trebuie creată mai întâi o interogare simplă, după care în meniul Query se selectează

fig 20 interogare de selecție care afișează numai înregistrările care au în câmpul denumire valoarea pe care o introduce utilizatorul de la tastatură

fig. 21 căsuța unde este cerut parametrul după

care va fi efectuată sortarea

fig 22. tabelul query, care este disponibil la deschiderea unei interogări in Design view. Pot fi observate toate tipurile de interogări posibile, iar tipul select query este selectat implicit.

opțiunea delete query. În acest moment anumite câmpuri ale interogării de selecție dispar și apare unul nou și anume delete unde este specificat modul de ștergere, adică acolo unde este îndeplinită condiția, sau începând de acolo de unde este îndeplinită condiția. La criterii este trecută condiția care trebuie îndeplinită pentru ca ștergerea să aibă loc, pentru câmpul dorit. În momentul în care interogarea este rulată, utilizatorul este atenționat că dacă va continua acțiunea, datele vor fi șterse definitiv din baza de date. De asemenea, în fereastra de atenționare este specificat și numărul de înregistrări care urmează să fie șterse.

O interogare care are un mecanism de funcționare asemănător cu cel al interogării de ștergere este interogarea de actualizare sau update query. Această interogare are rolul de a modifica datele din toate tabelele asociate, în câmpurile specificate, fiind acestea fiind înlocuite cu datele care sunt introduse în câmpul update to, sau rezultatul unei expresii care este introdusă în același câmp(fig 24).

Pentru a crea o interogare de actualizare se procedează ca în cazul interogării de ștergere, în meniul Query selectându-se varianta update Query. Ca și în cazul interogării de ștergere utilizatorul este atenționat înainte să o ruleze că datele din tabel vor fi modificate definitiv și este specificat și numărul de înregistrări care vor fi afectate.

fig 23 interogare de ștergere a înregistrărilor din tabelul medicamente, care au completată în câmpul cantitate valoarea 0, ceea ce înseamnă că nu mai există medicamente de tipul respectiv în stoc.

fig. 24 interogare de actualizare a înregistrărilor din tabelul medicamente, la nivelul câmpului cantitate. Din valoarea care este stocată în acest câmp este scăzută valoarea care se referă la medicamentul respectiv, din arhiva de vânzări, adică din factura de ieșire. Legătura cu aceasta făcută prin intermediul parametrului [nr_factura], care face ca datele care vor fi modificate să fie cele care se regăsesc și pe factura dorită, numărul acesteia fiind introdus de utilizator precum valoarea oricărui parametru. Se observă că pentru a scrie expresia, numele tabelelor și câmpurilor sunt trecute în paranteze drepte, ceea ce justifică faptul că un parametru, care este scris după aceeași sintaxă, trebuie să fie denumit altfel decât numele câmpului la care face referire, în special și altfel decât numele oricărui câmp din tabelul la care face referire, în general.

fig 25 avertizarea apărută înainte de rularea unei interogări de ștergere. fig 26 avertizarea apărută înainte de rularea unei interogări de actualizare.

În partea de sus este specificat numărul de rânduri care urmează În partea de sus este specificat numărul de rânduri ce urmează

să fie șterse să fie modificate.

Alte trei tipuri de interogări ce pot fi utilizate sunt interogarea de adăugare( append query), interogarea crosstab și interogarea cu ajutorul căreia poate fi construit un nou tabel pe baza unuia sau mai multor tabele deja existente. Interogarea de adăugare are un rol asemănător cu cea de actualizare, numai că prin intermediul acesteia pot fi adăugate înregistrări în continuarea tabelului pe care îl specifică utilizatorul, sau pot fi adăugate date în câmpurile dorite. Interogarea tip crosstab combină două sau mai multe tabele pentru a obține o foaie tip tabel, unde câmpurile de intersecție dintre liniile și coloanele specificate conțin informația dorită, sau pur și simplu sunt bifate.

fig. 27 căsuța care solicită introducerea numelui tabelului la care să fie adăugate date în cazul unei interogării de adăugare (append query)

Din numărul de interogări care pot fi create de utilizator se înțelege cu ușurință faptul că Microsoft Access pune la dispoziția acestuia o mulțime de ustensile puternice și relativ ușor de utilizat. Există însă mult mai multe opțiuni, care doar așteaptă să fie descoperite, iar una din cele mai importante și des utilizate este opțiunea totals, care poate fi găsită sub meniul View în timp ce interogarea se află în Design view.

Cu ajutorul acestei facilități, utilizatorul are acces la funcții uzuale, cum ar fi cele de însumare a valorilor numerice din toate câmpurile unei înregistrări și afișarea rezultatului într-un câmp separat, găsirea automată a valorii minime și maxime dintr-o înregistrare, afișarea primului sau ultimului câmp care îndeplinește condiția trecută în tabul de criterii, sau numărarea elementelor specificate, care se regăsesc într-o înregistrare. Pe lângă toate aceste funcții predefinite puse la dispoziția utilizatorului, opțiunea totals oferă utilizatorului ocazia de a crea câmpuri adiționale în interogare, care să conțină valori ce sunt rezultatul unor expresii. Desigur, expresiile pot fi utilizate și în cazul celorlalte tipuri de interogări (fig. 28), dar se dovedesc cele mai utile în cazul interogărilor care au selectată opțiunea totals.

fig. 28 exemplu de interogare care utilizează o expresie. Expresia DateDiff("m",[data_intrarii],Now()) are rolul de a calcula diferența dintre data calendaristică actuală și data care corespunde intrării în stoc a medicamentului respectiv, rezultatul fiind afișat în luni. În combinație cu condiția >[valabilitate]-1 interogarea filtrează medicamentele și le afișează numai pe cele care mai au o lună până când expiră.

Din ceea ce s-a spus până acum despre interogări, se observă faptul că o bază de date creată în Microsoft Access poate fi întreținută cu ușurință, odată ce un număr de filtre necesare este pus la dispoziția utilizatorului. Însă datele filtrate și nu numai, în practică, sunt destinate nu numai unei existențe virtuale, în memoria calculatorului și pe suportul de memorare, cât și imprimării, pentru a fi utilizate mai departe în alte departamente, de exemplu( sau în cazul farmaciei, datele care sunt stocate în tabelele de intrări și vânzări trebuie imprimate pentru a se putea vorbi de o eliberare de factură).

Pentru efectuarea acestei operații, Microsoft Access pune la dispoziția utilizatorului rapoartele, care reprezintă pagini tipizate, ce permit lucrul cu o interfață prietenoasă și care asigură și un aspect deosebit paginilor imprimate. Rapoartele se bazează pe unul sau mai multe tabele, dar și pe una sau mai multe interogări, astfel încât datele imprimate să fie rezultatul unei filtrări (de exemplu, în cazul unei facturi, trebuie afișate numai datele referitoare la acestea, pe când, dacă raportul ar fi construit pe baza tabelului, el ar conține toate datele de pe toate facturi). De asemenea, rapoartele prezintă un număr de funcții predefinite. De exemplu, pe un raport utilizatorul poate alege ca valorile memorate să fie însumate, sau ca valoarea maximă dintre acestea să fie afișată, ca și în cazul funcțiilor totals din cazul interogărilor.

Pentru a crea un raport, utilizatorul poate recurge la Design view sau la programul Wizard, care îl va conduce, ca și în cazul formularelor și interogărilor, prin pași simpli la raportul dorit.

Crearea raportului cu ajutorul programului Wizard se aseamănă mult cu operația asemănătoare făcută în cazul formularelor. Primul pas presupune alegerea tabelelor sau interogărilor pe care se bazează raportul și selectarea câmpurilor care trebuie să apară în raport (fig. 29). Următorul pas presupune alegerea modului în care va fi organizat raportul, funcție foarte importantă în cazul în care acesta se bazează pe mai multe tabele sau interogări. În cadrul acestei etape se stabilește ce nivel ierarhic ocupă fiecare tabel în parte, fiind posibilă setarea a maxim patru de nivele (fig. 30).

fig. 29 primul pas care trebuie urmat pentru a crea un raport. În fereastra dreaptă se află câmpurile care vor apărea în raport, în cazul de față fiind vorba de câmpuri din două tabele.

fig. 30 fereastra unde este stabilită ierarhia tabelelor în formular. În cazul de față este vorba de un raport care are la bază numai două tabele, cel superior ierarhic fiind tabelul intrări.

Însă Microsoft Access permite și o ierarhizare mai minuțioasă, care ține de organizarea câmpurilor în pagină și care poate duce de exemplu la crearea unui parametru, pe baza căruia va fi construit raportul (fig. 31)

fig. 31 pasul trei al programului Wizard pentru crearea unui raport. Câmpul nr_intrare din tabelul intrări are prioritatea și cum același câmp este prezent și în tabelul medicamente, raportul la deschidere va cere introducerea numărului facturii de intrare pe care utilizatorul o dorește imprimată.

Pasul următor este poate cel mai important, deoarece în cadrul său utilizatorul decide dacă pe raport va fi prezentă de exemplu suma tuturor prețurilor medicamentelor, sau informații de altă natură care pot fi adăugate în mod automat (fig. 32 și 33). De asemenea, în cadrul aceluiași pas, poate fi stabilit un filtru de sortare al datelor, numărul maxim de sortări concomitente fiind de patru.

fig. 32. pasul patru, în cadrul căruia pot fi decise metode de sortare pentru fig. 33 fereastra summary options, unde utilizatorul decide dacă

maxim patru câmpuri. raportul său va conține și valori calculate automat de

baza de date. În cazul exemplificat, raportul va afișa

suma valorilor memorate în câmpurile valoare

și pret_facturat

Odată ce toate aceste lucruri au fost făcute, utilizatorul nu mai trebuie în următorii pași decât să aleagă stilul în care va fi organizat raportul din punct de vedere grafic, dacă acesta va fi creat pe o pagină tip vedere sau tip portret și apoi, numele și modul în care va fi deschis raportul, adică pentru a previzualiza pagina înainte de imprimare, sau pentru a-i modifica setările și elementele componente.

fig. 34 pasul cinci; este ales modul de organizare al elementelor în pagină și dacă pagina va fi de tip vedere sau de tip portret

După cum se observă, Access pune la dispoziția utilizatorului o funcție care îi permite să creeze rapoarte cu aspect profesionist cu mare ușurință, acestea prezentând chiar și facilități asemănătoare cu cele pe care le oferă interogările. Datele sunt așezate bine în pagină, ceea ce permite vizualizarea lor cu ușurință, ceea ce recomandă rapoartele folosirii și atunci când nu este necesară o imprimare.

fig. 35 ultimul pas al programului Wizard; este ales numele raportului și fig. 36 căsuța care solicită parametrul pentru rilarea

modul în care acesta va fi deschis raportului. În cazul de față, este solicitat

numărul facturii de intrare

fig. 37 Raport deschis în modul previzualizare imprimare pentru numărul facturii de intrare specificat.

Obiecte, proceduri, comenzi de tip Macro

Tot ceea ce a fost spus până acum poate conduce utilizatorul spre crearea unei baze de date simple, care să beneficieze însă de filtre și de toate funcțiile de bază care sunt necesare. Însă pentru ca munca utilizatorului să fie mai ușoară și pentru ca baza de date să aibă o funcționalitate ridicată, aceasta poate beneficia de puterea unui limbaj de programare precum Visual Basic, creat special pentru a lucra cu baze de date și de multitudinea de setări care sunt specifice fiecărui obiect conținut în parte.

Obiectele reprezintă modul în care Access gestionează baza de date, obiecte fiind atât formularele, tabelele, interogările, cât și elementele care pot fi conținute de un formular (butoane, imagini, casete text, etc) și chiar înregistrările și câmpurile unui tabel luate individual. Asta duce la un control sporit al utilizatorului asupra bazei de date și la o creștere substanțială a funcționalității acesteia.

Utilitatea obiectelor poate fi exemplificată cel mai bine prin intermediul butoanelor și imaginilor, care reprezintă tipurile de obiecte cel mai des folosite într-un formular. Important de știut este faptul că pentru a adăuga obiecte în orice formular existent, acesta trebuie mai întâi deschis în modul Design view, și bara de ustensile trebuie să fie vizibilă. În cazul în care aceasta nu apare automat, utilizatorul trebuie să urmeze calea View-toolbox atunci când formularul este deschis în modul Design view.

Inițial, partea activă a formularului nu ocupă decât un loc restrâns pe ecran, ceea ce înseamnă că cel mai probabil aceasta trebuie mărită pentru a face loc butoanelor și celorlalte obiecte ce vor fi adăugate. Mărirea suprafeței utile este făcută prin drag, trăgându-se fie de partea dreaptă pentru a-i fi mărită lățimea, fie de partea de jos, de deasupra barei etichetate ca Form footer, pentru a-i fi mărită înălțimea.

Următorul pas ce trebuie urmat pentru a obține un formular cu aspect grafic plăcut este acela de a reorganiza câmpurile în funcție de necesități și preferințe, acestea putând fi re-dimensionate sau mutate dintr-un loc în altul cu ajutorul mausului. De asemenea, proprietățile fiecărui câmp în parte pot fi modificate prin efectuarea unui clic dreapta deasupra câmpului dorit și selectarea opțiunii propreties. Tot prin intermediul meniului apărut la clic dreapta pot fi setate atribute precum culoarea în care va fi afișat conținutul câmpului, culoarea de fundal a câmpului, modurile de aliniere și efectele grafice care pot însoți câmpul respectiv.

fig. 38. Lista care conține toate obiectele care pot fi adăugate la un formular

fig. 39 proprietățile unui câmp selectat, care țin fie de așezarea în formular a câmpului, fie de tipul de date care este memorat în acestea, fie de o eventuală acțiune care poate avea loc în cazul unui clic sau al apăsării unei taste, al mișcării mouselui, etc

După ce câmpurile sunt așezate în formular în funcție de preferințe, la acesta poate fi adăugată și o imagine, care poate fi o fotografie, sau o schiță. Pentru a adăuga o imagine este selectată opțiunea image din lista cu obiecte, după care este delimitat cu ajutorul mausului spațiul din formular care va fi ocupat de aceasta (fig 40). După ce spațiul este delimitat, apare fereastra care solicită utilizatorului să aleagă fișierul care conține imaginea dorită. După inserarea imaginii, aceasta poate fi mutată sau re-dimensionată după dorință, ca și în cazul câmpurilor și a oricărui obiect care poate fi adăugat într-un formular.

fig. 40 adăugarea unei imagini într-un formular. Butonul încercuit este cel care permite adăugarea acesteia, iar chenarul reprezintă locul pe care

imaginea îl va ocupa.

Deoarece formularele reprezintă cea mai prietenoasă interfață, este de dorit ca lucrul să se desfășoare cât mai mult prin intermediul lor. De aceea există un număr de obiecte care pot înlocui anumite funcții și altele care pot îndeplini anumite funcții, fie predefinite, fie construite de utilizator. Acestea din urmă sunt desigur butoanele, care permit acces la funții complexe printr-un simplu clic.

Există trei modalități de a crea un buton, din punctul de vedere al acțiunii pe care acesta trebuie să o îndeplinească. Prima este și cea mai simplă și cu ajutorul acesteia pot fi create butoane care să îndeplinească funcții uzuale, puse la dispoziția utilizatorului de către Access (crearea, căutarea sau ștergerea unei înregistrări, deschiderea, sau închiderea unui formular, raport, sau a unei interogări, imprimarea unui raport, ieșirea din aplicație, etc.). Pentru a crea un astfel de buton este suficient ca din lista de obiecte să fie aleasă opțiunea Command button și să fie stabilit locul unde acesta se va afla, utilizând aceeași metodă ca și în cazul unei imagini, după care va fi pornit automat programul Wizard.

Din lista care apare este aleasă operația dorită, după care se trece la alegerea unui text care va fi inscripționat pe buton sau a imaginii care se va afla pe acesta. Poate fi aleasă una din imaginile puse la dispoziție de Access, sau poate fi aleasă una proprie, cu condiția ca aceasta să fie salvată în format .BMP. (această opțiune permite crearea de măști pentru butoane, care să dea acestora un aspect nu numai plăcut, ci și modern). Ultimul pas presupune alegerea unui nume pentru buton, acesta fiind folosit de Access pentru a se referi la obiect în operațiile viitoare. În mod implicit numele va fi cel al procedurii Visual Basic care este creată automat pentru butonul respectiv.

fig. 41 Alegerea din listă a funcției pe care o va îndeplini butonul. În acest caz, adăugarea unei noi înregistrări atunci când butonul este apăsat

.

fig. 42 Alegerea textului ce va fi inscripționat pe buton, sau a imaginii care va ține locul acestuia. În ambele cazuri, în stânga este prezentată o imagine a aspectului butonului în stare finală.

Celor trei pași descriși mai sus li se mai poate adăuga unul, în cazul în care funcția aleasă pentru buton o cere (de exemplu, dacă butonul trebuie să deschidă un formular, este adăugat pasul care cere utilizatorului să specifice care este formularul respectiv).

După cum am spus și mai sus, o dată cu butonul este creată automat și o procedură Visual Basic, aceasta fiind de fapt cea care rulată îndeplinește funcția butonului. Deci în cazul în care dorim ca butonul nostru să îndeplinească alte funcții decât cele puse la dispoziție de Access, suntem nevoiți să scriem chiar noi procedura care va fi rulată la clic. Pentru a face asta fie creăm un buton oarecare cu ajutorul programului Wizard, după care la clic dreapta selectăm Build event și înlocuim codul din procedura deja creată cu cel dorit, fie creăm un buton și întrerupem programul Wizard la primul pas. În acest caz se impune selectarea în tabul Event al proprietăților butonului, alegerea situației în care va fi executată acțiunea și tipul de acțiune care va fi întreprinsă (în cazul de față, [Event Procedure]), după care este selectat Build event fie în meniul de clic dreapta, fie chiar în tabul Event, apăsând pe butonul cu trei puncte care apare în dreapta câmpului după selectarea opțiunii dorite.

fig. 43 Tabul Events. În cazul de față este specificat faptul că procedura va fi executată atunci când se efectuează clic pe buton. În dreapta se observă butonul cu trei puncte Build event.

Private Sub Command11_Click()

On Error GoTo Err_Command11_Click

DoCmd.GoToRecord , , acNewRec

Exit_Command11_Click:

Exit Sub

Err_Command11_Click:

MsgBox Err.Description

Resume Exit_Command11_Click

End Sub

fig. 44 Codul creat automat, care are ca rol crearea unei noi înregistrări în tabelul curent. Fragmentul de cod care face aceasta este DoCmd.GoToRecord , , acNewRec. În cazul unei erori la apelarea procedurii, este afișată o căsuță de avertizare.

Cum o bază de date poate fi foarte complexă și butoanele și funcțiile pe care acestea le apelează, precum și legăturile dintre diferitele elemente pot fi numeroase. De aceea etapa de proiectare este foarte importantă, astfel încât în momentul în care este început lucrul propriu-zis la construcția bazei de date, acesta să fie făcut în mod cursiv. O bună proiectare duce la evitarea problemelor de execuție (cunoscute și ca bug-uri) și la identificarea în timp util a eventualelor erori.

Tot deoarece o bază de date poate fi foarte complexă, în unele formulare se vor strânge numeroase butoane și elemente, care au ca ordine implicită de primire a focus-ului (ordinea în care cursorul vizitează căsuțele text atunci când sunt introduse date și ordinea în care sunt selectate butoanele la apăsarea repetată a tastei TAB) este ordinea lor în tabel, în cazul căsuțelor text și ordinea în care au fost create, în cazul butoanelor.

Deoarece locul elementelor poate fi schimbat după ce sunt adăugate toate butoanele, fie pentru a face loc, fie pentru a crea o senzație de ordine, ordinea în care vor fi selectate elementele după o re-aranjare masivă va putea produce confuzie. La fel și în cazul în care dintr-un motiv sau altul după ce sunt adăugate toate butoanele, este adăugat un nou câmp în formular, acesta urmând să primească focus-ul după ce toate butoanele sunt vizitate, ceea ce ar îngreuna procesul de introducere a datelor.

Pentru a rezolva această problemă, Access pune la dispoziția utilizatorului posibilitatea de a schimba ordinea în care sunt selectate elementele (Tab Order). La clic dreapta în orice porțiune a formularului aflat în Design view, se alege din meniu opțiunea Tab Order (fig. 39) și în fereastra care apare, utilizând mausul (prin drag and drop) este aleasă ordinea în care elementele vor primi focus-ul, primul fiind elementul cel mai de sus în lista apărută (fig. 45).

fig, 45 fereastra care prezintă lista tuturor elementelor din formular. În cazul de față, câmpul cod_furnizor primește primul focus-ul, iar butonul Command11 este selectat utltimul.

Nu numai butoanele pot apela proceduri Visual Basic, aceasta fiind o posibilitate pe care o au majoritatea obiectelor Access. Astfel, o procedură Visual Basic poate lucra și în spate unui câmp, pentru a calcula automat o valoare, de exemplu.

Pentru a face asta, tabelul, sau formularul care conține câmpurile vizate trebuie să fie deschis în modul Design view. Apoi se efectuează clic dreapta pe câmpul dorit și se deschid proprietățile sale. În tabul Event este selectată opțiunea [Event Procedure], după care cu ajutorul opțiunii Build Event este scris codul care va fi rulat atunci când câmpul respectiv va primi focus-ul.

fig. 46 În sub-formularul medicamente, legat de formularul intrări, câmpul valoare va apela o procedură în momentul în care primește focus-ul (în cazul câmpurilor, focus-ul este primit atât la Enter, cât și la clic, sau în cazul folosirii tastei TAB).

Private Sub valoare_Enter()

Me!valoare = Me!cantitate * Me!pret_unitar

End Sub

Private Sub val_TVA_Enter()

Me!val_TVA = Me!valoare * 0.19

End Sub

Private Sub valoare_totala_Enter()

Me!valoare_totala = Me!valoare + Me!val_TVA

End Sub

fig. 47 Procedurile apelate de câmpurile valoare, val_TVA și valoare_totala. Astfel, aceste câmpuri sunt completate automat cu rezultatele operațiilor bazate pe datele aflate în câmpurile cantitate și preț_unitar.

fig. 48 Formularul furnizori în varianta finală. Pot fi observate imaginea, butoanele adăugate și imaginile care servesc drept măști pentru butoane.

Prin intermediului codului Visual Basic, utilizatorul poate obține maximum de la baza sa de date. Deoarece limbajul este unul foarte solid, un utilizator care are noțiuni avansate de programare poate organiza toată activitatea bazei de date, în modul cel mai profesionist cu putință. De asemenea, toate activitățile fiind bazate pe cod, este obținut un spor de viteză deloc de neglijat, pentru Access fiind mai simplu de executat o suită de proceduri, decât o suită de comenzi legate de interogări și formulare, care au același rol. Însă după cum am mai spus, interogările și formularele au rolul de a ușura munca utilizatorului, iar calculatoarele moderne sunt suficient de rapide pentru a micșora cât mai mult diferența de timpi între cele două cazuri.

Însă nu toți potențialii utilizatori dețin cunoștințe solide de Visual Basic și cum anumite acțiuni necesită suite de evenimente, există soluția comenzilor de tip Macro. Acestea reprezintă de fapt liste de comenzi predefinite în Access, ai căror parametri pot fi modificați în funcție de necesități. Prin intermediul unui Macro pot fi executate acțiuni complexe, cum ar fi deschiderea unui formular, deschiderea unei interogări, salvarea datelor din interogare, închiderea acesteia și închiderea formularului, toate prin apăsarea unui singur buton sau prin selectarea unui anumit câmp.

Pentru a crea un Macro care să fie apelat de un buton, în Design view se creează un buton folosind oricare din metodele prezentate, după care se deschid proprietățile acestuia și în tabul Event acolo unde ar trebui să se găsească [Event Procedure] se trece numele unui Macro dorit, sau dacă acesta nu există, se lasă câmpul gol și se apasă Build Event și din lista care apare se selectează Macro Builder (fig. 49). Apoi este introdus un nume pentru noul Macro și se poate trece la construirea propriu-zisă.

Un Macro are aspectul unui tabel, fiecare câmp completat al său reprezentând o instrucțiune care va fi executată, ordinea urmată fiind de sus în jos, la terminarea execuției unei instrucțiuni trecându-se la cea de pe rândul următor. În partea de jos a tabelului se află zona unde sunt specificate atributele instrucțiunii selectate (de exemplu, în cazul unei instrucțiuni de deschidere a unei interogări, trebuie specificat numele interogării și modul în care aceasta va fi deschisă) (fig. 50).

fig. 49 selectarea utilitarului de creare a unui Macro atunci când este apăsat Build Event și nu există nici un eveniment specificat în tabul Event.

fig. 50 exemplu de Macro, care execută două instrucțiuni: afișează o căsuță text de atenționare și salvează datele din raportul selectat în format extern. În cazul de față salvează datele din raportul căutare_vânzări în format Excel, cerând de fiecare dată numele fișierului care va fi creat, câmpul Output File fiind lăsat ne-completat.

Gestionarea activității unei farmacii

Având în vedere cele deja spuse, în paginile următoare va fi pus accentul pe funcțiile bazei de date MhedaFarm și pe substratul acestora, fără a intra însă prea mult în detalii acolo unde nu este cazul, fie pentru că respectivele elemente au fost deja prezentate drept exemplu, fie pentru că metodele de creare au fost deja explicate.

Programul MhedaFarm are ca scop înregistrarea întregii activități a unei farmacii, fără a se ocupa însă și de partea financiară, care este în general gestionată de aplicații dedicate, punând însă la dispoziția acestora toate datele necesare pentru o bună contabilitate. S-a avut în vedere nu numai înregistrarea „traficului” de medicamente din farmacie, ci și fluidizarea acestuia și înregistrarea tuturor pașilor, astfel încât în orice moment să existe copii de siguranță, în special după facturile de intrare și de ieșire. Și desigur, a fost dorită o interfață cu aspect plăcut, profesionist chiar, care să arate faptul că programele moderne pot îmbina cu succes utilul cu plăcutul.

Din punctul de vedere al etapelor în care a fost realizat, prima a fost desigur etapa de proiectare, pe parcursul căreia au fost stabilite elementele care vor fi conținute obligatoriu de baza de date, funcțiile bazei de date și elementele necesare îndeplinirii lor (funcții alese din punct de vedere cât mai practic cu putință), și interfața cu care va lucra virtualul utilizator al respectivei baze de date.

Odată stabilite toate acestea, următoarea etapă a fost reprezentată de pregătirea tuturor elementelor grafice necesare în baza de date, acestea constând în fundale (în număr de două) și măști pentru butoane, prin intermediul cărora s-a încercat realizarea unui aspect oarecum asemănător cu cel al paginilor web. Toate imaginile au fost create în Adobe PhotoImpact 5, pornindu-se de la zero în cazul fundalelor și fiind utilizat programul tip Wizard pentru a fi create măștile de butoane (fig. 50 și 51)

fig. 51 programul tip Wuzard care permite construirea de butoane web, folosit pentru crearea de măști pentru butoane pentru baza de date.

fig 52 alegerea nuanțelor pentru definirea umpluturii panoului butonului.

fig 53. Exemple de butoane create cu ajutorul programului Adobe PhotoImpact 5

După ce toate elementele grafice au fost elaborate, s-a trecut la crearea tabelelor Access. Baza de date are la bază cinci tabele și anume:

furnizori: cod_furnizor, denumire, adresa, nr_telefon

intrari: nr_intrare, data_intrarii, cod_furnizor

medicamente: cod_medicament, denumire, cantitate, pret_unitar, valoare, valoare_TVA, valoare_totala, nr_intrare, data_intrarii, valabilitate, pret_vanzare

arhiva vanzari: numar_v, cod_medicament, denumire, factura, cantitate, pret_unitar_v, valoare_v, valoare_TVA_v, valoare_totala_v, valoare_compensare, pret_facturat, data_facturii

vanzari: factura, data_facturii

Tabelele au fost trecute în ordinea în care sunt și legate (fig. 12), câmpurile scrise cu litere îngroșate reprezentând cheile primare, iar cele scrise cu litere cursive reprezentând cheile străine. În tabelele intrari și vanazari cheile primare sunt formate din câte două câmpuri, astfel încât să nu fie obținute înregistrări ne-individualizate, dar și pentru ca datele completate în formulare să fie completate automat și în sub-formulare, deci și în tabelele medicamente, respectiv arhiva vanzari (în felul acesta utilizatorul nu este obligat să introducă de la tastatură de fiecare dată aceleași informații, cum ar fi data facturii sau numărul acesteia).

După ce toate tabelele au fost create, s-a trecut la construirea interogărilor și a rapoartelor și abia după aceea a formularelor, avându-se în vedere scopul ca baza de date să poată fi utilizată în întregime numai prin intermediul acestora.

Lista interogărilor utilizate de baza de date, tipul lor și funcția pe care o au:

cautare_medicament (select query): afișează toate datele referitoare la medicamentul a cărui denumire este introdusă de la tastatură, având parametru în câmpul denumire. Se bazează pe tabelul medicamente.

factura intrare (select query): afișează toate datele referitoare la medicamentele aflate pe o anumită factură de intrare, al cărei număr este introdus de la tastatură, cerut de un parametru din câmpul nr_intrare. Se bazează pe tabelele medicamente și intrari

eliminare intrari goale (delete query): șterge din tabelul medicamente înregistrările care au în câmpul cantitate valoarea zero. Se bazează pe tabelul medicamente.

cautare vanzari (select query): afișează toate datele referitoare la medicamentele aflate pe o anumită factură de ieșire, al cărei număr este introdus de la tastatură, cerut de un parametru din câmpul factura. Se bazează pe tabelele arhiva vanzari și vanzari

intrari goale (select query): afișează toate înregistrările din tabelul medicamente, care au în câmpul cantitate valoarea zero. Se bazează pe tabelul medicamente.

pericol expirare (select query): afișează toate înregistrările din tabelul medicamente care au proprietatea că se referă la medicamente care mai au o lună până când expiră. Se bazează pe tabelul medicamente.

pret (select query): afișează prețul de vânzare, codul și cantitatea disponibilă dintr-un medicament a cărui denumire este introdusă de la tastatură, cerută de un parametru în câmpul denumire. Se bazează pe tabelul medicamente.

stergere (delete query): șterge înregistrările din tabelul medicamente care au proprietatea că se referă la medicamente care deja au expirat. Se bazează pe tabelul medicamente.

test_valabilitate (select query): afișează înregistrările din tabelul medicamente care au proprietatea că fac referire la medicamente care deja au expirat. Se bazează pe tabelul medicamente.

update (update query): scoate din stoc cantitatea de medicamente vândute scăzând din câmpul cantitate aflat în tabelul medicamente valoarea care se află în câmpul cantitate din tabelul arhiva vanzari. Se bazează pe tabelele arhiva vanzari și medicamente.

fig. 54 Tabul Queries și toate interogările utilizate de baza de date MhedaFarm

fig. 55 interogarea test_valabilitate în Design view.

Rapoartele care se regăsesc în program au atât rolul de a pregăti datele pentru imprimare într-un format adecvat, ci și rolul de a servi drept mijloace de informare și pentru a calcula valorile facturilor de intrare și de ieșire. Rapoartele utilizate sunt:

factura intrare1: strânge datele de pe factura de intrare cu numărul specificat de la tastatură înainte de deschidere și calculează valoarea sa totală. Se bazează pe interogarea factura intrare.

cautare_vanzari: strânge datele de pe factura de ieșire cu numărul specificat de la tastatură înainte de deschidere și calculează valoarea sa totală. Se bazează pe interogarea cautare vanzari

medicamente: afișează toate medicamentele care se află la momentul apelării în stoc. Se bazează pe tabelul medicamente

fig. 56 tabul Reports și rapoartele utilizate de baza de date MhedaFarm.

fig. 57 capul raportului medicamente, cu rubricile organizate în funcție de data de intrare în primul rând și de numărul facturii de intrare în al doilea rând.

Din moment ce toate interogările și rapoartele au fost făcute, s-a putut trece la formulare. În primul rând au fost create formularele principale: furnizori, intrari (împreună cu sub-formularul medicamente), medicamente și vanzari (împreuna cu sub-formularul arhiva vanzari). După aceea au fost create formularele secundare și anume formularele care țin loc de pagi de ajutor. La final a fost creată pagina principală, care să lege totul la un loc.

Pagina de start

Este pagina principală a bazei de date. Din acest loc prin intermediul butoanelor componente poate fi deschis oricare dintre formularele principale, precum și pagina principală de ajutor, care explică rolul acestei baze de date și care prezintă trimiteri spre paginile de ajutor specifice fiecărui formular principal. Butonul de ieșire închide aplicația cu totul.

Formularul furnizori

Formularul furnizori are rolul de a facilita înregistrarea furnizorilor cu care are contracte farmacia și operațiile de întreținere care trebuie făcute la acest nivel.

Facilități:

adăugarea unei noi înregistrări

căutarea unui furnizor pe bază de parametri multiplii

ștergerea înregistrării care este selectată

buton de ieșire din formular și întoarcere la pagina de start

buton care deschide o pagină de ajutor, care explică funcțiile formularului.

Formularul intrari

Formularul intrari reprezintă soluția totală de a introduce medicamente în stoc, prin cumpărare. Prin intermediul sub-formularului medicamentele sunt adăugate automat în stoc, iar rubricile nr_intrare și data_intrarii nu mai necesită completare.

Facilități

calcularea automată a valorilor din câmpurile valoare, valoare_TVA și valoare_totală (prin intermediul procedurilor Visual Basic care se află „în spatele” câmpurilor respective.

pregătirea facturii de intrare pentru tipărire, prin apăsarea butonului calculare. (este deschis raportul factura intrare1)

tipărirea raportului pregătit

adăugarea unei noi înregistrări

un link către tabelul medicamente pentru a avea acces direct la facilitățile de acolo

posibilitatea de a salva factura de intrare în format extern, astfel încât să existe copii de siguranță (este apelată o comandă de tip Macro : v. fig. 50).

buton de ieșire din formular și întoarcere la pagina de start

buton de deschidere a unei pagini de ajutor, care explică funcțiile formularului.

Formularul medicamente

Formularul medicamente este locul unde pot fi efectuate toate operațiile de întreținere a bazei de date în ceea ce privește stocul de medicamente. O parte din facilitățile acestui formular presupun operații de ștergere, ceea ce înseamnă că lucrul cu el necesită un spor de atenție.

Facilități:

Grupul normal (dreapta)

afișarea tuturor medicamentelor care se găsesc în stoc(este folosit raportul medicamente)

afișarea tuturor medicamentelor din stoc care au denumirea introdusă de utilizator de la tastatură (este folosită interogarea cautare medicament).

căutarea unui anumit medicament în funcție de mai mulți parametri

Grupul special (stânga jos)

găsirea medicamentelor care au expirat (este folosită interogarea test_valabilitate).

găsirea medicamentelor care mai au o lună până când expiră (este folosită interogarea pericol_expirare)

eliminarea din baza de date a intrărilor care fac referire la medicamente care nu mai există în stoc (este folosită interogarea eliminare intrari goale).

eliminarea din baza de date a intrărilor care fac referire la medicamente care nu mai sunt valabile (este folosită interogarea stergere)

afișarea înregistrărilor din baza de date care fac referire la medicamente care nu mai există în stoc (este folosită interogarea intrari goale).

posibilitatea de a schimba prețul de vânzare al unui medicament în funcție de fluctuațiile pieței. Căsuța este situată separat de restul detaliilor medicamentelor din stoc.

buton de ieșire din formular și revenire la pagina de start

buton de deschidere a unei pagini de ajutor, care explică funcțiile formularului

Este posibil ca intrările care fac referire la medicamente care nu mai există în stoc să fie necesare mai târziu, deci intrările goale nu ar trebui șterse imediat ce un medicament a fost epuizat din stoc. Pe de altă parte, după o anumită perioadă de timp (o dată pe zi, o dată pe săptămână, în nici un caz mai rar) acestea trebuie șterse pentru a nu îngreuna funcționarea bazei de date în mod inutil.

Formularul vanzari

Formularul vanzari reprezintă soluția totală de a scoate medicamente în stoc, prin vânzare. Prin intermediul sub-formularului medicamentele vândute sunt adăugate automat în tabelul arhiva vanzari, iar rubricile nr_intrare și data_intrarii nu mai necesită completare. Medicamentele nu sunt scoase direct din stoc, ci prin intermediul arhivei de vâzări

Facilități:

calcularea automată a valorilor din câmpurile valoare_v, valoare_TVA_v, valoare_totala_v, pret_facturat (prin intermediul procedurilor Visual Basic care se află „în spatele” câmpurilor respective).

afișarea datelor necesare în vederea vânzării despre medicamentele solicitate (butonul preturi vanzare, este folosită interogarea pret)

pregătirea facturii de ieșire pentru tipărire, prin apăsarea butonului calculare. (este deschis raportul cautare_vanzari)

afișarea tuturor intrărilor care au în câmpul denumire valoarea introdusă de la tastatură (este folosită interogarea cautare_medicament)

link către formularul medicamente, pentru a avea acces direct la anumite funcții de întreținere (de exemplu verificarea stării de valabilitate a unui medicament)

adăugarea unei noi înregistrări

posibilitatea de a salva factura de ieșire în format extern, pentru a avea o copie de siguranță (este apelată o comandă de tip Macro, v. fig. 50).

scoaterea din stoc a medicamentelor trecute pe factura de ieșire (este apelată o comandă de tip Macro, care deschide interogarea update.

buton de ieșire din formular și revenire la pagina de start

buton de deschidere a unei pagini de ajutor, care explică funcțiile formularului

La scoaterea medicamentelor din stoc utilizatorul trebuie să fie foarte atent că datele din factură sunt corecte. În cazul în care se încearcă scoaterea din stoc a mai multor medicamente decât există, atunci procedura de scoatere va fi întreruptă. De asemenea, scoaterea medicamentelor din stoc trebuie efectuată o singură dată pentru fiecare factură în parte.

Fig. 59 Principala pagină de ajutor, care este deschisă din pagina de start. Conține link-uri către toate cele patru pagini de ajutor ale formularelor principale.

Similar Posts