Documente Academic
Documente Profesional
Documente Cultură
Iulie 2014
Cuprins
1.Introducere
..
4. Problematica proiectului
.
.
5. Procesul de dezvoltare a aplicatiei
..
5.1.1. Diagrame entitati-Asociatii (DEA)
..
5.2. Notiuni de inginerie software- UML
6. Concluzii
..
6.1. Consideratii personale
..
6.2. Bibliografie
.
7. Anexa
1.Introducere
Scopul acestui proiect este de a facilita si creea un mod eficient de colaborare intre
utilizator si aplicatie. Usurinta parcurgerii bazei de date si structura 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 incerc sa creez o mai buna functionare a sitemelor deja in functie.
Exista pe piata programe care deja indeplinesc aproape toate nevoile unei farmacii.
O parte din programele consecrate ce au rezolvat problema administrarii unei farmacii ce
se afla acum pe piata sunt:
Pharmec software
Charisma ERP
Pharma software
Servicii .NET mai multe servicii .NET, asigurate de Microsoft pentru folosire in
dezvoltarea aplicatiilor ce merg pe .NET Framework. Foarte importante si de
amintit sunt serviciile Web (Web Services).
Exista mai multe sisteme de stocare pe piata, fiecare folosind un protocol diferit de
comunicatie, de aceea ADO.NET dispune de cate un DataProvider pentru fiecare tip de
baza de date:
- ODBC DataProvider: pentru baze de date mai vechi, ce folosesc protocolul
ODBC
- OleDB DataProvider: pentru Acces, Excel,..;
- Oracle DataProvider: pentru baze de date Oracle;
- SQL DataProvider: pentru Microsoft SQLServer;
Sunt mai multe servere de baze de date (SGBD) pe piata de software: Oracle, SQL
Server, MySql, Acces, FoxPro, etc. Utilizatorul alege SGBD-ul care satisface cel mai
bine compromisul intre performanta si pret. In continuare noi vom lucra cu o baza de date
Oracle 9i, fiind o baza cu performante deosebite la un pret de cost rezonabil.
Instruciunile, pot avea un efect persistent asupra datelor sau structurii datelor,
sau pot controla tranzaciile, conexiunile sau cursul programului. n general,
instruciunile SQL se termin cu caracterul punct-virgul (";"), dei acest lucru nu este
obligatoriu n toate platformele SQL. Spaiile albe suplimentare sunt ignorate, dar ele
pot fi folosite pentru lizibilitatea codului SQL
Oricrei coloane (sau cmp) dintr-un tabel SQL i este asignat un tip de dat, la fel ca n
toate celelalte limbaje de programare. Tipurile de date sunt urmtoarele:
TIME - ora.
3.1. Interogri
Cea mai des utilizat instruciune n SQL este instruciunea SELECT.
SELECT [ALL | DISTINCT] coloana1 [,coloana2]
[INTO fiier]
FROM tabel1 [,tabel2]
[WHERE condiie] [ AND|OR condiie...]
[GROUP BY list-coloane]
[HAVING condiii]
[ORDER BY list-coloane [ASC | DESC] ]
Clauza INTO este utilizat pentru a transfera rezultatul interogrii ntr-o nou
tabel; valabil n Microsoft Access, dar nu n toate platformele SQL.
Clauza WHERE este utilizat pentru a specifica condiii trebuie s ndeplineasc
coloanele din care se face selecia. Aceast condiie este o expresie logic ob inut
prin alicarea operatorilor conjuncie (AND) i disjuncie (OR) asupra unor expresii
logice elementare obinute cu ajutorul operatorilor: = (egal), <> (diferit), < (mai mic
dect), <= (mai mic sau egal dect), > (mai mare dect), >= (mai mare sau egal
dect), LIKE (permite selectarea potrivirilor pariale cu ajutorul operatorului %; de
exemplu: select city, state from towntable where state LIKE 'north%');
Alte cuvinte cheie: ALL - Toate articolele; DISTINCT - Numai articolele unice,
fr duplicate.
SHOW DATABASES;
USE numele_bazei_de_date
SHOW TABLES;
SHOW COLUMNS;
CREATE DATABASE numele_bazei;
CREATE TABLE tabel_unu (camp_a
TEXT);
CREATE TABLE tabel_unu (camp_a
TEXT, camp_b INT, camp_c TINYINT);
campul2
campul3
valoarea1
valoarea2
valoarea3
campul2
valoarea1
valoarea2
campul3
Pentru
crearea
tabelului
Produse
inregistrare inca 3.
afiseaza incepand de la inregistrarea 10
inca 5 inregistrari din tabel
sterge inregistrarea din tabel. Sintaxa este
la fel ca la comanda SELECT.
pentru actuaizarea continutului unei
inregistrari din tabel. Sintaxa este la fel ca
la comanda SELECT.
adaugare la tabelul existent a unei coloane
numita 'dat' de tip text.
redenumeste coloana numita 'dat' cu
numele 'data'
modifica tipul coloanei 'data' din 'TEXT' in
coloana de tip 'DATE'
adauga o coloana numita 'nr' dupa
'coloana1' in tabelul 'tabel'
am
uitilizat
urmatoarea
comanda:
3.3. Indexul
INDECSI - Cel mai folosit tip de index este id-ul. Id-ul este un numar unic de
identificare pentru un element distinct (un rand) 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. La 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 (de exemplu la
vizualizarea ultimilor 10 vizitatori folositi id-ul - vezi sectiunea de monitorizare a
traficului de pe acest site).
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 id_casete - comanda este urmatoarea:
ALTER TABLE `caseta` ADD `id_caseta` INT;
ALTER TABLE `caseta` CHANGE `id_caseta` `id_caseta` INT(11) UNSIGNED NOT
NULL;
ALTER TABLE `caseta` ADD PRIMARY KEY (id_caseta);
4. Problematica proiectului
Farmacie este locul unde se prepar i se vnd medicamente conform re etelor
medicale i normelor din farmacologie. Farmacistul are printre altele datoria de a explica
cumprtorului i efectele secundare nedorite ale medicamentului, ca i despre fenomenul
de potenare a dou preparate farmocologice.
Farmaciile cu circuit nchis vor asigura medicamente pentru bolnavii internai n
uniti sanitare, pentru serviciul de ambulan i pentru ambulatoriu n cadrul
programelor naionale de sntate, potrivit unui proiect al Ministerului Sntii.
o linie dubl indic o limitare de participare, relaie total sau funcie surjectiv:
toate entitile din acel set de entiti trebuie s participe la cel puin o relaie din
setul de relaii;
o sgeat dinspre setul de entiti ctre setul de relaii indic o limitare tip cheie
unic, adic o relaie injectiv: fiecare entitate din setul de entiti poate participa
n cel puin o relaie din setul de relaii;
o linie groas indic ambele relaii, adic bijectivitate: fiecare entitate din setul de
entiti este implicat n exact o relaie.
un nume subliniat a unui atribut indic faptul c acel atribut este cheie unic: dou
entiti sau relaii 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 tehnici de diagram, atributele entitilor se reprezint adesea n dreptunghiurile
pentru seturi de entitate.
Diagrama UML
Medicamentele vandute sunt scazute din stocul total si nu mai sunt puse la
socoteala in momentul efectuarii unei verificari de stoc. Retetele 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 .
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 inchidere nu va afecta in nici un fel starea programului si nici
nu va schimba pagina de start.
Pagina Vanzari
Pagina NIR
Un caz de utilizare contine toate evenimentele care pot surveni in cadrul perechii
actor - caz de utilizare, nu neaparat unul ce va apare in orice scenariu particular.
O 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.
Att timp ce actorii reprezinta utilizatorii, ei ajuta la construirea unei imagini clare a ceea
ce se asteapta a se ntmpla n sistem. Cazurile de utilizare sunt construite pe baza
nevoilor pe care le au actorii (utilizatorii). Aceasta asigura faptul ca sistemul va produce
ceea ce s-a dorit.
Element
Actori
Caz de utilizare
(Use-Case)
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. Numele 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
Notatie
Cu ajutorul activity diagram pot fi modelate foarte bine use case-urile, dar, n
aceeai msur, aceste diagrame pot fi folosite pentru modelarea proceselor de
business (fr legtur cu sistemul informatic).
Notatiile sunt foarte asemntoare cu cele din diagrama de stare deoarece activity
diagram nu sunt altceva dect o variaie a statechart diagram.
Clase
Modeleaz vocabularul = identific conceptele pe care clientul sau programatorul le
folosete pentru a descrie soluia problemei
Pot fi:
- Abstracii care fac parte din domeniul problemei
- Clase necesare la momentul implementrii
Obiect
Reprezint o instan a unei clase
Are identitate i valori ale atributelor
Legaturi
ntre clase
- A. Generalizare
- B. Dependen
- C. Realizare
ntre instane ale claselor
- D. Asociere
- E. Agregare
VALIDARI
6. Concluzii
6.1. Consideratii personale
Am creeat aceasta aplicatie gandindu-ma ca de multe ori am fost la farmacie
iar softul acestora sa blocat, sau a trebui sa stau la coada deoarece
asistentul/farmacistul nu se descurca asa de bine cu soft-ul ales de Firma.
Tind sa cred ca aplicatia mea are o interfata prietenoasa, cu care orice
persoana se poate descurca dupa putine explicatii. Aplicatia contine Validari ce
ajuta la eliminarea partiala a erorilor umane si este destul de precisa. Utilizatorul isi
poate indeplini sarcinile cu o mult mai multa simplitate avand in vedere ca
programul se ocupa de efectuarea facturilor in baza bonului si a persoanei
beneficiare, stocheaza datele pentru o buna 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.
6.2.Bibliografie
1.http://www.unixinside.org/papers/C++-Book/cap10.html
2.www.scritub.com
3.http://en.wikipedia.org/wiki/Windows_Workflow_Foundation
4.http://stackoverflow.com/questions/10133946/datagridview-does-not-refresh-afterdataset-update-vb-net
5.http://www.c-sharpcorner.com/Forums/Thread/212884/visual-studio-2012-wpfdatagrid-slow-in-refresh.aspx
6.http://office.microsoft.com/en-us/access-help/enforce-referential-integritybetween-tables-adp-HP003084014.aspx
7.www.bazededate.org/ModelulUnificat.pdf
8.http://office.microsoft.com/ro-ro/access-help/despre-proiectarea-unei-baze-de-dateHP005189136.aspx
9.http://www.w3schools.com/sql/sql_datatypes.asp
10.http://ro.wikipedia.org/wiki/SQL
11.http://office.microsoft.com/en-001/access-help/access-sql-basic-concepts-vocabulary-andsyntax-HA010256402.aspx
12.http://www.rasfoiesc.com/educatie/informatica/Notiuni-de-baza-Visual-Basic47.php
13.http://lifehacker.com/5791578/what-is-the-net-framework-and-why-do-i-need-it
14.http://biblioteca.regielive.ro/cursuri/electronica/tehnologia-net-270908.html
15.http://www.bigresource.com/VB-Search-Button-Code-tTtQpYQrZu.html
16.Baze de date si utilizarea acestora Adriana Olteanu, Magdalena Anghel, Radu Nicolae
Pietraru , 2005
7. Anexa
Formul Adaugare_produs
Imports System.Data.OleDb
Public Class Adauga_produs
Dim con As New OleDbConnection
Dim cmd As New OleDbCommand
Private Sub Adauga_produs_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'FarmacieDataSet.Produse' table. You can move,
or remove it, as needed.
Me.ProduseTableAdapter.Fill(Me.FarmacieDataSet.Produse)
End Sub
Private Sub goleste_campuri()
Txtnume.Text = ""
Txtlot.Text = ""
Txtcantitate.Text = ""
Txtdataf.Text = ""
Txtdatae.Text = ""
Txtproducator.Text = ""
Txtpret.Text = ""
Txtptva.Text = ""
Txttva.Text = ""
End Sub
Private Sub adauga_inregistrare()
Dim listaCampuri As String
Dim listaValori As String
con.ConnectionString = ProduseTableAdapter.Connection.ConnectionString
cmd.Connection = con
listaCampuri = "Nume_produs, Numar_lot, Data_fabricarii, Data_expirarii, Producator,
Cantitate, Pret, TVA, Pret_cu_TVA"
listaValori = "'" & Txtnume.Text & "','" & Txtlot.Text & "','" & Txtdataf.Text & "','" &
Txtdatae.Text & "','" & Txtproducator.Text & "','" & Txtcantitate.Text & "','" & Txtpret.Text & "','" &
Txttva.Text & "','" & Txtptva.Text & "'"
cmd.CommandText = "Insert into Produse(" & listaCampuri & ") " & "Select " & listaValori
MsgBox(cmd.CommandText)
con.Open()
cmd.ExecuteNonQuery()
con.Close()
End Sub
Private Sub refresh_grid(ByVal p As Integer)
ProduseTableAdapter.Fill(FarmacieDataSet.Produse)
ProduseBindingSource.Position = p
End Sub
Txtlot.ReadOnly = False
Txtcantitate.ReadOnly = False
Txtdataf.ReadOnly = False
Txtdatae.ReadOnly = False
Txtproducator.ReadOnly = False
Txtpret.ReadOnly = False
Txtptva.ReadOnly = False
Txttva.ReadOnly = False
'Protectie componente
DataGridView1.AllowUserToAddRows = True
DataGridView1.AllowUserToDeleteRows = True
DataGridView1.ReadOnly = True
Txtnume.ReadOnly = True
Txtnume.ReadOnly = True
Txtlot.ReadOnly = True
Txtcantitate.ReadOnly = True
Txtdataf.ReadOnly = True
Txtdatae.ReadOnly = True
Txtproducator.ReadOnly = True
Txtpret.ReadOnly = True
Txtptva.ReadOnly = True
Txttva.ReadOnly = True
'Legare controale
Txtnume.DataBindings.Add("", ProduseBindingSource, "Nume_produs")
Txtlot.DataBindings.Add("", ProduseBindingSource, "Numar_lot")
Txtcantitate.DataBindings.Add("", ProduseBindingSource, "Cantitate")
Txtdataf.DataBindings.Add("", ProduseBindingSource, "Data_fabricarii")
Txtdatae.DataBindings.Add("", ProduseBindingSource, "Data_expirarii")
Txtproducator.DataBindings.Add("", ProduseBindingSource, "Producator")
Txtpret.DataBindings.Add("", ProduseBindingSource, "Pret")
Txtptva.DataBindings.Add("", ProduseBindingSource, "Pret_cu_TVA")
Txttva.DataBindings.Add("", ProduseBindingSource, "TVA")
End Sub
Private Sub Btninapoi_Click(sender As Object, e As EventArgs) Handles Btninapoi.Click
Me.Close()
End Sub
Private Sub Btnstergere_Click(sender As Object, e As EventArgs) Handles Btnstergere.Click
Dim rdr As OleDbDataReader
Dim p As Long
cmd.ExecuteNonQuery()
con.Close()
'Salvare pozitie produs crt
p = ProduseBindingSource.Position
'Refresh grid
Me.ProduseTableAdapter.Fill(Me.FarmacieDataSet.Produse)
'Refacere pozitie
ProduseBindingSource.Position = p
End Sub
Private Sub Btnrefresh_Click(sender As Object, e As EventArgs) Handles Btnrefresh.Click
Me.ProduseTableAdapter.Fill(Me.FarmacieDataSet.Produse)
End Sub
End Class
Formul Vanzari
Imports System.Data.OleDb
Public Class Vanzari
Public ID As Long
Dim con As New OleDbConnection
Dim cmd As New OleDbCommand
Dim rdr As OleDbDataReader
Private Sub Btninapoi_Click(sender As Object, e As EventArgs) Handles Btninapoi.Click
Me.Close()
End Sub
Private Sub Vanzari_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'FarmacieDataSet.Tip_Pacienti' table. You can
move, or remove it, as needed.
Me.Tip_PacientiTableAdapter.Fill(Me.FarmacieDataSet.Tip_Pacienti)
'TODO: This line of code loads data into the 'FarmacieDataSet.Produse' table. You can move,
or remove it, as needed.
Me.ProduseTableAdapter.Fill(Me.FarmacieDataSet.Produse)
'TODO: This line of code loads data into the 'FarmacieDataSet.Vanzari' table. You can move,
or remove it, as needed.
Me.VanzariTableAdapter.Fill(Me.FarmacieDataSet.Vanzari)
'TODO: This line of code loads data into the 'FarmacieDataSet.Producatori' table. You can
move, or remove it, as needed.
Me.ProduseTableAdapter.Fill(Me.FarmacieDataSet.Produse)
End Sub
Private Sub completeazaDateVanzare()
Try
VanzariBindingSource.Current("Produs") = ProduseBindingSource.Current("Nume_produs")
VanzariBindingSource.Current("Pret") = ProduseBindingSource.Current("Pret_cu_TVA")
VanzariBindingSource.Current("Pacient") =
PacientiBindingSource.Current("Nume_pacient")
VanzariBindingSource.Current("Cod retera") = PacientiBindingSource.Current("Reteta")
VanzariBindingSource.Current("Medic") =
PacientiBindingSource.Current("Medic_supraveghetor")
VanzariBindingSource.Current("ID") = ProduseBindingSource.Current("ID")
calcValori()
DataGridView1.Refresh()
Catch ex As Exception
End Try
End Sub
Private Sub calcValori()
Dim v As Decimal
Dim tva As Decimal
Dim c As Decimal
Dim p As Decimal
Dim vtva As Decimal
Dim i As ULong
i = VanzariBindingSource.Position
If IsDBNull(VanzariBindingSource.Current("Pret")) Then Exit Sub
If IsDBNull(VanzariBindingSource.Current("Cantitate")) Then Exit Sub
c = VanzariBindingSource.Current("Cantitate")
p = VanzariBindingSource.Current("PretVanzare")
vtva = ProduseBindingSource.Current("TVA")
v=c*p
vtva = v * tva / 100
VanzariBindingSource.Current("Pret") = v
ProduseBindingSource.Current("TVA") = tva
DataGridView1.Refresh()
End Sub
Private Sub calcTotal()
Dim s1 As Decimal
Dim s2 As Decimal
For Each rec In VanzariBindingSource
If Not IsDBNull(rec("Pret")) Then s1 = s1 + rec("Pret")
If Not IsDBNull(rec("TVA")) Then s2 = s2 + rec("TVA")
Next
txtTotalValoare.Text = s1
txtValoareTVA.Text = s2
TxtTotalComanda.Text = s1 + s2
End Sub
Private Sub CalcNr()
cmd.CommandText = "Select Max(ID) as MaxNr from Vanzari"
con.Open()
rdr = cmd.ExecuteReader
rdr.Read()
If IsDBNull(rdr("MaxNr")) Then
Txtbon.Text = 1
Else
Txtbon.Text = rdr("MaxNr") + 1
End If
rdr.Close()
con.Close()
End Sub
Private Sub adaugaComanda()
Dim d As Date
Dim usdate As String
Dim id As ULong
Dim rec As DataRow
d = dpData.Value
usdate = d.Month & "/" & d.Day & "/" & d.Year
cmd.CommandText = "Insert into Vanzari(ID, Data, Tip_pacient) " & _
"Select " & TxtID.Text & ",#" & usdate & "#," & Cmbtip.SelectedValue
con.Open()
cmd.ExecuteNonQuery()
'Determin idComanda
cmd.CommandText = "Select ID from Vanzari where NrComanda = " & TxtID.Text & _
" and Data = #" & usdate & "# and Tip_pacient=" & Cmbtip.SelectedValue
rdr = cmd.ExecuteReader()
rdr.Read()
id = rdr("ID")
rdr.Close()
For Each rec In FarmacieDataSet.Vanzari
cmd.CommandText = "Insert into Vanzari(ID, Medic, Pacient, Cod reteta, Tip_pacient,
Produs, Cantitate, Pret, Pret_cu_TVA) Select " & _
id & "," & rec("Medic") & "," & rec("ID") & "," & rec("Pret") & "," &
rec("Cantitate") & _
"," & rec("Pret_cu_TVA")
cmd.ExecuteNonQuery()
Next
con.Close()
End Sub
Private Sub initCampuri()
Dim n As ULong
Dim i As ULong
CalcNr()
Cmbtip.SelectedIndex = -1
n = FarmacieDataSet.Vanzari.Count
For i = 1 To n
FarmacieDataSet.Vanzari(0).Delete()
Next
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles MyBase.Load
PacientiTableAdapter.Connection.ConnectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ds
ProduseTableAdapter.Connection.ConnectionString =
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ds
con.ConnectionString = PacientiTableAdapter.Connection.ConnectionString
cmd.Connection = con
Me.PacientiTableAdapter.Fill(Me.FarmacieDataSet.Pacienti)
Me.ProduseTableAdapter.Fill(Me.FarmacieDataSet.Produse)
If ID = 0 Then
CalcNr()
Else
CompleteazaDateComanda()
End If
End Sub
Private Sub CompleteazaDateComanda()
Dim pacient As Long
Dim dc As Date
Dim rec As DataRow
cmd.CommandText = "Select * from Vanzari where ID = " & TxtID.Text
con.Open()
rdr = cmd.ExecuteReader
rdr.Read()
dc = rdr("DataComanda")
dpData.Value = dc
pacient = rdr("Pacient")
Cmbtip.SelectedValue = pacient
rdr.Close()
cmd.CommandText = "SELECT Vanzari.ID," & _
"Vanzari.Pret,Vanzari.Cantitate, " & _
"Vanzari.TVA, Produse.Nume_produs, " & _
"Vanzari.ID " & _
"FROM ((Vanzari LEFT OUTER JOIN " & _
"Produse ON Vanzari.ID = Produse.IdProdus) " & _
"WHERE(Vanzari.ID = " & ID &
") ORDER BY Vanzari.ID"
rdr = cmd.ExecuteReader
While rdr.Read
rec = FarmacieDataSet.Vanzari.NewRow
rec("ID") = rdr("ID")
rec("Produs") = rdr("Nume_produs")
rec("Pret") = rdr("Pret_cu_TVA")
rec("Cantitate") = rdr("Cantitate")
rec("IdProdus") = rdr("IdProdus")
rec("CotaTVA") = rdr("CotaTVA")
rec("Pret") = rec("Pret_cu_TVA") * rec("Cantitate")
rec("TVA") = rec("Pret") * rec("TVA") / 100
FarmacieDataSet.Vanzari.AddVanzariRow(rec)
End While
rdr.Close()
con.Close()
calcTotal()
End Sub
Private Sub ProduseBindingSource_CurrentChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles ProduseBindingSource.CurrentChanged
completeazaDateVanzare()
'Me.DataGridView1.CurrentCell = Me.DataGridView1(2, 0)
End Sub
Private Sub DataGridView1_CellEndEdit(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEndEdit
calcValori()
End Sub
Private Sub DataGridView1_CellMouseClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles
DataGridView1.CellMouseClick
If DataGridView1.CurrentCell.ColumnIndex <> 1 Then Exit Sub
End Sub
Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError
MsgBox(e.Exception.Message)
End Sub
Private Sub VanzariBindingSource_CurrentChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles VanzariBindingSource.CurrentChanged
Try
VanzariBindingSource.Current("Nrc") = VanzariBindingSource.Position + 1
calcTotal()
Catch ex As Exception
End Try
End Sub
Private Sub TxtTotalComanda_MouseClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles TxtTotalComanda.MouseClick
calcTotal()
End Sub
Private Sub txtTotalValoare_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Handles txtTotalValoare.Click
calcTotal()
End Sub
Private Sub txtValoareTVA_MouseClick(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles txtValoareTVA.MouseClick
calcTotal()
End Sub
con.Close()
End Sub
Private Sub Btnbonnou_Click(sender As Object, e As EventArgs) Handles Btnbonnou.Click
Bon.Show()
End Sub
Private Sub Btnconfirmare_Click_1(sender As Object, e As EventArgs) Handles
Btnconfirmare.Click
CompleteazaDateComanda()
adaugaComanda()
End Sub
End Class