Boutton access
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
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.
-
Salut samsan,
Je vois pas l'utilité de faire cela. -
pourquoi je crois c'est tres utile pour moi !!!
-
Je ne comprends pas trop non plus.
Peux tu être plus clair et précis stp? -
voila les champs:nom prenom type login et password
-
-
@CaPiTc pas grave je sais que c'est update
mais je sais pas comment modifier tous les champs -
@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
-
@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!
-
-
tu sai comment modifier un enregistrement???????????*
-
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? -
@CaPiTo merci bien je vais essayer et je tedirai le resultat!!
-
@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 *************
-
-
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 ;)-
-
@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. -
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
-
-
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.-
-
@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 -
@CaPiTbonjour capit pourra tu m aider a corriger un code vba???
merci
-
-
OK JE VAI VOIR MERCI
-
ok