Bonjour amis développeurs !

Si je viens vous embêter un peu en cette magnifique journée (ça change !) c'est parce que j'ai un petit soucis avec le chargement d'une ListView en VB.NET

Avant de rentrer dans le détail du code, j'explique le contexte

- Je souhaite l'ajout d'un évènement(repas) sur une fiche client
- Il existe 3 types de repas : Petit déjeuner, déjeuner, dîner
- Il existe des tarifs différents selon les tranches d'âges :
  • 2/3 ans : 6.40 euros
  • 4/10 ans : 9.70 euros
  • 11/14 ans : 12.90 euros
  • Adulte : 16.10 euros



- Lorsqu'on ajoute un évènement, une méthode est appelée pour charger la ListView et permettre un rappel des différents évènements liés à la fiche clients.

Et c'est là qu'intervient mon soucis, lorsque j'ajoute un évènement il ne m'affiche pas les bonnes données. Je m'explique.
La première insertion dans la BDD marche et l'affichage aussi, mais lorsque j'ajoute un 2nd évènement à la fiche, l'insertion dans la BDD marche, mais l'évènement affiché reste le même que le 1er


Hors, dans la BDD, le second insert a marché


Et voici mon code, si quelqu'un pouvait pointer du doigt l'erreur ou les erreurs que j'ai commis, je lui en serais très reconnaissant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
 
