Listview

amigna Messages postés 53 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 18 août 2008 - 17 nov. 2007 à 14:26
amigna Messages postés 53 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 18 août 2008 - 17 nov. 2007 à 15:09
Bonjour

J'ai un probléme pour faire une opération sur un listview ;
Quand je selectionne sur le listview un élément pour faire une soustraction par l'intermédiaire d'une inputbox  il fait la soustraction sur tous les éléments qui ont le méme clef  je vous demande comment corriger le probléme.  
par exemple: 
Code  libellés Quantités Prix  
M001  Amox    10         1000
M001  Amox    20         1000 
M002   Toxine   30        2000
M003   Yox       50        3500 

si je fais la soustraction sur l'élément sélectionné il fait la soustraction deux fois il le fais sur l'élément sélectionné et sur tous les éléments qui ont une clef identique.

par exemple je veux soustraire 5 sur la quantité M001 sélectionnée le probléme il fait la soustraction en méme temps sur M001 qui n'est pas sélectionné .
Voila le resultat ce qui n'est pas normal.
Code  libellés Quantités Prix  
M001  Amox    5        1000
M001  Amox    15         1000 
M002   Toxine   30        2000
M003   Yox       50        3500 

Voiçi le code pour le bouton add et valider

*Private Sub add_Click()
Dim qt As String
Lv.SelectedItem.ForeColor = &HFF&
qt = InputBox("Donner la quantité du médicament")
If qt = "" Then
Else
If Not IsNumeric(qt) Then
MsgBox "La quantité doit numérique !!!", vbExclamation, "Information"
add_Click
ElseIf CInt(qt) > Lv.SelectedItem.SubItems(2) Then
MsgBox "La quantité inférieure à la quantité existante !!!", vbExclamation, "Information"
add_Click
Else
If exist(CStr(Lv.SelectedItem.Text), Lv1) = True Then
If (MsgBox("Ce médicament existe. Voulez vous ajouter cette quantité ?", _
         vbYesNoCancel + vbQuestion, "Ajout") = vbYes) Then
Lv.SelectedItem.SubItems(2) = Lv.SelectedItem.SubItems(2) - CInt(qt)
For i = 1 To Lv1.ListItems.Count
If Lv.SelectedItem.Text = Lv1.ListItems.Item(i).Text Then
Lv1.ListItems.Item(i).SubItems(2) = CInt(Lv1.ListItems.Item(i).SubItems(2)) + CInt(qt)
Exit For
End If
Next i
Montant.Text = CDbl(Montant.Text) + CDbl(Lv.SelectedItem.SubItems(3)) * CInt(qt)
Lv.SelectedItem.ForeColor = &H0&
End If
Else
Lv.SelectedItem.SubItems(2) = Lv.SelectedItem.SubItems(2) - CInt(qt)
Set Li = Lv1.ListItems.add(, , Lv.SelectedItem.Text)
With Li
   .SubItems(1) = (Lv.SelectedItem.SubItems(1))
   .SubItems(2) = (qt)
   .SubItems(3) = (Lv.SelectedItem.SubItems(3))
End With
Montant.Text = CDbl(Montant.Text) + CDbl(Lv.SelectedItem.SubItems(3)) * CInt(qt)
End If
End If
End If
Lv.SelectedItem.ForeColor = &H0&
End Sub

Private Sub Val_Click()
Call connect
If Lv1.ListItems.Count < 1 Then
MsgBox "Veuillez sélectionner au moins un médicament !!!", vbInformation, "Information"
Else
If (MsgBox("Etes vous sûr de bien vouloir ajouter cette vente ?", _
    vbQuestion + vbYesNoCancel, "Modification") = vbYes) Then
Montant.Text = Replace(Montant.Text, ",", ".")
req = "insert into vente values(" & code.Text & ",'" & des.Text & "'," + Montant.Text + ")"
cn.Execute req
MsgBox "Ajout avec succés!!!", vbInformation, "Information"
For i = 1 To Lv1.ListItems.Count
cn.Execute "insert into ventemed values(" & code.Text & ",'" & Lv1.ListItems.Item(i).Text & "'," & Lv1.ListItems.Item(i).SubItems(2) & ")"
cn.Execute "update LotStock set QuantiteEnStock=QuantiteEnStock-" & Lv1.ListItems.Item(i).SubItems(2) & " where CodeMedicament='" & Lv1.ListItems.Item(i).Text & "'"
Lv1.ListItems.Clear
Next i
affiche
End If
End If
End Sub

3 réponses

cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
17 nov. 2007 à 14:40
Salut,

Intérèsse toi à cette évènement de la listview :

Private Sub Lv_Saisie_Pc_ItemClick(ByVal ItemValide As ListItem)
      
      ' Déclaration 
      Dim IndexSelected As Long

     ' Récupère l'index choisi au click dans la Listview
      IndexSelected = ItemValide.Index

     MsgBox IndexSelected

      
End Sub

Ainsi, quand l'utilisateur click sur une ligne(peu importe laquelle), la variable contiendra l'index de la ligne cliquée, et la tu fais ton calcul correctement avec le bon index de la ligne choisi par l'utilisateur...


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
17 nov. 2007 à 14:41
Re,

Private Sub Ta_ListView_ItemClick(ByVal ItemValide As ListItem)

End sub

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
amigna Messages postés 53 Date d'inscription mardi 6 novembre 2007 Statut Membre Dernière intervention 18 août 2008
17 nov. 2007 à 15:09
j'ai pas bien compris cette événement pouvez vous m'expliquez étape par étape merci de votre compréhension.
0
Rejoignez-nous