Modification sur listview

Résolu
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007 - 23 juin 2007 à 18:37
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007 - 2 juil. 2007 à 11:50
bonjour
j'ai un probléme au niveau de modification dans listview l'hourseque je fait la modification, elle effectuée toujours dans le premier ligne
voici le code :
Private Sub listview1_ItemClick(ByVal ItemValide As ListItem)



    Dim a As Long
    'On Error GoTo Aff_Err
    'LongIndex = ItemValide.Index
   a = ItemValide.Index
    'KeyPress = ListView1.ListItems(LongIndex).SubItems(1)
   
         frmvente.Combo1 = ListView1.ListItems(a).SubItems(1)
     frmvente.txtproduit = ListView1.ListItems(a).SubItems(2)
     frmvente.Lbltype = ListView1.ListItems(a).SubItems(3)
     frmvente.DTPicker1 = ListView1.ListItems(a).SubItems(4)
     frmvente.txtquantite = ListView1.ListItems(a).SubItems(5)
     frmvente.txtpu = ListView1.ListItems(a).SubItems(6)
     frmvente.txtpht = ListView1.ListItems(a).SubItems(7)
     frmvente.Txttva = ListView1.ListItems(a).SubItems(8)
    frmvente.txtpttc = ListView1.ListItems(a).SubItems(9)
    frmvente.Show vbModal
     Exit Sub
frmvente.txtpht.Enabled = True
frmvente.txtpttc.Enabled = True
frmvente.Txttva.Enabled = True
frmvente.txtpht = 0
Aff_Err:
 
    MsgBox Err.Description, vbExclamation Or vbOKOnly, "Information utilisateur"
    Err.Clear



End Sub



les information s'affiche dans listview grace a ce code
:

Public Sub list()
On Error Resume Next
Dim tva As Long
Dim pht As Long
Dim pttc As Long
Dim entete As ColumnHeader
Dim ligne As ListItem
ListView1.View = 3
ListView1.ListItems.Clear
ListView1.ColumnHeaders.Clear
Set entete = ListView1.ColumnHeaders.Add(, , "N°ordre", 1000)
Set entete = ListView1.ColumnHeaders.Add(, , "Code produit", 1700)
Set entete = ListView1.ColumnHeaders.Add(, , "Designation", 1600)
Set entete = ListView1.ColumnHeaders.Add(, , "Marque", 1500)
Set entete = ListView1.ColumnHeaders.Add(, , "Date Vente", 1500)
Set entete = ListView1.ColumnHeaders.Add(, , "Quantité sortie", 1500)
Set entete = ListView1.ColumnHeaders.Add(, , "PU", 1200)
Set entete = ListView1.ColumnHeaders.Add(, , "P.H.T", 1200)
Set entete = ListView1.ColumnHeaders.Add(, , "T.V.A", 1200)
Set entete = ListView1.ColumnHeaders.Add(, , "P.T.T.C", 1500)


db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\facturation.mdb"


If Err <> 3705 Then
table.Open "select * from ProduitVendus where [numfacture]='" & txtnfacture & "'", db, adOpenStatic, adLockOptimistic
End If
For i = 1 To table.RecordCount


Set ligne = ListView1.ListItems.Add(, , table.Fields("numordrevende"))
ligne.SubItems(1) = table.Fields("codeproduit")
ligne.SubItems(2) = table.Fields("Designation")
ligne.SubItems(3) = table.Fields("Marque")
ligne.SubItems(4) = table.Fields("date vente")
ligne.SubItems(5) = table.Fields("quantite sortie")
ligne.SubItems(6) = table.Fields("pu")
ligne.SubItems(7) = table.Fields("pht")
ligne.SubItems(8) = table.Fields("tva")
ligne.SubItems(9) = table.Fields("pttc")
table.MoveNext
Next i
For d = 1 To ListView1.ListItems.Count
tva = tva + Val(ListView1.ListItems(d).SubItems(8))
pht = pht + Val(ListView1.ListItems(d).SubItems(7))
pttc = pttc + Val(ListView1.ListItems(d).SubItems(9))
Next d
txttva = tva
txtpht = pht
txtpttc = pttc
table.Close
db.Close
 pour modifier : dans autre form nommé frmvente
