amigna
Messages postés53Date d'inscriptionmardi 6 novembre 2007StatutMembreDernière intervention18 août 2008
-
17 nov. 2007 à 14:26
amigna
Messages postés53Date d'inscriptionmardi 6 novembre 2007StatutMembreDernière intervention18 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
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 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...