L APPLICATION DES VRP EN MVC LE FORMULAIRE LE CODE DU FORMULAIRE Imports System.Collections Public Class frm_vrp ' on declare le tableau des vrp Private letableauvrp As List(Of VRP) Private Sub frm_vrp_load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load ' instanciation du tableau des vrp letableauvrp = New List(Of VRP) 'charger les vrp depuis le base de données letableauvrp = controleur.liretouslesvrp() ' calculer les salaires letableauvrp = controleur.calculertouslessalaires(letableauvrp) 'transférer les données des vrp dans la datagridview For i = 0 To letableauvrp.count - 1 dgv_vrp.rows.add() dgv_vrp.item(0, i).value = letableauvrp(i).gsnumero() dgv_vrp.item(1, i).value = letableauvrp(i).gsnom() dgv_vrp.item(2, i).value = letableauvrp(i).gsanciennete dgv_vrp.item(3, i).value = letableauvrp(i).gsca dgv_vrp.item(4, i).value = letableauvrp(i).gscontrat dgv_vrp.item(5, i).value = letableauvrp(i).gssalaire Next 'interdire d'ajouter des lignes dgv_vrp.allowusertoaddrows.equals(false) 1
Private Sub btn_mettreajour_click(sender As System.Object, e As System.EventArgs) Handles btn_mettreajour.click 'appeler la mise à jour dans la base de données controleur.modifiersalairedesvrp(letableauvrp) Private Sub btn_supprimer_click(sender As System.Object, e As System.EventArgs) Handles btn_supprimer.click End Class 'appeler la suppression d'un vrp controleur.supprimervrp(dgv_vrp.selectedrows.item(0).cells(0).value) 'supprimer la ligne dans la datagridview dgv_vrp.rows.remove(dgv_vrp.selectedrows.item(0)) LE CODE DU CONTROLEUR Public Class controleur 'classe statique, il est inutile de l'instancier 'on a besoin d'un vrp et d'un tabeau de vrp Shared levrp As New VRP Shared letableauvrp As List(Of VRP) = New List(Of VRP) Shared Function liretouslesvrp() As List(Of VRP) 'Récupération du tableau des VRP depuis la base de données levrp.chargertableau() letableauvrp = levrp.gettableauvrp() 'retour du tableau des vrp Return letableauvrp Shared Function calculertouslessalaires(letableauvrp As List(Of VRP)) As List(Of VRP) 'calculer le salaire des vrp levrp.calculersalaire(letableauvrp) letableauvrp = levrp.gettableauvrp() 'retour du tableau des vrp Return letableauvrp Shared Sub modifiersalairedesvrp(letableauvrp As List(Of VRP)) 'modifier les salaires des vrp dans la base levrp.mettreajourbase(letableauvrp) Shared Sub supprimervrp(byval numero As Integer) 'mettre à jour le numero dans l'objet vrp levrp.gsnumero() = numero 'appeler la suppression d'un vrp levrp.supprimervrp(levrp) 2
End Class LE CODE DE LA CLASSE VRP Imports System.Data Imports System.Data.SqlClient Imports System.Data.Sql Public Class VRP ' propriétés du VRP Private numero As Integer Private nom As String Private anciennete As Integer Private ca As Integer Private contrat As Integer Private salaire As Integer 'tableau des VRP de type VRP donc contenant un numéro, un nom, un ca, un nombre de contrat, un salaire 'qu'on appellera par tableauvrp(i).gssalaire par exemple Private tableauvrp As New List(Of VRP) ' propriétés nécessaires pour l'accès à la base de données Private connexion As SqlConnection Private macommande As SqlCommand Private monreader As SqlDataReader Private requete As String 'les constructeurs 'celui-ci n'initialise aucune propriété Public Sub New() Me.nom = "" Me.anciennete = 0 Me.ca = 0 Me.contrat = 0 Me.salaire = 0 'celui-ci initialise juste le numéro Public Sub New(numero As Integer) Me.numero = numero Me.nom = "" Me.anciennete = 0 Me.ca = 0 Me.contrat = 0 Me.salaire = 0 'celui-ci initialise toutes les propriétés sauf le tableau des vrp Public Sub New(numero As Integer, nom As String, anciennete As Integer, ca As Integer, contrat As Integer, salaire As Integer) Me.numero = numero Me.nom = nom Me.anciennete = anciennete 3
Me.ca = ca Me.contrat = contrat Me.salaire = salaire 'les getteurs et les setteurs qui permettent d'initialiser ou de récupérer les propriétés du vrp Public Property gsnumero() As Integer Return numero numero = value Public Property gsnom() As String Return nom Set(ByVal value As String) nom = value Public Property gsanciennete() As Integer Return anciennete anciennete = value Public Property gsca() As Integer Return ca ca = value Public Property gscontrat() As Integer Return contrat contrat = value Public Property gssalaire() As Integer Return salaire salaire = value 4
'ici en retourne le tableau des vrp Public Function gettableauvrp() As List(Of VRP) Return Me.tableauVrp Public Sub calculersalaire(tableauvrp As List(Of VRP)) Const fixe = 2000 For i = 0 To TableauVrp.Count - 1 TableauVrp(i).salaire = fixe 'prime anciennete If TableauVrp(i).anciennete > 3 Then TableauVrp(i).anciennete = 200 + TableauVrp(i).salaire 'prime de contrat If TableauVrp(i).ca > 22000 And TableauVrp(i).contrat > 15 Then TableauVrp(i).salaire = TableauVrp(i).salaire + TableauVrp(i).ca / TableauVrp(i).contrat * 1.08 ' prime de CA If TableauVrp(i).ca > 31000 Or TableauVrp(i).contrat > 10 Then TableauVrp(i).salaire = TableauVrp(i).salaire + 300 Next Public Sub chargertableau() requete = "SELECT * FROM VRP ;" 'instanciation de la connexion connexion = New SqlConnection() 'instanciation de la commande sql pour préparer son exécution macommande = New SqlCommand(requete, connexion) 'ouvrir une connection a la base de données VRP If seconnecteralabasededonnees(connexion) Then 'executer la commande SQL monreader = macommande.executereader 'enregistrer le résultats dans la liste des VRP Do While monreader.read 'on instancie l'objet Vrp et on utilise les données de la base comme paramètres dans le constructeur surchargé Dim levrp As New VRP(monReader("numero"), monreader("nom"), monreader("anciennete"), monreader("ca"), monreader("contrat"), 0) 'on ajoute un ligne et donc un vrp dans le tableau (liste) des vrp tableauvrp.add(levrp) Loop 'fermer le lecteur monreader.close() 'fermer la connexion connexion.close() Public Sub mettreajourbase(tableauvrp As List(Of VRP)) 5
requete = "" 'instanciation de la connexion à la base connexion = New SqlConnection() 'instanciation de la commande sql pour préparer son exécution macommande = New SqlCommand(requete, connexion) 'connexion à la base de données If seconnecteralabasededonnees(connexion) Then 'pour chaque ligne du tableau (liste) des vrp donc pour chaque vrp For i = 0 To tableauvrp.count - 1 'préparer la requète requete = "UPDATE VRP SET Salaire = " & Convert.ToString(tableauVrp(i).salaire) requete = requete & " WHERE numero = " & Convert.ToString(tableauVrp(i).numero) & ";" Next 'affecter la requete à la propriété commandtext de la commande sql macommande.commandtext = requete 'executer la commande SQL macommande.executenonquery() 'fermer la connexion connexion.close() Private Function seconnecteralabasededonnees(connexion As SqlConnection) As Boolean 'définition de la chaine de connexion connexion.connectionstring = "Data Source=localhost;Initial Catalog=VRP;Persist Security Info=false;User ID=sa;Password=root" 'ouverture de la connexion connexion.open() 'retour de l'état de la connexion If (connexion.state = ConnectionState.Open) Then Return True Else Return False Public Sub supprimervrp(levrp As VRP) requete = "Delete from VRP where numero = " 'instanciation de la connexion connexion = New SqlConnection() 'instanciation de la commande Sql macommande = New SqlCommand(requete, connexion) 6
'connexion à la base de données If seconnecteralabasededonnees(connexion) Then End Class 'on finit la requete en récupérant le numero de VRP requete = requete & Convert.ToString(leVrp.numero) & ";" 'on met la requete dans la commande SQL macommande.commandtext = requete 'on execute la commande Sql macommande.executenonquery() 'on ferme la connexion connexion.close() 7