Private Sub Command3_Click()
Dim rep As String
rep = MsgBox("Voulez-vous modifier ce produit?", vbQuestion + vbYesNo, "création")
If rep = vbYes Then
ajoutvente
rv.Update
End If
Unload Me
voici le procedure :
Public Sub ajoutvente()
'rv.Fields("numordrevende") = frmvente.Text3
rv.Fields("codeproduit") = frmvente.Combo1
rv.Fields("quantite sortie") = frmvente.txtquantite
rv.Fields("tva") = frmvente.txttva
rv.Fields("pht") = frmvente.txtpht
rv.Fields("pttc") = frmvente.txtpttc
rv.Fields("numfacture") = frmvente.Text1
rv.Fields("pu") = frmvente.txtpu
rv.Fields("date vente") = frmvente.DTPicker1
rv.Fields("codetypeproduit") = frmvente.Text2
End Sub

21 réponses

taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
2 juil. 2007 à 11:50
salut tous
j'ai trouver la solution de ce problème avec le contole adodc
merci a tous
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
23 juin 2007 à 19:32
Salut,


J'ai pas bien compris ton problème....Dans ta table cela modifie bien le bon enregistrement ou pas ? Si oui dans ta sub ajoutvente, c'est là que tu devrais faire le refresh de ta listview de l'item que tu as choisis.

Tu as deux solutions :

1 - Soit tu recharges ta listview via ta table
2- Soit dans ta sub : ajoutvente , tu modifies en même temps, ta ligne qui correspond à ton choix...

Si cela n'est pas ça précise plus " l'endoit " de ton code qui te pose problème..


A+
Exploreur

 Linux a un noyau, Windows un pépin


 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 juin 2007 à 16:21
Salut Exploreur,
outre ta remarque, il y a bien un paramètre manquant
Set ligne = ListView1.ListItems.Add(i, , table.Fields("numordrevende"))

d' autre part , pas besoin de la variable ligne pour remplir ta listview
il suffit de procéder ainsi:
 With ListView1
For i = 1 To table.RecordCount
.ListItems.Add i, , table.Fields("numordrevende")
.ListItems(i).SubItems(1) = table.Fields("codeproduit")
.ListItems(i)..SubItems(2) = table.Fields("Designation")
...etc

Next i

End With

 
0
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
24 juin 2007 à 16:45
Oui monsieur
Le problème se pose l'horse que j'ai deux enregistrements exemple :
Listview :
Code produit produit date de vente
1 souris 15/5/2006
2 clavier 19/5/2006
L’horse que je click sur le deuxième ligne pour la modifier. la modification effectuée toujours dans la première ligne.
remarque :
je modifier dans un autre forme nommé frmvente
L’horse que je click elle s'affiche
comme suit :
Code produit : ……………….
Produit : …………….....
Date de vente : ……………….
Les informations s’affiche de deuxième ligne mais la modification effectuée dans la premiére ligne
et merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 juin 2007 à 17:49
si tu es en VB6 Private Sub lvView_ItemClick ne se présente pas
tout à fait comme tu l' a décrit.
Chez moi c' est
Private Sub lvView_ItemClick(ByVal Item As MSComctlLib.ListItem)

pour récupérer la ligne sélectionnée je fais
cLigne=Item.index

 
0
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
24 juin 2007 à 20:22
oui le code affiche les information que je veux modifier dans une autre form comme je veux
mais l'horse que je click sur le boutton modifier
il ne fonction pas il modifier toujours premier ligne
voici le code :
Private Sub Command3_Click()
Dim rep As String
rep = MsgBox("Voulez-vous modifier ce produit?", vbQuestion + vbYesNo, "création")
If rep = vbYes Then
ajoutvente
rv.Update
End If
'rv.Requery
Unload Me
End Sub
'rv.Fields("numordrevende") = frmvente.Text3
rv.Fields("codeproduit") = frmvente.Combo1
rv.Fields("quantite sortie") = frmvente.txtquantite
rv.Fields("tva") = frmvente.txttva
rv.Fields("pht") = frmvente.txtpht
rv.Fields("pttc") = frmvente.txtpttc
rv.Fields("numfacture") = frmvente.Text1
rv.Fields("pu") = frmvente.txtpu
rv.Fields("date vente") = frmvente.DTPicker1
rv.Fields("codetypeproduit") = frmvente.Text2
remarque il y'a dans la table un champ clé numeroauto nommé (numordrevende)
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 juin 2007 à 21:16
remarque il y'a dans la table un champ  nommé (numordrevende)



Maintenant oui , ta question est complète !

Voici comment tu dois t'y prendre :
1° ce numéro auto doit fugurer dans une colonne de ta listview
    que tu peux cacher si tu veux (Largeur de la colonne=0)