Private Sub ChargementLV()
   ' Initialisation des variables
   coutRepas23 = 6.4
   coutRepas410 = 9.7
   coutRepas1114 = 12.9
   coutRepasAdulte = 16.1
   sousTot = 0
   nbrRepas = 0
   strPDJ = "Petit déjeuner"
   strDJ = "Déjeuner"
   strDN = "Dîner"
 
   ' Déclaration du DataReader + Requête SELECT
        Dim drChargementLV As SqlServerCe.SqlCeDataReader '                 0                       1                       2                        3                      4                        5                          6                          7                           8                        9                                   10                                  11                                  12                                  13                          14                              15                      16                                                                                                   
        drChargementLV = BarowSoft.BddManager.SelectSQL("SELECT Fiche.nom_client_fiche, Fiche.numero_logement_fiche, Fiche.solde_clos_fiche, Fiche.id_utilisateur, Fiche.date_fiche, Fiche.montant_solde_fiche, Lier.evenement_payer_lier, Evenement.libelle_evenement, Evenement.cout_evenement, Evenement.nombre_2_3_ans_evenement, Evenement.nombre_4_10_ans_evenement, Evenement.nombre_11_14_ans_evenement, Evenement.nombre_adulte_evenement, Evenement.nombre_evenement, Evenement.nom_client_evenement, Evenement.date_evenement, Evenement.date_repas_evenement FROM Fiche INNER JOIN Lier ON Fiche.id_fiche = Lier.id_fiche INNER JOIN Evenement ON Lier.id_evenement = Evenement.id_evenement WHERE (Fiche.numero_logement_fiche = " & nudNumLogementCreerFiche.Value & " AND Evenement.nom_client_evenement = '" & tbNomCreerFiche.Text & "')")
        lvEvtCreerFiche.Items.Clear()
 
   ' Insertion des objets dans la ListView
     Do While drChargementLV.Read ' Tant qu'il y'a des résultats dans le SELECT
         Dim objLVI As New ListViewItem  ' On déclare l'Evenement.
         ' On lui passe les valeurs
         objLVI.Text = drChargementLV.GetValue(15) ' DATE événement
         ' On regarde maintenant Si
         If drChargementLV.GetValue(7) = strPDJ Then ' C'est un événement PDJ
             ' GESTION des ENFANTS/ADULTES
             If drChargementLV.GetValue(9) <> 0 Or drChargementLV.GetValue(10) <> 0 Or drChargementLV.GetValue(11) <> 0 Or drChargementLV.GetValue(12) <> 0 Then ' Si il y'a des clients
                 objLVI.SubItems.Add("Petit déjeuner") ' Nom de l'évenement
                 nbrRepas = drChargementLV.GetValue(9) + drChargementLV.GetValue(10) + drChargementLV.GetValue(11) + drChargementLV.GetValue(12) ' 2/3 ans + 4/10 ans + 11/14 + Adultes = nombre de PDJ
                 objLVI.SubItems.Add(nbrRepas)
                 objLVI.SubItems.Add("X")
                 sousTot = (drChargementLV.GetValue(9) * coutRepas23) + (drChargementLV.GetValue(10) * coutRepas410) + (drChargementLV.GetValue(11) * coutRepas1114) + (drChargementLV.GetValue(12) * coutRepasAdulte)
                 objLVI.SubItems.Add(sousTot)
                 objLVI.SubItems.Add(drChargementLV.GetValue(6))
             End If
         ElseIf drChargementLV.GetValue(7) = strDJ Then ' C'est un événement DJ
             If drChargementLV.GetValue(9) <> 0 Or drChargementLV.GetValue(10) <> 0 Or drChargementLV.GetValue(11) <> 0 Or drChargementLV.GetValue(12) <> 0 Then ' Si nombre 2/3 ans est != 0 ALORS
                 objLVI.SubItems.Add("Dejeuner") ' Nom de l'évenement
                 nbrRepas = drChargementLV.GetValue(9) + drChargementLV.GetValue(10) + drChargementLV.GetValue(11) + drChargementLV.GetValue(12) ' 2/3 ans + 4/10 ans + 11/14 + Adultes = nombre de DJ
                 objLVI.SubItems.Add(nbrRepas)
                 objLVI.SubItems.Add("X")
                 sousTot = (drChargementLV.GetValue(9) * coutRepas23) + (drChargementLV.GetValue(10) * coutRepas410) + (drChargementLV.GetValue(11) * coutRepas1114) + (drChargementLV.GetValue(12) * coutRepasAdulte)
                 objLVI.SubItems.Add(sousTot)
                 objLVI.SubItems.Add(drChargementLV.GetValue(6))
             End If
         ElseIf drChargementLV.GetValue(7) = strDN Then ' C'est un événement DN
             If drChargementLV.GetValue(9) <> 0 Or drChargementLV.GetValue(10) <> 0 Or drChargementLV.GetValue(11) <> 0 Or drChargementLV.GetValue(12) <> 0 Then ' Si nombre 2/3 ans est != 0 ALORS
                 objLVI.SubItems.Add("Dîner") ' Nom de l'évenement
                 nbrRepas = drChargementLV.GetValue(9) + drChargementLV.GetValue(10) + drChargementLV.GetValue(11) + drChargementLV.GetValue(12) ' 2/3 ans + 4/10 ans + 11/14 + Adultes = nombre de PDJ
                 objLVI.SubItems.Add(nbrRepas)
                 objLVI.SubItems.Add("X")
                 sousTot = (drChargementLV.GetValue(9) * coutRepas23) + (drChargementLV.GetValue(10) * coutRepas410) + (drChargementLV.GetValue(11) * coutRepas1114) + (drChargementLV.GetValue(12) * coutRepasAdulte)
                 objLVI.SubItems.Add(sousTot)
                 objLVI.SubItems.Add(drChargementLV.GetValue(6))
             End If
         Else ' C'est un événement réception
             objLVI.SubItems.Add(drChargementLV.GetValue(7))     ' On récupère le libellé de l'événement
             objLVI.SubItems.Add(drChargementLV.GetValue(13))     ' "     "     le nombre
             If IsDBNull(drChargementLV.GetValue(8)) Then        ' On vérifie que l'événement est de type prêt ou payant
                 objLVI.SubItems.Add("Prêt")
                 objLVI.SubItems.Add("Prêt")
                 objLVI.SubItems.Add("Prêt")
             Else
                 objLVI.SubItems.Add(drChargementLV.GetValue(8)) ' On récupère le Prix unitaire
                 sousTot = drChargementLV.GetValue(13) * drChargementLV.GetValue(8) ' On calcul le Sous total : "Nombre * Prix Unitaire = sousTot"
                 objLVI.SubItems.Add(sousTot)
                 objLVI.SubItems.Add(drChargementLV.GetValue(6)) ' On affiche si ça a été payé ou non
             End If
         End If
         ' Puis on l'ajoute à la ListeView
         lvEvtCreerFiche.Items.Add(objLVI)
         objLVI = Nothing
     Loop
     drChargementLV = Nothing
    End Sub
Merci de m'aider