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

A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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
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
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > 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
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