Boutton access

Bonjour,
j ai créer un formulaire sous access et j ai ajoutter un boutton de commande je veux modifier un enregistrement en cliquant sur ce boutton
merci pou votre aide
Configuration: Windows XP
Internet Explorer 7.0

9 réponses

Résumé de la discussion

Un formulaire Access avec un bouton de commande est utilisé pour modifier un enregistrement, mais les utilisateurs remarquent que la mise à jour se répercute directement dans la table, rendant le bouton inutile. Plusieurs réponses apportent des éléments de solution, notamment corriger le code VBA et la gestion de l'objet Recordset, tester les valeurs des champs et ajuster la requête SQL pour éviter les erreurs. Des conseils pratiques recommandent d'utiliser CurrentDb.OpenRecordset pour construire une requête sécurisée, de distinguer rs.EOF de rs!EOF et d'ajouter des vérifications avec des MsgBox pour diagnostiquer l'erreur. En cas de besoin, certaines réponses soulignent que des détails comme l’échappement des caractères ou le message d’erreur affiché doivent être précisés pour affiner le dépannage.

Bobot (l’IA à votre service)
  1. Salut samsan,

    Je vois pas l'utilité de faire cela.
    1. nvaros j ai quelques question pour le code que tu m a donner l autre fois est ce que tu peut m aider???
  2. Je ne comprends pas trop non plus.

    Peux tu être plus clair et précis stp?
    1. j'ai crée un formulaire a partir d'une table "user" et on a crée dans ce formulaire un boutton "modifier" et cliquant sur ce boutton on veut qu'un enregistrement qu'on choisi soit modifié par les nouvelles valeurs qu'on saisie c clair mnt!
    2. @samsanLe problème avec Access c'est qu'à partir du moment ou tu mets à jour un champs, il s'enregistre directement dans la table. Du coup le bouton modifier semble inutile.
    3. @samsanQuels sont les champs de ta table USER?
    4. @nvarosvoila les champs:nom prenom type login et password
    5. slt capit j ai ecrit un code pour le login et le mot de passe mais il apparait qu il y a une erreure est ce que tu peux m aider a la corriger
  3. voila les champs:nom prenom type login et password
    1. Il faut faire une requête UPDATE SET je pense.

      Nvaros t'expliquera surment plus clairement que moi. J'ai jamais fait d'Update dans Access donc je ne peux pas trop t'aider.

      Bonne chance.
    2. @CaPiTc pas grave je sais que c'est update
      mais je sais pas comment modifier tous les champs
    3. @samsanMoi ce que j'aurais fait c'est un bouton de recherche par rapport à une requête sur le champ que tu veux séléctionner
    4. @CaPiThé tu c sai comment faire un formulaire "login et mot de passe"mais ce qui est plus difficile c un autre formulaire s ouvre selon le type de l utilisateur par exemple si le typ e etait administrateur le formulaire qui s ouvre c "menu 1" si le type etait "limité" le formulaire qui s'ouvre c "menu2" je sais que c trop compliqué mais svp aidez moi!
  4. tu sai comment modifier un enregistrement???????????*
    1. Tu peux utiliser les filtres pour ouvrir juste les enregistrements que tu veux.

      formulaire > propriété > filtre.

      Ou alors en vba tu mets "sur click"

      if user = type then
      stDoName = "formulaire1"
      end if

      if user = type then
      stDoName = "formulaire2"
      end if

      DoCmd.OpenForm stDocName ...etc

      Tu piges le principe?
    2. @CaPiTo merci bien je vais essayer et je tedirai le resultat!!
    3. @CaPiTvoila le code

      Private Sub Commande5_Click()
      Me.Requery
      Dim sql, LOGIN, PASSWORD As String
      Dim rs As DAO.Recordset
      Static i As Byte
      sql = "SELECT * FROM USER WHERE LOGIN = \'" & Me.LOGIN & "\' AND PASSEWORD =\'" & Me.PASSEWORD & "\';"
      ****************Set rs = CurrentDb.OpenRecordset*********************
      If Not rs.EOF Then
      DoCmd.OpenForm "menu", acNormal, , , , acWindowNormal
      DoCmd.Close acForm, "menu"
      LOGIN = rs("LOGIN").Value
      PASSWORD = rs("PASSWORD").Value
      Else
      MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
      i = i + 1
      End If
      If i = 3 Then
      MsgBox "Vous avez dépassé le nombre de tentatives autorisés", vbCritical
      DoCmd.Quit
      End If
      End Sub
      l'erreur se trouve dans la ligne ou il y a *************
  5. Au lieu de :

    Me.Requery
    Dim sql, LOGIN, PASSWORD As String
    Dim rs As DAO.Recordset
    Static i As Byte
    sql = "SELECT * FROM USER WHERE LOGIN = \'" & Me.LOGIN & "\' AND PASSEWORD =\'" & Me.PASSEWORD & "\';"
    ****************Set rs = CurrentDb.OpenRecordset*********************

    Fais plutôt :
    Dim LOGIN, PASSWORD As String
    set db = CurrentDb()
    SET rs = db.OpenRecordset("SELECT * FROM USER WHERE LOGIN = \'" & Me.LOGIN & "\' AND PASSEWORD =\'" & Me.PASSEWORD & "\';" )

    Tes variables de la requête ensuite s'appelle rs!variable.

    Teste et dis moi ;)
    1. j ai fais ce que tu m a dis mais l erreur est tjr la je sais pas qoui faire

      Dim LOGIN, PASSWORD As String
      set db = CurrentDb()
      **************SET rs = db.OpenRecordset("SELECT * FROM USER WHERE LOGIN = \'" & Me.LOGIN & "\' AND PASSEWORD =\'" & Me.PASSEWORD & "\';" )
    2. @samsanEssaie ta requête dans les création de requete d'Access et après implémante la dans le VBA.

      A coup sur y'a une erreur de \ ou de " ou de '. C'est chiant le SQL c'est assez strict.

      De plus si tu pouvais me donner ce que t'affiche l'erreur et pas seulement la ligne.
    3. voila le code entier

      Private Sub Commande5_Click()
      Dim LOGIN, PASSWORD As String
      Dim rs As Recordset
      Set db = CurrentDb()
      Set rs = db.OpenRecordset("SELECT * FROM USER WHERE LOGIN = \'" & Me.LOGIN & "\' AND PASSEWORD =\'" & Me.PASSEWORD & "\';")
      If Not rs.EOF Then
      DoCmd.OpenForm "menu", acNormal, , , , acWindowNormal
      DoCmd.Close acForm, "menu"
      LOGIN = rs("LOGIN").Value
      PASSWORD = rs("PASSWORD").Value
      Else
      MsgBox "(Identifiant, Mot de Passe) incorrect ", vbInformation, "Connexion"
      i = i + 1
      End If
      If i = 3 Then
      MsgBox "Vous avez dépassé le nombre de tentatives autorisés", vbCritical
      DoCmd.Quit
      End If
      End Sub
  6. Y'a une erreur là déja. C'est pas rs.EOF mais rs!EOF.

    De plus met des msgbox au début pour tester si tu as bien des valeur dans Me.PASSEWORD et l'autre.
    Dans la requête il me semble que les \' ne soit pas utile donc teste en enlevant ça aussi.

    Tu ne m'as pas dit l'erreur en elle même (ce que la petite boite de dialogue affiche avant de debogage).

    Je suis désolé j'ai pas trop trop de temps aujourd'hui sinon j'aurais plus appronfondit.

    Teste tout ça et dis moi ce qui marche/marche pas.
    1. oh mon dieu il me donne tjr l erreur dans la meme ligne
    2. @samsanJe pense que les .VALUE sont inutile aussi. A tester.

      Dans la requête il me semble que les \' ne soit pas utile donc teste en enlevant ça aussi.

      Tu ne m'as pas dit l'erreur en elle même (ce que la petite boite de dialogue affiche avant de debogage).

      Je suis désolé j'ai pas trop trop de temps aujourd'hui sinon j'aurais plus appronfondit.

      Au pire met des msgbox au début pour tester si tu as bien des valeur dans Me.PASSEWORD et l'autre.
      Teste tout ça et dis moi ce qui marche/marche pas
    3. @CaPiTbonjour capit pourra tu m aider a corriger un code vba???
      merci