Probleme de mise à jour de donnees

solomarius -  
 solomarius -
Bonjour,
Je suis en train de programmer (ACCESS 2007) un mini logiciel pour mon école, et je suis bloqué sur la commande de mise à jour,

Mon problème avec le code actuel est que , il ne s’exécute que si je passe repasse en mode création, et puis je revient en mode formulaire, et c'est seulement après ces gymnastiqueS que cela fonctionne
Question:
Je voudrais qu'on m'aide, qu'est ce qui manque sur le code ci-dessous
Private Sub Commande102_Click()
  Dim db As Database
  Dim rsel As Recordset
  Set db = CurrentDb
  If test_code_absence = 0 Then
    Set rsel = CurrentDb.OpenRecordset(" SELECT t_absence.* FROM t_absence WHERE t_absence.id_abs = id_abs ")
        
    rsel.MoveFirst
    Do While Not rsel.EOF
        If rsel!id_abs = id_abs.Value Then
            With rsel
               rsel.Edit
         
               rsel![annee_scol] = annee_scol.Value
               rsel![situation_abs] = situation_abs.Value
               rsel![niveau] = niveau.Value
               rsel![effectif_niv] = effectif_niv.Value
               rsel![nb_abs] = nb_abs.Value
               rsel.Update
           
              MsgBox "Modification effectuée"
              DoCmd.Close
            
           End With
             Exit Do
        End If
        rsel.MoveNext
    Loop
  End If
End Sub


EDIT : Ajout des BALISES DE CODE

1 réponse

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, il manque des commentaires. tu ne donnes aucune explication de ce que tu souhaites que ton code fasse.
    tu écris "il ne s’exécute que si...". comment le sais-tu?
    A tout hasard:
    - ajoute "option explicit" en début de module
    - supprime le "With"
    - pourquoi "DoCmd.Close" ?
    0
    1. solomarius
       
      Bonjour yg_be

      Merci pour ta réponse.

      Ce que je veux que mon code fasse est la mise à jour des données qui sont déjà dans une table nommée t_absence, quand on clique sur un bouton modifier
      J'ai exécuté ce code, et ce que je ne comprends pas est : que le programme ne n’exécute pas tout d'abord, puis dans la foulée je revient en mode création, puis je revient en mode formulaire(pour le même formulaire) et re-clique sur le bouton modifier. Et, là le programme s’exécute
      Donc impossible de faire la mise à jour de donnée normalement.

      C'est cela mon problème

      J'ai ajouté " option explicit" au tout début du module, puis j'ai enlevé le With mais cela ne marche pas

      Pq Docmd.close est une erreur de ma part, il manque un docmd.OpenForm

      Merci
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > solomarius
         
        tu écris "il ne s’exécute que si...". comment le sais-tu? as-tu mis un point d’arrêt sur la premiere instruction?
        il manque toujours des commentaires.
        qu'essaies-tu de faire avec
        SELECT t_absence.* FROM t_absence WHERE t_absence.id_abs = id_abs
        ?
        ne serait-il pas plus logique de faire:
        " SELECT * FROM t_absence WHERE id_abs = " &  id_abs.Value
        ?
        0
    2. solomarius
       
      Bonjour yg_be
      Encore merci pour ta réponse

      J'ai créé plusieurs formulaire: un formulaire d'insertion, consultation et suppression, modification

      Qu'essai-je de faire avec : SELECT t_absence.* FROM t_absence WHERE t_absence.id_abs = id_abs

      -Dans ma formulaire "modification" id_abs qui est la clé primaire_auto_increment, avec une propriété "caché"
      -Je veux sélectionner et modifier les données qui correspondent au id_abs

      Merci
      0