Faire une modif dans une Listview [Résolu]

Signaler
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
bonjour,

Je récupère des données dans une listview qui viennes de ma base.
mais le problème c'est quand je modifie cette listview c'est à dire si je retire ou j'ajoute une ligne la modif ne se fait pas dans ma base.
voila le code :

Private Sub ReyCommand2_Click() 'modif
On Error GoTo err
Call Connect
    'enregistrement
   Sql = "select * from Article_pose where num='" & num.Text & "'"
   Rs.Open "[Article_pose]", Db, adOpenKeyset, adLockOptimistic
 
Rs.MoveLast
Rs.MoveFirst
For a = 1 To Rs.RecordCount
Rs.Delete
Rs.MoveNext
  Next a
 
  For a = 1 To ListA.ListItems.Count
 
Rs.AddNew
        Rs.Fields("num") = num.Text
        Rs.Fields("code_article") = ListA.ListItems(a)
        Rs.Fields("Designation") = ListA.ListItems(a).SubItems(1)
        Rs.Fields("prix") = ListA.ListItems(a).SubItems(2)
        Rs.Fields("marge") = ListA.ListItems(a).SubItems(3)
        Rs.Fields("Quantite") = ListA.ListItems(a).SubItems(4)
        Rs.Fields("chantier") = ListA.ListItems(a).SubItems(6)
        Rs.Update
   Call Deconnect
Next a
err:
If err.Number = 3021 Then
Exit Sub
End If
End Sub


si vous avez une idée je suis preneur ?
merci
bonne journée

6 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
La suppression dans ta listview ne supprime que dans ta listview.
La suppression dans ta table doit dans ce cas nécessairement faire l'objet d'une requête de suppression.
Les deux opérations sont distinctes
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
merci pour ta réponse,
mais comment je doit faire pour supprimer dans la table par rapport aux champs "num" car je peut avoir plusieurs enregistrement pour un seul "num"

merci
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
voila se que j'ai essayé,mais ça ne fonctionne pas

Private Sub ReyCommand2_Click()
On Error GoTo err
 
    
Call Connect
       Sql = "select * from Article_pose where num='" & num.Text & "'"
   Rs.Open Sql, Db, adOpenKeyset, adLockOptimistic
   
 Sql = "Delete from Article_pose where num=" & ListC.ListItems(ListC.SelectedItem.index).Text
    Rs.Open Sql, Db, adOpenKeyset, adLockOptimistic
    Call Deconnect
    ListC.ListItems.Remove (ListC.SelectedItem.index)
  Call Deconnect

  'enregistrement
Call Connect
 Rs.Open "[Article_pose]", Db, adOpenKeyset, adLockOptimistic
  For a = 1 To ListA.ListItems.Count
 'Rs.UpdateBatch
Rs.AddNew
        Rs.Fields("num") = num.Text
        Rs.Fields("code_article") = ListA.ListItems(a)
        Rs.Fields("Designation") = ListA.ListItems(a).SubItems(1)
        Rs.Fields("prix") = ListA.ListItems(a).SubItems(2)
        Rs.Fields("marge") = ListA.ListItems(a).SubItems(3)
        Rs.Fields("Quantite") = ListA.ListItems(a).SubItems(4)
        Rs.Fields("chantier") = ListA.ListItems(a).SubItems(6)
        Rs.Update
   Call Deconnect
Next a
err:
If err.Number = 3021 Then
Exit Sub
End If
End Sub
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
bonjour,
j'ai modifié le code et ça fonctionne, "normalement" après plusieurs essais
Private Sub ReyCommand2_Click()
On Error GoTo err
  
    
Call Connect
    
  Sql = "Delete from Article_pose where num='" & num.Text & "'"
    Rs.Open Sql, Db, adOpenKeyset, adLockOptimistic
    Call Deconnect
    
  For a = 1 To ListA.ListItems.Count
Call Connect

 Rs.Open "[Article_pose]", Db, adOpenKeyset, adLockOptimistic
 'enregistrement

Rs.AddNew
        Rs.Fields("num") = num.Text
        Rs.Fields("code_article") = ListA.ListItems(a)
        Rs.Fields("Designation") = ListA.ListItems(a).SubItems(1)
        Rs.Fields("prix") = ListA.ListItems(a).SubItems(2)
        Rs.Fields("marge") = ListA.ListItems(a).SubItems(3)
        Rs.Fields("Quantite") = ListA.ListItems(a).SubItems(4)
        Rs.Fields("chantier") = ListA.ListItems(a).SubItems(6)
        Rs.Update
   Call Deconnect
Next a
err:
If err.Number = 3021 Then
Exit Sub
End If
End Sub


merci
bonne journée
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Ah ...
Tu te connectes à ta base en boucle !
Pourquoi donc ?
La logique serait, une fois remplie la listview :
1) la sélection de l'item à supprimer
2) sa suppression dans la listview
3) la suppression dans la table de l'article sélectionné)
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
pour supprimer pas de probleme,mais si j'ajoute une ligne dans la listview ça ne s'ajoute pas dans ma base,donc je supprime les enregistrement par rapport au champ "num" et ensuite j'enregistre les nouvelles données.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
si j'ajoute une ligne dans la listview ça ne s'ajoute pas dans ma base
Je ne comprends pas.
Le principe est exactement le même ==>>
ajout dans la listview ==>> ajout dans la base par requête d'ajout de l'article ajouté.