1.Introducere ……………………………………………………………………………………………………………… …………………….
2. Concepte generale despre mediul de dezvoltare …………………………………………………………………………. 2.1 Structura unei aplicatii .NET …………………………………………………………………………………………… 2.2 Notiuni folosite in proiect ………………………………………………………………………………………………. 2.2.1. Tehnologia A!.NET ……………………………………………………………………………………… 2.2.2. "aze de date ………………………………………………………………………………………………….. 2.2.2.1. Caracteristici ACCESS ……………………………………………………………………… #. Notiuni generale despre S$"%ul utilizat& u tilizat& S'( ………………………………………………………………………………. #.1. Interogari………………………………………………………………………………………………… …………………….. #.2. Comenzi S'( folosite …………………………………………………………………………………………………….. #.#. Inde)ul ……………………………………………………………………………………………………………… ………….. *. +ro,lematica proiectului ………………………………………………………………………………………………………………. . -. +rocesul de dezvoltare a aplicatiei ………………………………………………………………………………………………… -.1. "aza de date ……………………………………………………………………………………………………………… ….. -.1.1. iagrame entitati%Asoc en titati%Asociatii iatii EA/ ………………………………………………………………….. -.2. Notiuni de inginerie soft0are% soft0are% ( ……………………………………………………………………………… -.#. iagrama cazurilor de utilizare …………………………………………………………………………………….. -.*. Aplicatia. od de lucru si interfata ………………………………………………………………………………. -.-. iagrama cazurilor de utilizare ………………………………………………………………………………………
1.Introducere ……………………………………………………………………………………………………………… …………………….
2. Concepte generale despre mediul de dezvoltare …………………………………………………………………………. 2.1 Structura unei aplicatii .NET …………………………………………………………………………………………… 2.2 Notiuni folosite in proiect ………………………………………………………………………………………………. 2.2.1. Tehnologia A!.NET ……………………………………………………………………………………… 2.2.2. "aze de date ………………………………………………………………………………………………….. 2.2.2.1. Caracteristici ACCESS ……………………………………………………………………… #. Notiuni generale despre S$"%ul utilizat& u tilizat& S'( ………………………………………………………………………………. #.1. Interogari………………………………………………………………………………………………… …………………….. #.2. Comenzi S'( folosite …………………………………………………………………………………………………….. #.#. Inde)ul ……………………………………………………………………………………………………………… ………….. *. +ro,lematica proiectului ………………………………………………………………………………………………………………. . -. +rocesul de dezvoltare a aplicatiei ………………………………………………………………………………………………… -.1. "aza de date ……………………………………………………………………………………………………………… ….. -.1.1. iagrame entitati%Asoc en titati%Asociatii iatii EA/ ………………………………………………………………….. -.2. Notiuni de inginerie soft0are% soft0are% ( ……………………………………………………………………………… -.#. iagrama cazurilor de utilizare …………………………………………………………………………………….. -.*. Aplicatia. od de lucru si interfata ………………………………………………………………………………. -.-. iagrama cazurilor de utilizare ………………………………………………………………………………………
-.3. iagrame de activitate ………………………………………………………………………………………………….. -.4. iagrame de comportament ………………………………………………………………………………………… -.5. iagrame de clasa …………………………………………………………………………………………………………. -.6. 7unctii implementate in cod………………………………………………………………………………………….. -.11. Arhitectuta aplicatiei …………………………………………………………………………………………………… -.11.1 Sistemul de meniuri ……………………………………………………………………………………… 3. Concluzii ……………………………………………………………………………………………………………… ……………………….. 3.1. Consideratii personale ………………………………………………………………………………………………….. 3.2. "i,liogra8e ……………………………………………………………………………………………………………… ……. 4. Ane)a ……………………………………………………………………………………………………………… …………………………….
1.Introducere Scopul acestui proiect este de a facilita si creea un mod eficient de colaborare intre utilizator si aplicatie. Usurinta Usurinta parcurgerii parcurgerii bazei de date si structura programului programului ajuta utilizatorul sa aiba grija de pacient mai rapid si mai eficient. Date fiind situatiile acutale ale omenirii, stresul, noxele , problemele medicale, oamenii tind sa se indrepte tot mai des catre farmacii pentru diferite probleme. Asadar prin aceasta aplicatie aplicatie incerc sa creez creez o mai buna functionare functionare a sitemelor deja deja in functie.
Am ales ca sub-domeniu o farmacie farmacie ce colaboreaza colaboreaza cu niste firme firme producatore, ce au o baza de date cu produse ce poate fi accesata de toti userii activi, dar poate fi actualizata doar de unul dintre acestia. Produsele stocate in baza de date pot fi sortate dupa numarul lotului din care fac parte , pretul acestore, acestore, precum si firma producatoare. producatoare. Datele ce trebuiesc stiute despre pacienti sunt statutul social, numele si prenumele, CP-ul si medicul supraveg!etor "ficientizeaz# "ficientizeaz# $i simplific# opera%iunile de aprovizionare cu medicamente Solu%ia automatizeaz# complet aprovizionarea de medicamente, pe baza identific#rii stocurilor $i a necesarului de medicamente, medicamente, reduc&nd timpul alocat gestiunii stocurilor $i atr#g&nd reducerea resurselor necesare derul#rii acestui proces. 'oate 'oate tranzac%iile sunt (nregistrate automat (ntr-un sistem informatic integrat, prevenind erorile umane umane de planificare gre$ita a reaprovizion#rii reaprovizion#rii cu medicamente medicamente sau a aloc#rii gre$ite pe sec%ii. Cre$te viteza de reac%ie la aprovizion#rile cu medicamente Datorit# actualiz#rii automate, zilnice, a stocurilor, toate informa%iile sunt disponibile centralizat la nivelul unit#%ii medicale, permit&nd decizii proactive de reaprovizionare cu medicamente, elimin&ndu-se astfel situa%iile riscante pentru pacien%i (n care unitatea medical# nu are necesarul de medicamente pe stoc.
"xista pe piata programe care deja indeplinesc aproape toate nevoile unei farmacii. ) parte din programele consecrate ce au rezolvat problema administrarii unei farmacii ce se afla acum pe piata sunt* • • •
P!armec soft+are C!arisma "P P!arma soft+are
1.1. 1.1. Eleme Elemente nte compo componen nente te ale unui unui SGBD. SGBD. Defini Definitii tii Sistemul de gestiune a bazelor de date S...D. reprezinta sistemul de programe care permite construirea bazelor de date, introducerea de inregistrari inregistrari in bazele de date si dezvoltarea de aplicatii privind bazele de date, permitand astfel accesul utilizatorului la date printr-un limbaj de nivel inalt, apropiat modului obisnuit de operare/ el reprezinta o interfata intre utilizator si sistemul de operare. )rice sistem de gestionare a bazelor de date contine* - limbajul de descriere a datelor 01DD2, care permite descrierea structurii bazei de date, a componentei, a relatiilor dintre componente, a drepturilor de acces al utilizatorilor la baze de date 0D2/ - limbajul de cereri 01C2 este limbajul in care se scriu programele pentru realizarea prelucrarii datelor/ datelor/ - limbajul de prelucrare a datelor 01PD2, care permite operatii asupra D, cum ar fi incarcarea D, inserarea, stergerea, cautarea sau modificarea unui element, realizarea de statistici. Principalele sarcini ale gestionarului bazei de date sunt* - reducerea redundantei prin identificarea informatiilor comune si alcatuirea corespunzatoare a aplicatiilor/ aplicatiilor/ - eliminarea inconsistentelor ce rezulta din reducerea redundantei/ - utilizarea simultana a datelor de mai multi utilizatori/ - standardizarea informatiilor/ - asigurarea securitatii D prin acordarea si urmarirea modului de acces al utilizatorilor la componentele D/ - asigurarea integritatii D/ - asigurarea sincronizarii in cazul utilizarii simultane a D de mai multi utilizatori sau a distribuirii informatiei pe mai multe sisteme.
2. Concepte Concepte generale generale despr despree mediul mediul de dezvoltar dezvoltaree
'e!nologia ."', dezvoltata de gigantul 3icrosoft, se bazeaza pe asa numitul “.NET Framework”, care este o platforma de calcul care simplifica dezvoltarea aplicatiilor in mediul puternic distribuit al 4nternetului. Acest ."' 5rame+or6 este conceput astfel incat sa satisfaca urmatoarele obiective* •
•
•
•
•
Sa ofere un mediu consistent de programare, obiect-orientat, indiferent daca codul obiectului este stocat si executat local, executat local dar distribuit pe 4nternet, sau executat la distanta. Sa ofere un mediu de executie a codului care sa minimizeze desfasurarea soft+areului si conflictele de versiune. Sa ofere un mediu de executie a codului care sa garanteze executia sigura a codului, incluzand codul creat de dezvoltatori 0 third-party 2 necunoscuti sau necertificati. Sa ofere un mediu de executie a codului care sa elimine problemele de performanta ale mediilor scripted sau interpreted . Sa faca experienta dezvoltatorului consistenta in cazul variatelor tipuri de aplicatii, cum ar fi aplicatiile de tip Windows-based si aplicatiile de tip Web-based .
Sa construiasca toate comunicatiile pe standarde industriale care sa asigure faptul ca codul bazat pe ."' 5rame+or6 poate fi integrat in orice alt cod. Platforma .et este mult mai mult decat un nou limbaj , soft+are development 6it 0SD72, sau c!iar un sistem de operare. )fera servicii noi foarte puternice, un nou format binar independent de procesor, noi limbaje, extensii pentru limbaje vec!i si lista continua. 5olosirea eficienta a acestor noi unelte si aplicatii, nu este posibila cunoastere buna a platforma ce va da viata aplicatiilor. Premiza din spatele platformei ."' este ca lumea calculatoarelor se sc!imba de la un calculator conectat la servere prin retele de genul 4nternetului, la un calculator unde toate felurile de device-uri inteligente, calculatoare si servicii, lucreaza impreuna pentru a oferi o experienta mai bogata utilizatorului. Platforma ."' este raspunsul acestor provocari pe care sc!imbarea le va aduce programatorilor. Platforma ."' este formata din mai multe componente, care pot fi grupate in trei categorii de baza* •
."' 5rame+or6 8 o aplicatie complet noua pentru dezvoltarea platformelor.
•
•
Produse ."' 8 diverse aplicatii 3icrosoft bazate pe ."' 5rame+or6, incluzand noi versiuni de "xc!ange si S91 Server, :31 8 toate integrate in platforma ."'. Servicii ."' 8 mai multe servicii ."', asigurate de 3icrosoft pentru folosire in dezvoltarea aplicatiilor ce merg pe ."' 5rame+or6. 5oarte importante si de amintit sunt serviciile ;eb 0;eb Services2.
4nsusi ."' 5rame+or6 poate fi divizat in trei parti* •
•
•
C1 0Common 1anguage untime2 este un mediu de executie care se ocupa de alocarea memoriei, captarea erorilor si interactiunea cu serviciile sistemului de operare. ase Class 1ibrar< este o colectie extinsa de componente pentru programare si aplicatii pentru interfete de programare 0AP42. Doua tinte de dezvoltare de nivel inalt. Una dintre ele este pentru aplicatiile ;eb 0ASP."'2 si alta pentru aplicatii normale ;indo+s 0;indo+s 5orms2.
Avantajele oferite de catre ."' 5rame+or6 includ cicluri mai rapide de dezvoltare 0refolosirea codurilor, mai putine surprize de programare, suport pentru mai multe limbaje de programare2, mai putine bug-uri legate de tipul datelor datorita securitatii integrale, scurgere de memorie redusa datorita arbage Collector-ului si, in general, aplicatii sigure. C1-ul 0common language runtime2, este fundatia ."' 5rame+or6. =a puteti gandi la runtime ca la un agent care administreaza codul in momentul executiei, oferind servicii de baza precum managementul memoriei, managementul t!read-urilor, si servicii de lucru la distanta, in timp ce promulga siguranta tipurilor si alte forme de acuratete a codului, care asigura securitate si robustete. De fapt, conceptual de management al codului este un principiu fundamental al runtime-ului. Codul care vizeaza runtime-ul este cunoscut ca managed code iar codul care nu vizeaza runtime-ul este cunoscut ca unmanaged code. iblioteca de clase, cealalta componenta principala a 5rame+or6-ului ."', este o colectie cuprinzatoare, obiect-orientata, de tipuri reutilizabile care poate fi folosita pentru dezvoltarea variatelor aplicatii, pornind de la aplicatiile traditionale in linie de comanda sau cu interfata grafica 0U4 8 Graphical ser !nter"ace 2, pana la aplicatii bazate pe ultimele inovatii oferite de ASP."', inovatii precum Web Forms sau #$% Web ser&ices.
Versiunile de .NET Framework
2.1. Structura unei aplicaţii .NE
) aplica%ie pentru platforma ."' 0un assembl<2 este format din patru componente* un assembl< manifest ce con%ine informa%ii despre assembl< precum versiunea, cultura, fi$ierele componente, semn#tura digital# etc./cod 4ntermediate 1anguage/ tabele de metadata $i resurse. Aceste componente se reg#sesc (ntr-unul sau mai multe module. Pentru fi$iere executabile exist# (ntotdeauna un modul principal, care con%ine punctul de intrare al aplica%iei. De men%ionat c#, cu toate c# modulele con%in cod 41 $i metadata, ele nu pot fi executate independent, (n afara contextului assembl<-ului.
Pentru majoritatea aplica%iilor, este suficient un singur modul. Platforma permite executarea aplica%iilor ce men%in module pe alte calculatoare, modulele fiind copiate pe calculatorul pe care ruleaz# aplica%ia doar (n momentul (n care sunt referite 8 (n aceast# situa%ie, pentru un assembl< de dimensiuni mari, este indicat# folosirea modulelor multiple. Desigur, o aplica%ie poate apela cod dintr-un assembl< extern 8 la fel cum o aplica%ie pentru platforma ;indo+s poate apela func%ii din bibliotecile sistemului sau biblioteci scrise de utilizatori.
2.2. Notiuni folosite in proiect
3ediul integrat de dezvoltare =isual asic contine urmatoarele elemente principale* ara de meniu 03enu ar2 Afiseaza comenzile, grupate pe categorii, care pot fi folosite pentru a lucra in =isual asic. 4n afara meniurilor standard 5ile, "dit, =ie+, ;indo+ si >elp 0existente in majoritatea aplicatiilor ;indo+s2, sunt si meniuri care asigura accesul la functiile specifice programarii in =isual asic, cum ar fi Project, 5ormat sau Debug. 3eniuri contextuale 0Context 3enu2 Contin comenzi rapide pentru actiunile cele mai frecvent folosite. Pentru a desc!ide un meniu contextual se executa clic-dreapta pe obiectul dorit. 1ista optiunilor meniului contextual depinde de componenta pe care s-a executat clic-dreapta. Spre exemplu, meniul contextual afisat cand executati clic-dreapta pe caseta instrumentelor =isual asic 0'oolbox2 va permite sa afisati caseta de dialog Components, sa ascundeti caseta instrumentelor, sa ?ancorati@ sau nu caseta instrumentelor sau sa adaugati o etic!eta particularizata la caseta. arele cu instrumente 0'oolbar2 Asigura accesul rapid la cele mai utilizate comenzi din mediul de programare. Cu un singur clic pe un buton din aceste bare se lanseaza in executie operatia asociata acestuia. 4n mod prestabilit, bara instrumentelor Standard este afisata la desc!iderea sesiunii =isual asic. arele suplimentare, de editare, proiectare formular si depanare pot fi afisate sau ascunse folosind comanda 'oolbars din meniul =ie+. Caseta instrumentelor =isual asic 0'oolbox2 Asigura un set de instrumente cu ajutorul carora pe timpul proiectarii se plaseaza controale pe formular. Pe langa etic!eta
prestabilita 0eneral2 a casetei instrumentelor, puteti crea propriile etic!ete personalizate 0selectand optiunea Add 'ab din meniul contextual si adaugand instrumentele dorite pe etic!eta rezultata2. 5ereastra Project "xplorer 1isteaza formularele si modulele din proiectul curent. Un proiect este o colectie de fisiere, de diferite tipuri 0extensii2 folosite la construirea unei aplicatii. 5ereastra Properties 1isteaza valorile proprietatilor pentru formularul sau controlul selectat. ) proprietate este o caracteristica a unui obiect, cum ar fi marimea, titlul sau culoarea 0in general, o caracteristica a aspectului obiectului2. "xploratorul obiectelor 0)bject ro+ser2 1isteaza obiectele disponibile pentru a fi folosite in proiectul curent si asigura o metoda rapida de navigare prin cod. "l poate fi folosit pentru a explora obiectele din =isual asic si din alte aplicatii, pentru a determina metodele si proprietatile disponibile ale acestor obiecte si pentru a ?lipi@ proceduri de cod in aplicatie. 5ereastra de proiectare a formularului 05orm Designer2 Serveste ca o fereastra pe care o particularizati pentru a realiza interfata aplicatiei. Prin adaugarea pe formular a unor controale, grafice si imagini puteti crea o interfata grafica cu aspectul pe care-l vreti. ) interfata grafica poate fi construita din mai multe formulare, fiecare avand propria sa fereastra de proiectare. 5ereastra editorului de cod 0Code 2 Serveste ca editor de text pentru introducerea codului aplicatiei. Pentru fiecare formular sau modul din aplicatie se creaza o fereastra separata de editare a codului. 2.2.1.e!nologia "D#.NE
Un capitol important in cadrul platformei =S."' este dat de te!nologia AD) 0Active: Data )bjects2 de gestionare a bazelor de date. AD)."' reprezinta o multime de biblioteci de programe ce permit interactiunea cu sistemele de stocare a datelor 0baze de date, fisiere :31, "xcel, etc.2. Ar!itectura AD)."' include trei componente principale* - baza de date* este suportul in care se stoc!eaza datele
- Data Provider 05urnizorul de date2 * reprezinta colectia de obiecte prin care ne conectam la baza de date si operam modificari in ea/ - DataSet-ul* obiect local programului in care se salveaza datele provenite din baza.
"xista mai multe sisteme de stocare pe piata, fiecare folosind un protocol diferit de comunicatie, de aceea AD)."' dispune de cate un DataProvider pentru fiecare tip de baza de date* - )DC DataProvider* pentru baze de date mai vec!i, ce folosesc protocolul )DC - )leD DataProvider* pentru Acces, "xcel,../ - )racle DataProvider* pentru baze de date )racle/ - S91 DataProvider* pentru 3icrosoft S91Server/
4ndiferent de provider-ul folosit, etapele necesare in manipularea bazelor de date sunt urmatoarele* - stabilirea conexiunii cu baza de date/ - instantierea obiectului din clasa DataAdapter prin intermediul caruia se executa comenzi de selectaremodificare a informatiilor din baza de date/ - generarea unui DataSet in care se vor stoca pe plan local informatiile din baza de date/ - prelucrareamodificarea datelor locale si transmiterea modificarilor in baza de date/ - inc!iderea conexiunii.
2.2.2. Baze de date
aza de date este un serviciu ce lucreaza independent de programul nostru la care noi putem apela sa stocam informatii diverse in cantitati foarte mari, dupa care sa cerem aceste informatii conform unor criterii si te!nici de filtrare. Daca luam ca exemplu activitatea dintr-o farmacie, atunci constatam ca ne trebuie o baza de date formata din tabele in care sa introducem informatiile specifice acestei activitati* - un tabel ?Producatori@, in care sa salvam pe linii detaliile pentru fiecare Producator asociat farmaciei/ - tabele pentru produse, medici, pacienti, tipuri pacienti* in care sa se salveze structura organizatorica a farmaciei/ - etcB 'abelele nu sunt independente unele de altele, intre ele exista relatii de legatura care sa permita obtinerea de informatii complexe, culese din mai multe tabele legate prin aceste relatii. De exemplu, tabela ?Produse@ este legata de tabela ?Producatori@ 0fiecare produs apartine unui producator2 etc. Avantajele utilizarii bazelor de date in constructia programelor de gestionare a informatiilor sunt evidente* - baza de date primeste o cantitate mare de informatii pe diverse cai si de la mai multi utilizatori simultan, le stoc!eaza intr-un depozit unic astfel incat, orice informatie introdusa de un utilizator este vizibila tuturor. De exemplu, daca un utilizator a introdus in baza de date produsul unui producator , un al doilea utilizator poate vizualiza adaugarea fara sa fie nevoie sa mearga la celalalt utilizator ca . Cei doi utilizatori lucreaza in sedii diferite, cu aplicatii diferite, dar informatia este vizibila tuturor. - baza de date dispune de mecanisme puternice de extragere a informatiilor complexe. Pe baza limbajului S91 0Structured 9uer< 1anguage2 utilizatorul scrie instructiuni de selectie a datelor din mai multe tabele simultan si conform unor criterii de filtrare performante. Astfel, pot cere de exemplu bazei de date 0cu ajutorul unei instructiuni S912, sa-mi dea produsul cu pretul cea mai mare din lotul . - accepta desc!iderea mai multor sesiuni de lucru simultan, astfel incat pot lucra diversi utilizatori 0unii introduc date, altii vizualizeaza, altii modifica2, fara sa se bloc!eze unul pe celalalt. - baza de date este independenta fata de aplicatiile care o utilizeaza, unii utilizatori introduc date printr-o interfata realizata in )racle 5orms, altii printr-un program dezvoltat in =S."', altii vizualizeaza date prin )racle eports, sau Cr
Sunt mai multe servere de baze de date 0SD2 pe piata de soft+are* )racle, S91 Server, 3
2.2.2.1. Caracteristici "CCESS
Conceptul original de Access a fost pentru utilizatorii finali s# poat# s# EaccesezeE date din orice surs#. Alte caracteristici includ* importul și exportul de date de mai multe formate, cum ar fi "xcel , )utloo6 , ASC44 , dase , Paradox , 5oxPro , S91 Server , )racle , )DC , etc. De asemenea, Access are și posibilitatea de a folosi baze de date externe, ne(nglobate, (n formatele* 3icrosoft "xcel, 1iste S!arePoint, text, :31, 3icrosoft )utloo6 , >'31, dase, Paradox, 1otus F-G-H, )DC -conforme cu containerele de date, inclusiv* 3icrosoft S91 Server , )racle, 3
Access este un instrument pentru proiectarea aplica țiilor de baze de date și implementarea acestora, instrument care poate fi utilizat pentru a urm#ri informa țiile importante. "ste posibil s# p#strați datele pe computer sau s# le publica ți pe ;eb, astfel (nc&t și alte persoane s# poat# utiliza baza de date folosind un bro+ser ;eb. 3ulte persoane (ncep s# utilizeze Access c&nd programul pe care (l utilizeaz# pentru a urm#ri ceva devine din ce (n ce mai pu țin potrivit pentru activitatea respectiv#. De exemplu, s# presupunem c# sunteți organizator de evenimente și dori ți s# urm#ri ți toate detaliile pe care trebuie s# le gestiona ți pentru a organiza evenimente de succes. Dac# utilizați un procesor de text sau un program de calcul tabelar pentru acest lucru, este posibil s# (nt&mpinați cur&nd probleme cu date dublur# sau neuniforme. Aveți posibilitatea s# utilizați soft+are de planificare, (ns# urm#rirea informa țiilor financiare (ntr-un calendar nu este o alegere bun#. Uneori, aveți nevoie de o baz# de date relațional# pentru a urm#ri astfel de informații* un depozit de date care a fost (mp#r țit (n colec ții mai mici de date 0numite tabele2 pentru a elimina redundanța, apoi au fost asociate pe baza unor fragmente comune de informații 0numite c&mpuri2. De exemplu, o baz# de date rela țional# pentru organizarea de evenimente poate con ține un tabel cu informa țiile despre clien ți, un tabel cu informații despre furnizori și un tabel cu informa ții despre eveniment. 'abelul cu informații despre eveniment poate avea un c&mp care s# (l asocieze cu tabelul despre clienți și un c&mp care s# (l asocieze cu tabelul despre furnizori. Astfel, de exemplu, dac# s-a modificat num#rul de telefon al unui furnizor, informa țiile se pot modifica o singur# dat# (n tabelul cu furnizori, (n loc s# se modifice (n fiecare eveniment care implic# furnizorul.
Access este un instrument pe care ave ți posibilitatea s# (l utiliza ți pentru a dezvolta rapid și ușor aplicații de baze de date rela ționale care v# ajut# s# gestiona ți informa țiile. Aveți posibilitatea s# crea ți o baz# de date care s# v# ajute s# urm#ri ți aproape orice tip de informații, cum ar fi inventare, persoane de contact pentru afaceri sau procese de afaceri. De fapt, Access este (nsoțit de șabloane pe care aveți posibilitatea s# le utiliza ți imediat pentru a urm#ri o varietate de informații, facilit&nd experien ța c!iar și pentru un (ncep#tor.
$.Notiuni generale despre SGBD%ul utilizat& S'( S'( 0Structured 9uer< 1anguage - 1imbaj Structurat de 4nterogare2 este un
limbaj de programare specific pentru manipularea datelor (n sistemele de manipulare a bazelor de date rela ționale 0D3S2, iar la origine este un limbaj bazat pe algebra relațional#. Acesta are ca scop inserarea datelor, interoga ții, actualizare și ștergere, modificarea și crearea sc!emelor, precum și controlul accesului la date. A devenit un standard (n domeniu 0standardizat AS4-4S)2, fiind cel mai popular limbaj utilizat pentru creearea, modificarea, reg#sirea și manipularea datelor de c#tre SD-urile 0Sistemele de estiune a azelor de Date2 relaționale. Pe l&ng# versiunile standardizate ale limbajului, exist# o mulțime de dialecte și variante, unele proprietare, fiind specifice anumitor SD-uri și de asemenea conțin&nd extensii pentru a suporta SD-urile 0Sistemele de aze de Date2 obiectuale 0obiectual-rela ționale2. S91 permite at&t accesul la conținutul bazelor de date, c&t și la structura acestora. S91 a fost inițial dezvoltat la 43 de c#tre Donald D. C!amberlin și a
•
•
Clauze, care sunt componente ale instruc țiunilor și interog#rilor. E*presii, al c#ror efect este producerea de valori scalare sau tabele. +redicates , pot specifica condiții care sunt evaluate de S91 conform logicii
ternare sau logicii booleene, (n scopul limit#rii efectelor instrucțiunilor, sau pentru a influența cursul programului. •
Interog,rile , au ca scop reg#sirea datelor dup# criterii specifice.
•
Instrucțiunile, pot avea un efect persistent asupra datelor sau structurii datelor,
sau pot controla tranzac țiile, conexiunile sau cursul programului. Nn general, instrucțiunile S91 se termin# cu caracterul punct-virgul# 0E/E2, de și acest lucru nu este obligatoriu (n toate platformele S91. Spațiile albe suplimentare sunt ignorate, dar ele pot fi folosite pentru lizibilitatea codului S91
)ric#rei coloane 0sau c&mp2 dintr-un tabel S91 (i este asignat un tip de dat), la fel ca (n toate celelalte limbaje de programare. 'ipurile de date sunt urm#toarele* •
•
•
•
C-""CE 0sau C-" 2 - șir de caractere INEGE 0sau S/"((IN2 - num#r (ntreg 0(#", E"( sau D#)B(E +ECISI#N - num#r real N)/EIC0precision, scale2 sau DECI/"(0precision, scale2 - num#r zecimal ,
unde ?precision@ (nseamn# num#rul de cifre din partea (ntreag#, ?scale@ (nseamn# num#rul de zecimale. •
•
D"E - data zilei. I/E - ora.
5uncția sistem N# (ntoarce data și ora curent#.
$.1. Interog,ri
Cea mai des utilizat# instrucțiune (n S91 este instrucțiunea S"1"C'. S"1"C' OA11 D4S'4C'Q coloanaF O,coloanaGQ O4') fișierQ 5)3 tabelF O,tabelGQ O;>"" condițieQ O AD) condiție...Q O)UP R list#-coloaneQ
O>A=4 condițiiQ O)D" R list#-coloane OASC D"SCQ Q •
•
•
Clauza IN# este utilizat# pentru a transfera rezultatul interog#rii (ntr-o nou#
tabel#/ valabil (n 3icrosoft Access, dar nu (n toate platformele S91. Clauza -EE este utilizat# pentru a specifica condi ții trebuie s# (ndeplineasc# coloanele din care se face selec ția. Aceast# condiție este o expresie logic# ob ținut# prin alicarea operatorilor conjuncție 0AD2 și disjunc ție 0)2 asupra unor expresii logice elementare obținute cu ajutorul operatorilor* 0egal2, 34 0diferit2, 3 0mai mic dec&t2, 3 0mai mic sau egal dec&t2, 4 0mai mare dec&t2, 4 0mai mare sau egal dec&t2, (I5E 0permite selectarea potrivirilor par țiale cu ajutorul operatorului / de exemplu* select cit<, state from to+ntable +!ere state 147" Lnort!L2/ Clauza G#)+ B6 permite gruparea coloanelor multiple (n scopul prelucr#rii acestora prin funcțiile agregate* A= - media aritmetic#/ C)U' - num#rul
articolelor/ 3A: - maximul/ 34 - minimul/ SU3 - suma. •
Clauza -"7ING Spre deosebire de clauza ;>"", ac ționeaz# asupra r&ndurilor
rezultate din clauza )UP R , aplic&ndu-le condi ția, spre a fi ulterior prelucrare prin funcțiile agregate •
Clauza #DE B6 )rdoneaz# rezultatele interog#rii (n ordine alfabetic# dup#
unul sau mai multe c&mpuri. ASC (nseamn# (n ordine cresc#toare, iar D"SC - ordine descresc#toare. )rdinea implicit# este cresc#toare. •
"lte cuvinte c!eie& "(( - 'oate articolele/ DISINC - umai articolele unice,
f#r# duplicate.
$.2. Comenzi S'( folosite
S>); DA'AAS"S/ US" numeleTbazeiTdeTdate S>); 'A1"S/ S>); C)1U3S/ C"A'" DA'AAS" numeleTbazei/ C"A'" 'A1" tabelTunu 0campTa '":'2/ C"A'" 'A1" tabelTunu 0campTa '":', campTb 4', campTc '4R4'2/
D)P 'A1" tabelTunu/ D)P DA'AAS" numeleTbazei/ 4S"' 4') tabel 0campF, campG, campH2 =A1U"S 0valoareaF, valoareaG, valoareaH2/
4S"' 4') tabel 0campF, campG2 =A1U"S 0valoareaF, valoareaG2/
4S"' 4') tabel =A1U"S 0valoareaF, valoareaG, valoareaH2/
afiseaza o lista cu numele bazelor de date existente alegerea bazei de date cu care lucram in continuare afiseaza tabelele existente in baza curenta afiseaza informatii despre coloanele unui tabel creeaza o baza de date cu numele respectiv creeaza tabelul tabelTunu cu un camp numit LcampTaL al carui tip este '":' creeaza tabelul LtabelTunuL cu un camp numit LcampTaL al carui tip este '":', un camp numit LcampTbL in care datele de pe coloana respectiva vor fi numere intregi si in campul LcampTcL vor fi introduse doar numere intre -FG si FGJ sterge tabelul numit LtabelTunuL sterge baza de date cu numele LnumeleTbazeiL introduce in tabelul cu numele LtabelL, in LcampulFL LvaloareaFL, in LcampulGL LvaloareaGL si in LcampulHL LvaloareaHL. 4ata cum ar arata in format tabelar* campul1
campul2
campul$
valoareaF
valoareaG
valoareaH
Se poate omite una din coloane, daca avem V coloane, dar vrem sa introducem numai in H, specificam campul si valoarea doar pentru cele pe care le vrem, restul le ignoram. campul1
campul2
valoareaF
valoareaG
campul$
o varianta simplificata care se poate aplica doar cand introducem valori in toate campurile tabelului 0nu se poate omite2
4S"' 4') tabel =A1U"S 0valoareaF, valoareaG, WW2/ S"1"C' X 5)3 tabel/ S"1"C' campulF 5)3 tabel/ S"1"C' campulF, campulG 5)3 tabel S"1"C' X 5)3 tabel ;>"" campulF Y LvaloareFL/ S"1"C' campulF, campulG 5)3 tabel ;>"" campulG 147" LvaloareGL/ S"1"C' campulF, campulG 5)3 tabel ;>"" campulG 147" LvaloareGL/ S"1"C' campulF, campulG 5)3 tabel ;>"" campulG 147" LvaloareGL/ S"1"C' campulF, campulG 5)3 tabel ;>"" campulG 147" LvaloareGL/ S"1"C' X 5)3 tabel ;>"" campulFYvaloareF AD campulG 147" LvaloareGL/ S"1"C' campulF, campulG 5)3 tabel ;>"" campulF ZY valoareaH/ S"1"C' campulF, campulG 5)3 tabel ;>"" campulG )' 147" LvaloareaHL/ S"1"C' campulF 5)3 tabel )D" R campulF ASC/ S"1"C' campulF, campulG 5)3 tabel )D" R campulF ASC, campulG D"SC/ S"1"C' count0X2 5)3 tabel/ S"1"C' count 0X2 5)3 tabel ;>"" campulFYvariabilaF/ S"1"C' campF 5)3 tabel )UP R campF )D" R campF ASC/ S"1"C' X 5)3 tabel 1434' M,H/
identica ca cea dinainte, doar ca in lipsa unei valori se pun g!ilimele. Afiseaza tot 0X2 ce exista in tabelul cu numele LtabelL afiseaza continutul campului LcampulFL din tabelul LtabelL afiseaza continutul campurilor LcampulFL si LcampulGL din tabelul LtabelL afiseaza campurile a caror continut este la fel cu LvaloareFL cauta si afiseaza toate inregistrarile in care LcampulGL este asemanator cu LvaloareGL cauta si afiseaza toate inregistrarile in care LcampulGL incepe cu LvaloareGL cauta si afiseaza toate inregistrarile in care LcampulGL se termina cu LvaloareGL cauta si afiseaza toate inregistrarile in care LcampulGL se aseamana cu LvaloareGL oriunde in cadrul textului. afiseaza toate campurile care contin LvaloareaFL si se asemanana cu LvaloareGL cauta si afiseaza toate campurile care difera de LvaloareaHL cauta si afiseaza toate campurile care nu incep cu LvaloareHL afiseaza continutul campului LcampulFL in ordine crescatoare afiseaza continutul campului F in ordine crescatoare si campul G in ordine descrescatoare. afiseaza cate inregistrari sunt in total in tabel cate inregistrari sunt in tabel al caror LcampFL este LvariabilaFL afiseaza continutul campului F grupat dupa LcampFL ascendent afiseaza din tabel incepand de la prima
S"1"C' X 5)3 tabel 1434' FM,V/ D"1"'" 5)3 tabel ;>"" conditii/ UPDA'" tabel S"' coloanaFYLnoua valoare a coloanei FL, coloanaGYLnoua valoare a coloanei GL ;>"" conditii/ A1'" 'A1" tabel ADD dat '":'/ A1'" 'A1" tabel C>A" dat data '":'/ A1'" 'A1" tabel C>A" data data DA'"/ A1'" 'A1" tabel ADD nr 3"D4U34' US4"D A5'" coloanaF/
inregistrare inca H. afiseaza incepand de la inregistrarea FM inca V inregistrari din tabel sterge inregistrarea din tabel. Sintaxa este la fel ca la comanda S"1"C'. pentru actuaizarea continutului unei inregistrari din tabel. Sintaxa este la fel ca la comanda S"1"C'. adaugare la tabelul existent a unei coloane numita LdatL de tip text. redenumeste coloana numita LdatL cu numele LdataL modifica tipul coloanei LdataL din L'":'L in coloana de tip LDA'"L adauga o coloana numita LnrL dupa LcoloanaFL in tabelul LtabelL
Pentru crearea tabelului [Produse@ am uitilizat urmatoarea comanda* create table Produse0 4D Autoumber, umeTproduse varc!arG0GM2 primar< 6e<, rTlot number0\2not null, Producator varc!ar G0HM2 not null, DataTexpirare date not null , DataTfabricare date not null 2/
Pentru crearea tabelului [Producatori@ am utilizat urmatoarea comanda* create table Producatori04D Autoumber, umeTproducator varc!arG0HM2 primar< 6e<, Adresa varc!arG0VM2 not null, umarTtelefon number0V,G2 not null PersoanaTcontact varc!arG0HM2 not null2/
Pentru crearea tabelului @3edici@ am utilizat urmatoarea comanda* create table 3edici04D Autoumber primar< 6e<, ume varc!arG0HM2 not null, Specializare varc!arG0HM2 not null2*
Pentru crearea tabelului [Pacienti@ am utilizat urmatoare comanda* create table Pacienti04D Autoumber, cnp number0FH2 primar< 6e<, nume varc!arG0HM2 not null,adresa varc!arG0HM2 not null, nrTtelefon number0FM2 not null,functie varc!arG0GM2 not null, medicTsupraveg!etor varc!arG0GM2 references 3edici0nume2, reteta number0H2 not null2/ $.$. Inde*ul
4D"CS4 - Cel mai folosit tip de index este id-ul. 4d-ul este un numar unic de identificare pentru un element distinct 0un rand2 al unui tabel. Un exemplu de id din viata reala este numerotarea cd-urilor. Cand aveti un cd nou il numerotati si il puneti in raft la sfarsit iar in catalog puteti sa il puneti sortat dupa titlu sau dupa numarul de ordine. 1a fel si intr-o baza de date, puteti crea un camp care sa introduca automat un nr pentru fiecare rand nou adaugat in baza de date si la afisare puteti sa il folositi 0de exemplu la vizualizarea ultimilor FM vizitatori folositi id-ul - vezi sectiunea de monitorizare a traficului de pe acest site2. Pentru a creea un index avem urmatoarele comenzi* Sa zicem ca avem o baza de date numita lista cu un camp caseta si adaugam campul idTcasete - comanda este urmatoarea* A1'" 'A1" WcasetaW ADD WidTcasetaW 4'/ A1'" 'A1" WcasetaW C>A" WidTcasetaW WidTcasetaW 4'0FF2 US4"D )' U11/ A1'" 'A1" WcasetaW ADD P43AR 7"R 0idTcaseta2/
A1'" 'A1" WcasetaW C>A" WidTcasetaW WidTcasetaW 4'0FF2 US4"D D"5AU1' EME )' U11 AU')T4C"3"'/ Si din acest moment, orice caseta noua introdusa va avea automat un nr de ordine. "ste posibil ca toata insiruirea de comenzi de mai sus sa se poata face printr-o singura linie de cod, dar este mai sigur sa faceti cate o modificare in parte decat toate odata, pentru a detecta eventualele erori. "ste bine sa creati un id la inceputul tabelului, cand nu aveti intrari in baza de date, pentru a face incrementarea automat, altfel e posibil sa va dea erori. Cu ajutorul id-ului puteti afisa de exemplu noutatile, cu o comanda de genul afiseaza ultimele FM intrari sortate dupa id..., stiind ca intotdeauna ultima intrare are numarul cel mai mare. 4nterogari* 4n cazul 5armaciei, se doresc urmatoarele* •
•
• •
Produsele* data lor de expirare, data de fabricare, numarul lotului din care fac parte, producatorul, cantitatea, pretul, tva-ul. Producatori* umele firmei, adresa, numarul de telefon si numele persoanei de contact 3edic* numele si specializarea Pacienti* nume, prenume, tip, numar de telefon, medical supraveg!etor, CP-ul si reteta
8. +ro9lematica proiectului 5armacie este locul unde se prepar# și se v&nd medicamente conform re țetelor medicale și normelor din farmacologie. 5armacistul are printre altele datoria de a explica cump#r#torului și efectele secundare nedorite ale medicamentului, ca și despre fenomenul de potențare a dou# preparate farmocologice. 5armaciile cu circuit (nc!is vor asigura medicamente pentru bolnavii interna%i (n unit#%i sanitare, pentru serviciul de ambulan%# $i pentru ambulatoriu (n cadrul programelor na%ionale de s#n#tate, potrivit unui proiect al 3inisterului S#n#t#%ii.
3inistrul S#n#t#%ii a elaborat un proiect de )rdin pentru modificarea $i completarea )rdinului ministrului S#n#t#%ii privind aprobarea normelor de (nfiin%are, organizare $i func%ionare a farmaciilor $i drog!eriilor. Una dintre modific#rile propuse (n proiectul de )rdin vizeaz# statutul farmaciilor cu circuit (nc!is, readuc&nd (n obiectul de activitate al acestora eliberearea medicamentelor din programele na%ionale de s#n#tate, de la farmaciile cu circuit desc!is. Astfel, potrivit proiectului, Efarmacia cu circuit (nc!is este unitatea farmaceutic# ce asigur# asisten%a cu medicamente de uz uman pentru bolnavii interna%i (n unit#%i sanitare $i (n alte institu%ii cu re%ea sanitar# proprie $i pentru serviciul de ambulan%#, precum $i pentru ambulatoriu (n cadrul programelor na%ionale de s#n#tate $i ambulatoriul institu%iilor cu re%ea sanitar# proprieE. Pentru farmaciile comunitare din mediul rural $i urban, organizarea $i dotarea (nc#perii de receptur# $i laborator vor fi f#cute numai (n cazul (n care acestea declar# c# prepar# formule magistrale $i oficiale. Depozitul (n care se p#streaz# medicamentele $i alte produse permise a se elibera prin farmaciile comunitare trebuie s# aib# o suprafa%# de minimum FM metri p#tra%i, s# permit# asigurarea condi%iilor normale de umiditate $i s# fie prev#zut cu un sistem propriu de asigurare a temperaturii necesare conserv#rii medicamentelor (n condi%iile normale de depozitare prev#zute de c#tre produc#tor. Prin aceasta aplicatie incerc sa usurez munca farmacistilor oferindu-le o interfata prietenoasa, usor de folosit, ce simplifica adaugarea de noi informatii in baza de date si ce sorteza si contorizeaza orice sc!imbare in stocul farmaciei. Probleme generale intampinate in soft+are-urile farmaceutice sunt timpul de raspuns, dificultatea cautarii unor informatii deoarece sunt foarte multe similaritati. Aplicatia mea este concisa, gaseate imediat informatia dorita daca parametrii sunt corecti, elimina folosirea !artiilor si pierderea acestora deoarece salveaza fiecare factura, 4, bon , intr-o tabela si intr-un fisier text iar aceste date sunt stocate pe !ard dis6-ul extern timp de V luni.
:. +rocesul de dezvoltare al aplicatiei :.1. Baza de date
Primul pas (n realizarea unei aplica%ii de baze de date este analiza datelor $i realizarea unei sc!eme conceptuale 0model conceptual2 al acestor date.
Nn aceast# etap# sunt analizate natura $i modul de utilizare a datelor. Sunt identificate datele care vor trebui memorate $i procesate, se (mpart aceste date (n grupuri logice $i se identific# rela%iile care exist# (ntre aceste grupuri. Analiza datelor este un proces uneori dificil, care necesit# mult timp, (ns# este o etap# absolut obligatorie. 5#r# o analiz# atent# a datelor $i a modului de utilizare a acestora, vom realiza o baz# de date care putem constata (n final c# nu (ntrune$te cerin%ele beneficiarului. Costurile modific#rii acestei baze de date este mult mai mare dec&t costurile pe care le-ar fi implicat etapa de analiz# $i realizare a modelului conceptual. 3odificarea modelului conceptual este mult mai u$oar# dec&t modificarea unor tabele deja existente, care eventual con%in $i o mul%ime de date. 4deea de baz# a analizei datelor $i construirii modelului conceptual este Es# m#sori de dou# ori $i s# tai o singur# dat#E. 4nforma%iile necesare realiz#rii modelului conceptual se ob%in folosind metode conven%ionale precum intervievarea oamenilor din cadrul organiza%iei $i studierea documentelor folosite. )dat# ob%inute aceste informa%ii ele trebuiesc reprezentate (ntr-o form# conven%ional# care s# poat# fi u$or (n%eleas# de toat# lumea. ) astfel de reprezentare este diagrama entit#%i-rela%ii, numit# $i !arta rela%iilor, sau "D-ul 0"ntit< elations!ip Diagram2. Aceste sc!eme sunt un instrument util care u$ureaz# comunicarea dintre speciali$tii care proiecteaz# bazele de date $i programatori pe de o parte $i beneficiari, pe de alt# parte. Ace$tia din urm# pot (n%elege cu u$urin%# o astfel de sc!em#, c!iar dac# nu sunt cunosc#tori (n domeniul 4'. ) entitate poate fi definit# ca un lucru care este recunoscut ca fiind capabil s# existe independent și care poate fi identificat (n mod unic. ) entitate este o abstractizare a complexit#ții unui anumit domeniu. C&nd vorbim despre o entitate ne referim (n mod normal la un aspect din lumea real#, care poate fi diferit de alte aspecte din lumea real#. ) entitate poate fi un obiect fizic cum ar fi o cas# sau o ma șin#, un eveniment, cum ar fi v&nzarea unei case sau repararea ma șinii, sau un concept, cum ar fi o tranzacție a unui client sau un ordin de plat#. Deși termenul entitate este cel mai frecvent utilizat, ar trebui s# facem deosebirea (ntre o entitate și un tip de entitate. ) tip de entitate este o categorie. ) entitate, strict vorbind, este un exemplu al unui anumit tip de entitate. "xist# multe cazuri, de obicei, a unui tip de entitate. Deoarece termenul tip de entitate este oarecum greoi, cei mai mul ți oameni tind s# foloseasc# termenul entitate ca un sinonim pentru acest termen. "ntit# țile
care pot fi considerate ca substantive. "xemple* un computer, un angajat, un c&ntec, o teorem# matematic#. ) relație captureaza modul (n care dou# sau mai multe entit# ți sunt legate una de alta. elațiile pot fi considerate ca verbe, care leag# dou# sau mai multe substantive. Seturile de entit#ți sunt desenate ca dreptung!iuri, rela țiile ca romburi. Dac# un set de entit#ți particip# la un set de relații, acestea sunt conectate cu o linie. Atributele sunt desenate ca ovaluri și sunt conectate cu o linie pentru la o entitate sau la un set de relații. 1imit#rile cardinale pot fi exprimate dup# cum urmeaz#* •
•
•
•
o linie dubl# indic# o limitare de participare, rela ție total# sau func ție surjectiv#* toate entit#țile din acel set de entit# ți trebuie s# participe la cel puțin o relație din setul de relații/ o s#geat# dinspre setul de entit#ți c#tre setul de rela ții indic# o limitare tip c!eie unic#, adic# o relație injectiv#* fiecare entitate din setul de entit# ți poate participa (n cel puțin o relație din setul de rela ții/ o linie groas# indic# ambele relații, adic# bijectivitate* fiecare entitate din setul de entit#ți este implicat (n exact o relație. un nume subliniat a unui atribut indic# faptul c# acel atribut este c!eie unic#* dou# entit#ți sau relații diferite care au acest atribut au (ntotdeauna valori diferite pentru acest atribut.
Atributele sunt adesea omise, deoarece acestea pot creea dezordine (n diagram#/ (n alte te!nici de diagram#, atributele entit# ților se reprezint# adesea (n dreptung!iurile pentru seturi de entitate. :.1.2. Diagrame entitati%asociatii ;DE"<
:.2. Notiuni de inginerie soft=are > )/(
U31 Y limbaj de modelare vizual, orientat obiect, care descrie 0reprezint#2 propriet#%ile structurale $i dinamice ale unui sistem soft+are. Prin sistem soft+are se (ntelege o D sau un modul de cod (n general. Spre deosebire de modelul "A", U31 este o colec%ie de te!nici de modelare, folosite pentru tratarea multor aspecte ale procesului de concepere $i dezvoltare a soft+are-ului, de la proiectarea D la interac%iunea modulelor de cod. 5iecare te!nic# de modelare de mai sus d# o vedere diferit#, static# sau dinamic#, a unei aplica%ii. Colec%ia de vederi se nume$te model. 4at# unele din te!nicile de modelare U31* diagrame de clase, sau diagrame statice de structur#, care modeleaz# entit#%ile unui sistem prin clase cu atribute $i comportare. Diagramele de clas# descriu, de asemenea, asocierile dintre clase $i constr&ngerile asupra acestora. Apoi, alte te!nici* diagrame de obiecte, diagrame de ?caz de utilizare@, diagrame de stare, diagrame de secven%e, diagrame de activitate, diagrame de colaborare. Clase U31 Clasa U31 modeleaz# componentele 0entit#%ile2 de interes ale unui sistem. Clasa are instan%e, sau realiz#ri. Aceste instan%e sunt obiectele clasei. Prin conceptul de clas# se descriu structura $i comportarea obiectelor clasei. Structura con%ine atributele fiec#rui obiect din clas#. Comportarea include opera%iunile ce pot fi executate 0efectuate2 pe 0asupra2 o instan%# specific# de obiect.
Diagrama U31
:.$ Diagrama cazurilor de utilizare
Aplicatia mea se infatiseaza cu o interfata prietenoasa ce permite utilizatorului gestionarea undei baze de date cu usurinta. Utilizatorul poate modifica baza de date, adaugand produsele impreuna cu toate datele necesare introducerii lor. Cele mai importante date pentru medicamente sunt data expirarii si data fabricarii, numarul lotului din care apartin acestea precum si numele producatorului, deoarece pot exista mai multi producatori care fabrica acelasi tip de medicament. Pe langa produse, mai exista un form pentru pacienti. Acestia sunt stocati in baza de date dupa tipul lor si dupa reteta. Pot exista pacienti ce nu cumpara cu o reteta. De asemenea in tabela pentru pacienti se pot gasi date precum numele pacientului, CP-ul si medical supraveg!etor. 'abelul de producatori stoc!eaza date despre firma producatoare, adresa, persoana de contact precum si numarul de telefon. Daca utilizatorul logat are drepturi suficiente acesta poate adauga sau sterge date din tabela in cauza.
3edicamentele vandute sunt scazute din stocul total si nu mai sunt puse la socoteala in momentul efectuarii unei verificari de stoc. etetele au un cod unic de identificare asa canu pot exista doi pacienti care beneficiaza de aceiasi reteta si nici doi medici ce elibereaza aceiasi reteta .
:.8. "plicatia. /od de lucru? implementare si interfata
4n cele ce urmeaza va voi prezenta aplicatia, modul de lucru si implementarea acesteia. Pagina de start *
Aceasta fereastra face legatura cu toate celelalte pagini de care utilizatorul are nevoie. Desigur daca nu este nici un utilizator conectat , dand clic pe oricare dintre butoane inafara de cel de inc!idere nu va afecta in nici un fel starea programului si nici nu va sc!imba pagina de start.
Pagina =anzari
4n aceasta pagina putem introduce datele despre produsele ce urmeaza a fi vandute. Codul retetei nu este obligatoriu. Daca nu completam acea fereastar pacientul ce beneficiaza de produsele cumparate va fi adaugat intr-ul table separate. 4n nomentul in care dorim sa adaugam o noua inregistrare vom da clic6 pe butonul on nou. Acesta ne va desc!ide o a doua fereasta ce ne va ajuta sa creem un nou bon . Dupa apasarea butonului confirmare putem adauga restul de date.
Pagina 4
4n aceasta pagina gasim nota de intrare si receptie. Asta inseamna ca in acest form sunt introduse toate produsele care intra in farmacie, cantitatea lor si producatorul.
:.:. Diagrama cazurilor de utilizare •
Un use case este o reprezentare la nivel conceptual a unei interactiuni dintre un actor si un sistem si a activitatilor care se produc si pe care sistemul le face.
•
Un caz de utilizare este o secventa a tranzactiilor realizate de sistem ca raspuns la evenimentele declansate de un actor sistemului.
•
Un caz de utilizare contine toate evenimentele care pot surveni in cadrul perec!ii actor - caz de utilizare, nu neaparat unul ce va apare in orice scenariu particular.
•
Un caz de utilizare poate de asemenea descrie comportamentul unui set de obiecte, ca de exemplu o organizatie.
•
) diagrama use case este folosita (n general pentru a indica sau caracteriza functionalitatile si comportamentul sistemului ce interactioneaza cu unul sau mai multi actori. Un actor poate fi un utilizator sau orice sistem ce poate interactiona cu sistemul modelat.
At&t timp ce actorii reprezinta utilizatorii, ei ajuta la construirea unei imagini clare a ceea ce se asteapta a se (nt&mpla (n sistem. Cazurile de utilizare sunt construite pe baza nevoilor pe care le au actorii 0utilizatorii2. Aceasta asigura faptul ca sistemul va produce ceea ce s-a dorit.
"lement Actori
Caz de utilizare 0Use-Case2 Asociere
Descriere Un actor este, in principiu, un utilizator al sistemului, dar poate fi si un alt sistem informatics care interactioneaza cu sistemul analizat Cazurile de utilizare se reprezinta sub forma unei elipse in interiorul careia este scris numele cazului respectiv. umele incepe de obicei cu un verb Asocierea este utilizata pentru a indica legatura dintre un actor si un caz de utilizare, in sensul ca acel actor participa intr-ul fel oarecare in acel caz
otatie
:.@. Diagrama de activitate • *cti&ity +iagram reprezint# o modalitate de modelare vizual# a fluxurilor. •
Cu ajutorul acti&ity diagram pot fi modelate foarte bine use case-urile, dar, (n aceea$i m#sur#, aceste diagrame pot fi folosite pentru modelarea proceselor de business 0f#r# leg#tur# cu sistemul informatic2.
• otatiile sunt foarte asem#n#toare cu cele din diagrama de stare deoarece activit< diagram nu sunt altceva dec&t o varia%ie a statechart diagram.
:.A. Diagrame de componente
) component# este un modul soft 0cod surs#, cod binar, dll, executabil etc2 cu o interfat# bine definit#. Un tip de component# reprezint# o parte distinct#, realocabil#, a implement#rii unui sistem. 4n U31, termenul de componenta desemneaza un element soft+are fizic din componenta unui sistem. Astfel, o componenta poate fi* cod binar, document, fisier continand cod sursa sau date, tabela a unei baze de date. ) componenta binara este o parte fizica si substituibila a unui sistem, care realizeaza si este in conformitate cu un set de interfete. Componentele binare sunt independente de limbajul de programare in care au fost codificate iar utilizarea lor se bazeaza exclusiv pe interfete. 'e!nologiile folosite in prezent pentru crearea de componente binare sunt* C)3], DC)3,C)A, Iava eans.
:.. Diagramele de clasa Diagrama de clase
3odeleaz# vocabularul sistemului ce trebuie dezvoltat Surprinde conexiunile semantice sau interac%iunile care se stabilesc (ntre elementele componente 5olosit# pentru a modela structura unui program Poate con%ine ^ Clase4nterfe%e ^ )biecte ^ 1egaturi - Asociere - Agregare - eneralizare - Dependen%# - ealizare
Clase
^ 3odeleaz# vocabularul Y identific# conceptele pe care clientul sau programatorul le folose$te pentru a descrie solu%ia problemei ^ Pot fi* - Abstrac%ii care fac parte din domeniul problemei - Clase necesare la momentul implement#rii #9iect
^ eprezint# o instan%# a unei clase ^ Are identitate $i valori ale atributelor (egaturi
^ Nntre clase - A. eneralizare - . Dependen%# - C. ealizare ^ Nntre instan%e ale claselor - D. Asociere - ". Agregare
:.. 0unctii implementate in cod 0)NCI" DE E0ES- +EN) C"/+)I +rivate Su, goleste9campuri/ T)tnume.Te)t : ;; T)tlot.Te)t : ;; T)tcantitate.Te)t : ;; T)tdataf.Te)t : ;; T)tdatae.Te)t : ;; T)tproducator.Te)t : ;; T)tpret.Te)t : ;; T)tptva.Te)t : ;; T)ttva.Te)t : ;; End Su,
VALIDARI
If T)tnume.Te)t : ;; Then "eep/ sg"o);Completati enumire +rodus <;/ T)tnume.7ocus/ E)it Su, End If If T)tlot.Te)t : ;; Then "eep/ sg"o);Completati Numarul lotului <;/ T)tlot.7ocus/ E)it Su, End If If T)tdataf.Te)t : ;; Then "eep/ sg"o);Completati data fa,ricarii <;/ T)tdataf.7ocus/ E)it Su, End If If T)tdatae.Te)t : ;; Then "eep/ sg"o);Completati data e)pirarii <;/ T)tdatae.7ocus/ E)it Su, End If If T)tcantitate.Te)t : ;; Then "eep/ sg"o);Completati cantitatea <;/ T)tcantitate.7ocus/ E)it Su,
End If If T)tproducator.Te)t : ;; Then "eep/ sg"o);Completati Numele producatorului <;/ T)tproducator.7ocus/
V.FM. Ar!itectura aplicatiei
:.A.1 Sistemul de meniuri
@. Concluzii @.1. Consideratii personale Am creeat aceasta aplicatie gandindu%ma ca de multe ori am fost la farmacie iar softul acestora sa ,locat= sau a tre,ui sa stau la coada deoarece asistentul>farmacistul nu se descurca asa de ,ine cu soft%ul ales de 7irma. Tind sa cred ca aplicatia mea are o interfata prietenoasa= cu care orice persoana se poate descurca dupa putine e)plicatii. Aplicatia contine ?alidari ce a@uta la eliminarea partiala a erorilor umane si este destul de precisa. tilizatorul isi poate indeplini sarcinile cu o mult mai multa simplitate avand in vedere ca programul se ocupa de efectuarea facturilor in ,aza ,onului si a persoanei ,ene8ciare= stocheaza datele pentru o ,una perioada de timp= si nu ingreuneaza sistemul. In aplicatie nu pot avea acces persoanele straine= sau cele care nu au un nume de utilizator si o parola.
@.2.Bi9liografie 1.http&>>000.uni)inside.org>papers>C%"ooB>cap1.html 2.000.scritu,.com #.http&>>en.0iBipedia.org>0iBi>Dindo0s9DorBo097oundation *.http&>>stacBovero0.com>Fuestions>11##6*3>datagridvie0%does%not%refresh%after% dataset%update%v,%net -.http&>>000.c%sharpcorner.com>7orums>Thread>21255*>visual%studio%212%0pf% datagrid%slo0%in%refresh.asp) 3.http&>>oGce.microsoft.com>en%us>access%help>enforce%referential%integritH% ,et0een%ta,les%adp%+#5*1*.asp) 7.www.bazededate.org/ModelulUnificat.pdf 8.http://office.microsoft.com/ro-ro/access-help/despre-proiectarea-unei-baze-de-dateHP005189136.asp 9.http://!!!.!3schools.com/s"l/s"l#datat$pes.asp 10.http://ro.!i%ipedia.or&/!i%i/'() 11.http://office.microsoft.com/en-001/access-help/access-s"l-basic-concepts-*ocabular$-ands$nta-H+010,560,.asp 1,.http://!!!.rasfoiesc.com/educatie/informatica/otiuni-de-baza-isual-asic.php 13.http://lifehac%er.com/59158/!hat-is-the-net-frame!or%-and-!h$-do-i-need-it 1.http://biblioteca.re&ieli*e.ro/cursuri/electronica/tehnolo&ia-net-,0908.html 15.http://!!!.bi&resource.com/-'earch-utton-2ode-tt(p4(ru.html 16.aze de date si utilizarea acestora +driana lteanu ;a&dalena +n&hel
A. "ne*a
0ormul "daugareprodus Imports SHstem.ata.!le, +u,lic Class Adauga9produs im con As Ne0 !le,Connection im cmd As Ne0 !le,Command +rivate Su, Adauga9produs9(oadsender As !,@ect= e As EventArgs/ andles H"ase.(oad JT!!& This line of code loads data into the J7armacieataSet.+roduseJ ta,le. Kou can move= or remove it= as needed. e.+roduseTa,leAdapter.7ille.7armacieataSet.+roduse/ End Su, +rivate Su, goleste9campuri/ T)tnume.Te)t : ;; T)tlot.Te)t : ;; T)tcantitate.Te)t : ;; T)tdataf.Te)t : ;; T)tdatae.Te)t : ;; T)tproducator.Te)t : ;; T)tpret.Te)t : ;; T)tptva.Te)t : ;; T)ttva.Te)t : ;; End Su, +rivate Su, adauga9inregistrare/ im listaCampuri As String im lista?alori As String con.ConnectionString : +roduseTa,leAdapter.Connection.ConnectionString cmd.Connection : con listaCampuri : ;Nume9produs= Numar9lot= ata9fa,ricarii= ata9e)pirarii= +roducator= Cantitate= +ret= T?A= +ret9cu9T?A; lista?alori : ;J; L T)tnume.Te)t L ;J=J; L T)tlot.Te)t L ;J=J; L T)tdataf.Te)t L ;J=J; L T)tdatae.Te)t L ;J=J; L T)tproducator.Te)t L ;J=J; L T)tcantitate.Te)t L ;J=J; L T)tpret.Te)t L ;J=J; L T)ttva.Te)t L ;J=J; L T)tptva.Te)t L ;J;
cmd.CommandTe)t : ;Insert into +roduse; L listaCampuri L ;/ ; L ;Select ; L lista?alori sg"o)cmd.CommandTe)t/ con.!pen/
cmd.E)ecuteNon'uerH/
con.Close/ End Su, +rivate Su, refresh9grid"H?al p As Integer/ +roduseTa,leAdapter.7ill7armacieataSet.+roduse/ +roduse"indingSource.+osition : p End Su,
+rivate Su, +roduse9(oad"H?al sender As SHstem.!,@ect= "H?al e As SHstem.EventArgs/ andles H"ase.(oad JT!!& This line of code loads data into the J7armacieataSet.+roducatoriJ ta,le. Kou can move= or remove it= as needed. e.+roduseTa,leAdapter.7ille.7armacieataSet.+roduse/ +roduseTa,leAdapter.Connection.ConnectionString : ;+rovider:icrosoft.ACE.!(E".12.Mata Source:; L ds
Jon8gurare,utoane/ "tnresetare.?isi,le : True "tnadaugare.?isi,le : True "tninapoi.?isi,le : True "tnstergere.?isi,le : True J+rotectie componente ata$rid?ie01.Allo0serToAddOo0s : True ata$rid?ie01.Allo0serToeleteOo0s : True ata$rid?ie01.Oead!nlH : True T)tnume.Oead!nlH : 7alse T)tlot.Oead!nlH : 7alse T)tcantitate.Oead!nlH : 7alse T)tdataf.Oead!nlH : 7alse T)tdatae.Oead!nlH : 7alse T)tproducator.Oead!nlH : 7alse T)tpret.Oead!nlH : 7alse T)tptva.Oead!nlH : 7alse T)ttva.Oead!nlH : 7alse End Su, +rivate Su, Adaod"H?al t As String/ JCon8gurare ,utoane "tnresetare.?isi,le : True "tnadaugare.?isi,le : True "tninapoi.?isi,le : True "tnstergere.?isi,le : True "tnadaugare.Ena,led : True "tnresetare.Ena,led : True "tninapoi.Ena,led : True "tnstergere.Ena,led : True
Jezlegare controale +anel T)tnume.ata"indings.Clear/ T)tlot.ata"indings.Clear/ T)tcantitate.ata"indings.Clear/ T)tdataf.ata"indings.Clear/ T)tdatae.ata"indings.Clear/ T)tproducator.ata"indings.Clear/ T)tpret.ata"indings.Clear/ T)tptva.ata"indings.Clear/ T)ttva.ata"indings.Clear/ JOidicare protectie actualizare T)tnume.Oead!nlH : 7alse
T)tlot.Oead!nlH : 7alse T)tcantitate.Oead!nlH : 7alse T)tdataf.Oead!nlH : 7alse T)tdatae.Oead!nlH : 7alse T)tproducator.Oead!nlH : 7alse T)tpret.Oead!nlH : 7alse T)tptva.Oead!nlH : 7alse T)ttva.Oead!nlH : 7alse
J+ozitionare cursor pe primul camp T)tnume.7ocus/ End Su,
+rivate Su, "tnadaugare9ClicB"H?al sender As SHstem.!,@ect= "H?al e As SHstem.EventArgs/ andles "tnadaugare.ClicB
If T)tnume.Te)t : ;; Then "eep/ sg"o);Completati enumire +rodus <;/ T)tnume.7ocus/ E)it Su, End If If T)tlot.Te)t : ;; Then "eep/ sg"o);Completati Numarul lotului <;/ T)tlot.7ocus/ E)it Su, End If If T)tdataf.Te)t : ;; Then "eep/ sg"o);Completati data fa,ricarii <;/ T)tdataf.7ocus/ E)it Su, End If If T)tdatae.Te)t : ;; Then "eep/ sg"o);Completati data e)pirarii <;/ T)tdatae.7ocus/ E)it Su, End If If T)tcantitate.Te)t : ;; Then "eep/ sg"o);Completati cantitatea <;/ T)tcantitate.7ocus/ E)it Su, End If If T)tproducator.Te)t : ;; Then "eep/ sg"o);Completati Numele producatorului <;/ T)tproducator.7ocus/ E)it Su, End If If T)tpret.Te)t : ;; Then "eep/
sg"o);Completati pretul <;/ T)tpret.7ocus/ E)it Su, End If If T)ttva.Te)t : ;; Then "eep/ sg"o);Completati valoarea T?A%ului <;/ T)ttva.7ocus/ E)it Su, End If If T)tptva.Te)t : ;; Then "eep/ sg"o);Completati +retul cu T?A al produsului <;/ T)tptva.7ocus/ E)it Su, End If
Adaod;AA$AOE;/ JInitializare campuri +anel adauga9inregistrare/ goleste9campuri/ End Su, +rivate Su, T)tnume9(eave"H?al sender As !,@ect= "H?al e As SHstem.EventArgs/ andles T)tnume.(eave im rdr As !le,ataOeader If T)tnume.Te)t : ;; Then E)it Su, con.ConnectionString : +roduseTa,leAdapter.Connection.ConnectionString cmd.Connection : con cmd.CommandTe)t : ;Select P from +roduse Dhere Nume9produs : J; L T)tnume.Te)t L ;J;
con.!pen/ rdr : cmd.E)ecuteOeader If rdr.Oead Then "eep/ sg"o);Nume de@a e)istent <;/ T)tnume.7ocus/ End If con.Close/ End Su,
+rivate Su, "tnresetare9ClicB"H?al sender As SHstem.!,@ect= "H?al e As SHstem.EventArgs/ andles "tnresetare.ClicB
Jon8gurare,utoane/ "tnresetare.?isi,le : True "tnadaugare.Ena,led : True "tninapoi.Ena,led : True
J+rotectie componente ata$rid?ie01.Allo0serToAddOo0s : True ata$rid?ie01.Allo0serToeleteOo0s : True ata$rid?ie01.Oead!nlH : True T)tnume.Oead!nlH : True T)tnume.Oead!nlH : True T)tlot.Oead!nlH : True T)tcantitate.Oead!nlH : True T)tdataf.Oead!nlH : True T)tdatae.Oead!nlH : True T)tproducator.Oead!nlH : True T)tpret.Oead!nlH : True T)tptva.Oead!nlH : True T)ttva.Oead!nlH : True J(egare controale T)tnume.ata"indings.Add;;= +roduse"indingSource= ;Nume9produs;/ T)tlot.ata"indings.Add;;= +roduse"indingSource= ;Numar9lot;/ T)tcantitate.ata"indings.Add;;= +roduse"indingSource= ;Cantitate;/ T)tdataf.ata"indings.Add;;= +roduse"indingSource= ;ata9fa,ricarii;/ T)tdatae.ata"indings.Add;;= +roduse"indingSource= ;ata9e)pirarii;/ T)tproducator.ata"indings.Add;;= +roduse"indingSource= ;+roducator;/ T)tpret.ata"indings.Add;;= +roduse"indingSource= ;+ret;/ T)tptva.ata"indings.Add;;= +roduse"indingSource= ;+ret9cu9T?A;/ T)ttva.ata"indings.Add;;= +roduse"indingSource= ;T?A;/ End Su,
+rivate Su, "tninapoi9ClicBsender As !,@ect= e As EventArgs/ andles "tninapoi.ClicB e.Close/ End Su, +rivate Su, "tnstergere9ClicBsender As !,@ect= e As EventArgs/ andles "tnstergere.ClicB im rdr As !le,ataOeader im p As (ong
If sg"o);Con8rmati stergerea;= sg"o)StHle.!BCancel sg"o)StHle.E)clamation/ : sg"o)Oesult.Cancel Then 9 E)it Su, J?alidare integritate referentiala con.ConnectionString : +roduseTa,leAdapter.Connection.ConnectionString cmd.Connection : con cmd.CommandTe)t : ;Select P from +roduse 0here Nume9produs : J; L +roduse"indingSource.Current;Nume9produs;/ L ;J;
con.!pen/ rdr : cmd.E)ecuteOeader/
rdr.Close/ JSe efectueaza stergerea
cmd.CommandTe)t : ;E(ETE from +roduse 0here Nume9produs : J; L +roduse"indingSource.Current;Nume9produs;/ L ;J;
cmd.E)ecuteNon'uerH/
con.Close/
JSalvare pozitie produs crt p : +roduse"indingSource.+osition JOefresh grid e.+roduseTa,leAdapter.7ille.7armacieataSet.+roduse/ JOefacere pozitie +roduse"indingSource.+osition : p End Su, +rivate Su, "tnrefresh9ClicBsender As !,@ect= e As EventArgs/ andles "tnrefresh.ClicB e.+roduseTa,leAdapter.7ille.7armacieataSet.+roduse/ End Su, End Class
0ormul 7anzari Imports SHstem.ata.!le, +u,lic Class ?anzari +u,lic I As (ong im con As Ne0 !le,Connection im cmd As Ne0 !le,Command im rdr As !le,ataOeader
+rivate Su, "tninapoi9ClicBsender As !,@ect= e As EventArgs/ andles "tninapoi.ClicB e.Close/
End Su, +rivate Su, ?anzari9(oadsender As !,@ect= e As EventArgs/ andles H"ase.(oad JT!!& This line of code loads data into the J7armacieataSet.Tip9+acientiJ ta,le. Kou can move= or remove it= as needed. e.Tip9+acientiTa,leAdapter.7ille.7armacieataSet.Tip9+acienti/ JT!!& This line of code loads data into the J7armacieataSet.+roduseJ ta,le. Kou can move= or remove it= as needed. e.+roduseTa,leAdapter.7ille.7armacieataSet.+roduse/ JT!!& This line of code loads data into the J7armacieataSet.?anzariJ ta,le. Kou can move= or remove it= as needed. e.?anzariTa,leAdapter.7ille.7armacieataSet.?anzari/ JT!!& This line of code loads data into the J7armacieataSet.+roducatoriJ ta,le. Kou can move= or remove it= as needed. e.+roduseTa,leAdapter.7ille.7armacieataSet.+roduse/ End Su, +rivate Su, completeazaate?anzare/ TrH ?anzari"indingSource.Current;+rodus;/ : +roduse"indingSource.Current;Nume9produs;/ ?anzari"indingSource.Current;+ret;/ : +roduse"indingSource.Current;+ret9cu9T?A;/ ?anzari"indingSource.Current;+acient;/ : +acienti"indingSource.Current;Nume9pacient;/ ?anzari"indingSource.Current;Cod retera;/ : +acienti"indingSource.Current;Oeteta;/
?anzari"indingSource.Current;edic;/ : +acienti"indingSource.Current;edic9supraveghetor;/ ?anzari"indingSource.Current;I;/ : +roduse"indingSource.Current;I;/ calc?alori/ ata$rid?ie01.Oefresh/ Catch e) As E)ception End TrH End Su, +rivate Su, calc?alori/ im v As ecimal im tva As ecimal im c As ecimal im p As ecimal im vtva As ecimal im i As (ong i : ?anzari"indingSource.+osition If Is"Null?anzari"indingSource.Current;+ret;// Then E)it Su, If Is"Null?anzari"indingSource.Current;Cantitate;// Then E)it Su, c : ?anzari"indingSource.Current;Cantitate;/ p : ?anzari"indingSource.Current;+ret?anzare;/ vtva : +roduse"indingSource.Current;T?A;/ v:cPp vtva : v P tva > 1 ?anzari"indingSource.Current;+ret;/ : v +roduse"indingSource.Current;T?A;/ : tva
ata$rid?ie01.Oefresh/ End Su, +rivate Su, calcTotal/ im s1 As ecimal im s2 As ecimal 7or Each rec In ?anzari"indingSource If Not Is"Nullrec;+ret;// Then s1 : s1 rec;+ret;/ If Not Is"Nullrec;T?A;// Then s2 : s2 rec;T?A;/ Ne)t t)tTotal?aloare.Te)t : s1 t)t?aloareT?A.Te)t : s2 T)tTotalComanda.Te)t : s1 s2 End Su, +rivate Su, CalcNr/
cmd.CommandTe)t : ;Select a)I/ as a)Nr from ?anzari; con.!pen/ rdr : cmd.E)ecuteOeader rdr.Oead/ If Is"Nullrdr;a)Nr;// Then T)t,on.Te)t : 1 Else
T)t,on.Te)t : rdr;a)Nr;/ 1 End If
rdr.Close/ con.Close/ End Su, +rivate Su, adaugaComanda/ im d As ate im usdate As String im id As (ong im rec As ataOo0 d : dpata.?alue usdate : d.onth L ;>; L d.aH L ;>; L d.Kear cmd.CommandTe)t : ;Insert into ?anzariI= ata= Tip9pacient/ ; L 9 ;Select ; L T)tI.Te)t L ;=Q; L usdate L ;Q=; L Cm,tip.Selected?alue
con.!pen/ cmd.E)ecuteNon'uerH/ Jetermin idComanda cmd.CommandTe)t : ;Select I from ?anzari 0here NrComanda : ; L T)tI.Te)t L 9 ; and ata : Q; L usdate L ;Q and Tip9pacient:; L Cm,tip.Selected?alue
rdr : cmd.E)ecuteOeader/ rdr.Oead/ id : rdr;I;/ rdr.Close/ 7or Each rec In 7armacieataSet.?anzari cmd.CommandTe)t : ;Insert into ?anzariI= edic= +acient= Cod reteta= Tip9pacient= +rodus= Cantitate= +ret= +ret9cu9T?A/ Select ; L 9 id L ;=; L rec;edic;/ L ;=; L rec;I;/ L ;=; L rec;+ret;/ L ;=; L rec;Cantitate;/ L 9 ;=; L rec;+ret9cu9T?A;/
cmd.E)ecuteNon'uerH/ Ne)t
con.Close/ End Su, +rivate Su, initCampuri/ im n As (ong im i As (ong
CalcNr/ Cm,tip.SelectedInde) : %1
n : 7armacieataSet.?anzari.Count 7or i : 1 To n 7armacieataSet.?anzari/.elete/ Ne)t End Su, +rivate Su, 7orm19(oad"H?al sender As SHstem.!,@ect= "H?al e As SHstem.EventArgs/ andles H"ase.(oad
+acientiTa,leAdapter.Connection.ConnectionString : ;+rovider:icrosoft.ACE.!(E".12.Mata Source:; L ds +roduseTa,leAdapter.Connection.ConnectionString : ;+rovider:icrosoft.ACE.!(E".12.Mata Source:; L ds con.ConnectionString : +acientiTa,leAdapter.Connection.ConnectionString cmd.Connection : con
e.+acientiTa,leAdapter.7ille.7armacieataSet.+acienti/
e.+roduseTa,leAdapter.7ille.7armacieataSet.+roduse/
If I : Then CalcNr/ Else CompleteazaateComanda/ End If End Su, +rivate Su, CompleteazaateComanda/ im pacient As (ong im dc As ate im rec As ataOo0
cmd.CommandTe)t : ;Select P from ?anzari 0here I : ; L T)tI.Te)t con.!pen/ rdr : cmd.E)ecuteOeader rdr.Oead/ dc : rdr;ataComanda;/ dpata.?alue : dc pacient : rdr;+acient;/ Cm,tip.Selected?alue : pacient rdr.Close/ cmd.CommandTe)t : ;SE(ECT ?anzari.I=; L 9 ;?anzari.+ret=?anzari.Cantitate= ; L 9 ;?anzari.T?A= +roduse.Nume9produs= ; L 9 ;?anzari.I ; L 9 ;7O! ?anzari (E7T !TEO R!IN ; L 9 ;+roduse !N ?anzari.I : +roduse.Id+rodus/ ; L 9 ;DEOE?anzari.I : ; L I L ;/ !OEO "K ?anzari.I; rdr : cmd.E)ecuteOeader Dhile rdr.Oead rec : 7armacieataSet.?anzari.Ne0Oo0 rec;I;/ : rdr;I;/ rec;+rodus;/ : rdr;Nume9produs;/ rec;+ret;/ : rdr;+ret9cu9T?A;/ rec;Cantitate;/ : rdr;Cantitate;/ rec;Id+rodus;/ : rdr;Id+rodus;/ rec;CotaT?A;/ : rdr;CotaT?A;/ rec;+ret;/ : rec;+ret9cu9T?A;/ P rec;Cantitate;/ rec;T?A;/ : rec;+ret;/ P rec;T?A;/ > 1 7armacieataSet.?anzari.Add?anzariOo0rec/ End Dhile rdr.Close/
con.Close/ calcTotal/ End Su,
+rivate Su, +roduse"indingSource9CurrentChanged"H?al sender As !,@ect= "H?al e As SHstem.EventArgs/ andles +roduse"indingSource.CurrentChanged
completeazaate?anzare/ Je.ata$rid?ie01.CurrentCell : e.ata$rid?ie012= / End Su,
+rivate Su, ata$rid?ie019CellEndEdit"H?al sender As !,@ect= "H?al e As SHstem.Dindo0s.7orms.ata$rid?ie0CellEventArgs/ andles ata$rid?ie01.CellEndEdit calc?alori/ End Su, +rivate Su, ata$rid?ie019CellouseClicB"H?al sender As !,@ect= "H?al e As SHstem.Dindo0s.7orms.ata$rid?ie0CellouseEventArgs/ andles ata$rid?ie01.CellouseClicB If ata$rid?ie01.CurrentCell.ColumnInde) 1 Then E)it Su, End Su, +rivate Su, ata$rid?ie019ataError"H?al sender As !,@ect= "H?al e As SHstem.Dindo0s.7orms.ata$rid?ie0ataErrorEventArgs/ andles ata$rid?ie01.ataError sg"o)e.E)ception.essage/ End Su, +rivate Su, ?anzari"indingSource9CurrentChanged"H?al sender As !,@ect= "H?al e As SHstem.EventArgs/ andles ?anzari"indingSource.CurrentChanged TrH ?anzari"indingSource.Current;Nrc;/ : ?anzari"indingSource.+osition 1
calcTotal/ Catch e) As E)ception End TrH End Su,
+rivate Su, T)tTotalComanda9ouseClicB"H?al sender As !,@ect= "H?al e As SHstem.Dindo0s.7orms.ouseEventArgs/ andles T)tTotalComanda.ouseClicB calcTotal/ End Su, +rivate Su, t)tTotal?aloare9ClicB"H?al sender As !,@ect= "H?al e As SHstem.EventArgs/ andles t)tTotal?aloare.ClicB calcTotal/ End Su, +rivate Su, t)t?aloareT?A9ouseClicB"H?al sender As !,@ect= "H?al e As SHstem.Dindo0s.7orms.ouseEventArgs/ andles t)t?aloareT?A.ouseClicB calcTotal/ End Su,
+rivate Su, ata$rid?ie019sereletedOo0"H?al sender As !,@ect= "H?al e As SHstem.Dindo0s.7orms.ata$rid?ie0Oo0EventArgs/ andles ata$rid?ie01.sereletedOo0 im rec As ataOo0 im i As Integer i:1 7or Each rec In 7armacieataSet.?anzari rec;I;/ : i i:i1 Ne)t End Su, +rivate Su, ata$rid?ie019sereletingOo0"H?al sender As !,@ect= "H?al e As SHstem.Dindo0s.7orms.ata$rid?ie0Oo0CancelEventArgs/ andles ata$rid?ie01.sereletingOo0 If sg"o);Con8rmati stergerea;= v,!UCancel sg"o)StHle.E)clamation/ : v,Cancel Then e.Cancel : True End Su, +rivate Su, ,tnCon8rmare9ClicB"H?al sender As SHstem.!,@ect= "H?al e As SHstem.EventArgs/ andles ,tnCon8rmare.ClicB If T)tI.Te)t : ;; Then "eep/ & sg"o);Completati Id%ul comenzii;/ & T)tI.7ocus/ & E)it Su, End If If Cm,tip.Te)t : ;; Then "eep/ & sg"o);Completati tipul pacientului;/ & Cm,tip.7ocus/ & E)it Su, End If End Su, +rivate Su, modi8caComanda/ im d As ate im usdate As String d : dpata.?alue usdate : d.onth L ;>; L d.aH L ;>; L d.Kear
cmd.CommandTe)t : ;pdate ?anzari Set I : ; L T)tI.Te)t L 9 ;= ataComanda : Q; L usdate L ;Q; L 9 ;= Tip9pacient : ; L Cm,tip.Selected?alue L 9 ; Dhere I : ; L I con.!pen/ cmd.E)ecuteNon'uerH/
JSterg continutul comenzii din ,aza de date cmd.CommandTe)t : ;elete from ?anzari Dhere I : ; L I cmd.E)ecuteNon'uerH/
JAdaug noul continut al comenzii in ,aza de date 7or Each rec In 7armacieataSet.?anzari cmd.CommandTe)t : ;Insert into ?anzariI= edic= +acient= Cod reteta= Tip9pacient= +rodus= Cantitate= +ret= +ret9cu9T?A/ Select ; L 9 I L ;=; L rec;edic;/ L ;=; L rec;I;/ L ;=; L rec;+ret;/ L ;=; L rec;Cantitate;/ L 9 ;=; L rec;+ret9cu9T?A;/
cmd.E)ecuteNon'uerH/ Ne)t