2° lorsque tu sélectionnes une ligne , tu le récupères et tu le passes
    en paramètre à ta requete :
   table.Open "select * from ProduitVendus where [numfacture]='" & _
   "txtnfacture & "'where ChpNumeroAuto=" & VarNumAuto, db, adOpenStatic, adLockOptimistic
  Ainsi ton recordset se pointera exactement sur celui que tu veux modifier




 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
24 juin 2007 à 21:38
remarque :
Avec le paramètre  numeroauto (numordrevende)tu sera tellement précis
que tu peux t' en passer du numerofacture
 table.Open "select * from ProduitVendus where " & _
 "[numordrevende]=" & VarNumAuto, db, adOpenStatic, adLockOptimistic

 
0
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
25 juin 2007 à 13:03
voici le code mais pas de resultat :
Public Sub list()
On Error Resume Next
Dim tva As Long
Dim pht As Long
Dim pttc As Long
Dim entete As ColumnHeader
Dim ligne As ListItem
ListView1.View = 3
ListView1.ListItems.Clear
ListView1.ColumnHeaders.Clear
Set entete = ListView1.ColumnHeaders.Add(, , "N°ordre", 0)
Set entete = ListView1.ColumnHeaders.Add(, , "Code produit", 1700)
Set entete = ListView1.ColumnHeaders.Add(, , "Designation", 1600)
Set entete = ListView1.ColumnHeaders.Add(, , "Marque", 1500)
Set entete = ListView1.ColumnHeaders.Add(, , "Date Vente", 1500)
Set entete = ListView1.ColumnHeaders.Add(, , "Quantité sortie", 1500)
Set entete = ListView1.ColumnHeaders.Add(, , "PU", 1200)
Set entete = ListView1.ColumnHeaders.Add(, , "P.H.T", 1200)
Set entete = ListView1.ColumnHeaders.Add(, , "T.V.A", 1200)
Set entete = ListView1.ColumnHeaders.Add(, , "P.T.T.C", 1500)

db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\facturation.mdb"

If Err <> 3705 Then
'table.Open "select * from ProduitVendus where [numfacture]='" & txtnfacture & "'", db, adOpenStatic, adLockOptimistic
'table.Open "select * from ProduitVendus where [numfacture]='" & "txtnfacture & where numordrevende=" & VarNumAuto, db, adOpenStatic, adLockOptimistic

End If
For i = 1 To table.RecordCount

Set ligne = ListView1.ListItems.Add(, , table.Fields("numordrevende"))
ligne.SubItems(1) = table.Fields("codeproduit")
ligne.SubItems(2) = table.Fields("Designation")
ligne.SubItems(3) = table.Fields("Marque")
ligne.SubItems(4) = table.Fields("date vente")
ligne.SubItems(5) = table.Fields("quantite sortie")
ligne.SubItems(6) = table.Fields("pu")
ligne.SubItems(7) = table.Fields("pht")
ligne.SubItems(8) = table.Fields("tva")
ligne.SubItems(9) = table.Fields("pttc")
table.MoveNext
Next i
For d = 1 To ListView1.ListItems.Count
tva = tva + Val(ListView1.ListItems(d).SubItems(8))
pht = pht + Val(ListView1.ListItems(d).SubItems(7))
pttc = pttc + Val(ListView1.ListItems(d).SubItems(9))
Next d
Txttva = tva
txtpht = pht
txtpttc = pttc
table.Close
db.Close
End Sub
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
25 juin 2007 à 13:55
comment veux tu qu' on s' y retrouve avec un code écrit d' un seul trait.
Une vrai torture pour les yeux et l' esprit !
Repostes le stp avec une mise en page correcte.


De toute façon et déjà ton rs doit être de type Dynamic
si tu veux pouvoir modifier quique ce soit



adOpenDynamic au lieu de adOpenStatic











 
0
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
25 juin 2007 à 23:32
salut je suis debutant en programmation  je cherche d'aide dans se domaine
et merci beaucoup mes amis
0
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
25 juin 2007 à 23:44
salut monsieur
pas de resultat
est-ce-que si possible de m'aider de corriger le problème direct
je peux vous envoyer mon projet dans votre e_mail
j'attend votre reponse ?
merci
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 juin 2007 à 00:38
Désolé monsieur taki...
On est prêt à t' aider sur le forum mais pas en privé.
Si tu savais le nombre de MP que je  recois ...
Comprend bien qu' on a notre travail à nous et des obligations.
En plus c' est pas l' esprit du forum. On doit partager.
Pour ton problème, si ça marche pas avec ta façon de procéder,
essaies en une autre.D' autant plus que tu es débutant.Et c' est
comme ça qu' on  apprend.
On a tout essayer au niveau du code mais c' est la manière de faire qui
n' aboutit pas.
Avec nos propres applications on se prend parfois la tête.Imagines un
peu avec le travail des autres.


