Faire une modif dans une Listview

Résolu
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 - 17 mars 2014 à 08:44
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 18 mars 2014 à 09:55
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 mars 2014 à 10:11
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
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
17 mars 2014 à 10:52
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
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
17 mars 2014 à 11:19
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
0
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
18 mars 2014 à 08:24
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 mars 2014 à 08:34
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é)
0

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

Posez votre question
cs_petchy Messages postés 710 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 19 mai 2015 4
18 mars 2014 à 08:58
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 mars 2014 à 09:55
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é.
0
Rejoignez-nous