Encore une fois désolé.


Bon courage.

PS: si tu veux on peut poursuivre sur ce même topic.
0
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
26 juin 2007 à 11:46
oui merci beaucoup
0
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
26 juin 2007 à 13:33
salut tous
je pose mon problème avec plus de dètail
j'ai une table nommé vente (les champs de plusieur table) voilâ les champs
numordervente  (clé primaire)
n°facture                     (table de facture)
code produit               (table de produit)
désignation                  (même table)
marque                        (table de marque)
quantité sortie    
date de vente
prix unitaire
t.v.a
p.hors taxe
p.t.t.c

la forme dans visual basic comme suite:
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
26 juin 2007 à 13:36
Salut,

Manque la fin de ton commentaire....

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
26 juin 2007 à 13:59
salut tous
je pose mon problème avec plus de dètail
j'ai une table nommé vente (les champs de plusieur table) voilâ les champs
numordervente  (clé primaire)
n°facture                     (table de facture)
code produit               (table de produit)
désignation                  (même table)
marque                        (table de marque)
quantité sortie    
date de vente
prix unitaire
t.v.a
p.hors taxe
p.t.t.c

la forme dans visual basic comme suite:

suite
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 juin 2007 à 14:00
Bon !


voici ce que je te propose de faire
Dans  frmvente
>Ajoutes un TxtNumFacture dans  frmvente pour stocker le Numéro de facture
>Ajoutes Ado
>Configures Ado (connectionString et RecordSource=TableVentes)
>Lies tes différents controls :
 DataSource = Ado1
 DataField= <Le champ concerné>
 Fais tout ceci  manuellement au début.Ensuite tu pourras le faire par code)


Loarsque tu récupère le n° de facture à partir de la listview
passes le en paramètre à ta Sql
 Charges ta feuilleVente (LoadfrmVente)
Redéfinies le RecordSource de Ado1 comme étant ta Sql
Fais un Move First
Puis frmVente.Show 1
Modifies ce que tu veux dans ta facture et sur la ligne que tu veux,
puisque tu auras la possibilité de te déplacer dans les lignes de la facture
avec ton control Ado.


Lorsque tu déchargeras ta frmVente avec un Boutton "Terminer"
tu rafraichis ta listview en la remplissant de nouveau .


Voilà ce que je peux te proposer pour l' instant.
Essaies ceci pour l' instant. Après tu passeras à la vitesse supérieure
en configurant tout par code.
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
26 juin 2007 à 14:02
Désolé...
Post croisé ,
j' ai donné suite au poste "oui merci beaucoup"

 
0
taki78 Messages postés 37 Date d'inscription lundi 12 mars 2007 Statut Membre Dernière intervention 27 juillet 2007
26 juin 2007 à 14:03
l'horeseque je click sur laligne avec se code :
Private Sub listview1_ItemClick(ByVal ItemValide As ListItem)


    Dim a As Long
    'On Error GoTo Aff_Err
    'LongIndex = ItemValide.Index
   a = ItemValide.Index
    'KeyPress = ListView1.ListItems(LongIndex).SubItems(1)
    'frmvente.Text3 = ListView1.ListItems(a).SubItems(0)
         frmvente.Combo1 = ListView1.ListItems(a).SubItems(1)
     frmvente.txtproduit = ListView1.ListItems(a).SubItems(2)
     frmvente.Lbltype = ListView1.ListItems(a).SubItems(3)
     frmvente.DTPicker1 = ListView1.ListItems(a).SubItems(4)
     frmvente.txtquantite = ListView1.ListItems(a).SubItems(5)
     frmvente.txtpu = ListView1.ListItems(a).SubItems(6)
     frmvente.txtpht = ListView1.ListItems(a).SubItems(7)
     frmvente.Txttva = ListView1.ListItems(a).SubItems(8)
    frmvente.txtpttc = ListView1.ListItems(a).SubItems(9)
    frmvente.Show vbModal
     Exit Sub
frmvente.txtpht.Enabled = True
frmvente.txtpttc.Enabled = True
frmvente.Txttva.Enabled = True
frmvente.txtpht = 0
Aff_Err:
 
    MsgBox Err.Description, vbExclamation Or vbOKOnly, "Information utilisateur"
    Err.Clear


End Sub
il s'affiche cette forme
0
Rejoignez-nous