Commande valider access
sya21 Messages postés 426 Date d'inscription Statut Membre Dernière intervention -
jai du code vb qui me permet d'inserer ou de supprimer des enregistrements dans une table lorque je clique sur le bouton valider , cependant mon code ne marche pas et je ne trouve pas l'erreur mercu de m'aider
Private Sub Cmd_valid_Click()
On Error GoTo Err_cmd_valid_Click
If chx <> "a" Then
lst_id.Visible = False
lst_nom = ""
Else
lst_id.Visible = True
lst_nom.Visible = False
End If
If chx <> "s" Then
If chx = "a" Then
End If
End If
DoCmd.RunCommand acCmdRecordsGoToNew
lst_id.Requery
lst_id = ""
Now.RowSource = "SELECT avril09.* from avril09; "
Me.Refresh
If chx = "m" Or "a" Then
dmcmd.RunSQL "insert into avril09(division,section,entité_pilotage,identifiant,UP,Nom,Prenom,Agent_Sexe,Grade,Clasniv_grade,n°_fonction,libelle_fonction,clasniv_fct,Agent_Statut,Date_naissance,quotite) values('" & Me.division & "," & Me.section & " , " & Me.[entité pilotage] & " , " & Me.identifiant & " , " & Me.UP & " , " & Me.Prenom & " , " & Me.[Agent Sexe] & " , " & Me.Grade & " , " & Me.clasniv_grade & " , " & Me.[n° fonction] & " , " & Me.Libelle_fonction & " , " & Me.clasniv_fct & " , " & Me.[Agent Statut] & " , " & Me.[Date naissance] & " , " & Me.quotite & "' )"
End If
If chx = "s" Then
dmcmd.RunSQL "delete avril09.* from avril09 where identifiant = " & CLng(lst_id.Value)
DoCmd.RunSQL req
DoCmd.Close acForm, "frm_personnel"
End Sub
merci!!!
Configuration: Windows XP Internet Explorer 6.0
- Commande valider access
- Invite de commande - Guide
- Commande cdiscount en cours de validation - Forum Consommation & Internet
- Acer quick access - Forum Logiciels
- Commande en cours de validation fnac ✓ - Forum Consommation & Internet
- Access appdata - Guide
83 réponses
- 1
- 2
- 3
- 4
- 5
Un code VB destiné à insérer ou supprimer des enregistrements dans une table Access lors du clic sur le bouton valider présente des dysfonctionnements et nécessite une correction. Le code mêle des vérifications basées sur des conditions (chx) et des commandes SQL construites dynamiquement, ce qui mène à des erreurs de syntaxe et à des échecs d'exécution. Des conseils soulignent l'importance de syntaxes SQL valides avec des chaînes entourées de guillemets et de dates encadrées par des dièses, ainsi que l'usage de paramètres pour éviter les erreurs. En complément, les points d'arrêt dans l'IDE permettent de repérer la ligne problématique et d'observer les valeurs des champs du formulaire, ce qui aide à corriger les erreurs de syntaxe et de données.
une fois l'erreur ciblé on pourras intervenir que mieux au lieu d'en créer, comme cela peut être le cas maintenant
If chx <> "s" Then
If chx = "a" Then
End If
End If
DoCmd.RunCommand acCmdRecordsGoToNew
lst_id.Requery
lst_id = ""
tu fait deux if et tu les ferme sans rien mettre dedans est ce normal?
de plus à quoi te sert
DoCmd.RunCommand acCmdRecordsGoToNew
lst_id.Requery
lst_id = ""
je ne connais pas la commande que tu utilise mais j'ai un doute éclaire moi la dessus
mets des msgbox avant et après chaque variables
et un points d'arrêts sur ta ligne de requête
et enfin donne moi les types des valeurs que tu passe dans ta requêtes
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questioncest la qu intervient le bouton valider dont mon code est faux
values('" & Me.division & "," & Me.section & " , " & Me.[entité pilotage] & " , " & Me.identifiant & " , " & Me.UP & " , " & Me.Prenom & " , " & Me.[Agent Sexe] & " , " & Me.Grade & " , " & Me.clasniv_grade & " , " & Me.[n° fonction] & " , " & Me.Libelle_fonction & " , " & Me.clasniv_fct & " , " & Me.[Agent Statut] & " , " & Me.[Date naissance] & " , " & Me.quotite & "' )"
l'erreur réside sûrement dedans
date de naissace cest type date
quotité sexe up entite pilotage cest du nombre le reste du texte
jai le meme formulaire avec la requete qui marche mais le code est le meme jai fait un copier coller dans celui la et sa ne marche pas
jai changé certains champ depuis.mais jai gardé des meme nom
alors part étape tu dois :
vérifier que tout les champs de ta table sont bien orthographier comme dans ta requête
fait de même pour tes values
ensuite vérifie que tes values reçoivent bien les valeurs que tu rentre dans ton formulaires ( avec un points d'arrêts)
vérifie que tes values correspondent bien à tes champs
ensuite lorsque tu devra remplir un champ qui contient du texte tu devra utiliser la syntaxe suivante:
ça : '" & Me.Libelle_fonction & "' au lieu de ça " & Me.Libelle_fonction & "
différence de simple quote
de même pour les champ de format date
ça : #" & Me.Libelle_fonction & "# au lieu de ça " & Me.Libelle_fonction & "
et enfin ajoute un ; à la fin
] & " , " & Me.quotite & "' );"
et regarde par la peut être que .....
http://www.commentcamarche.net/forum/affich 12903676 il me faut une paire d yeux?#14
si tu a une zone de texte pour prendre un exemple
le champ prénom tu dois avoir une zone de texte ou une liste déroulante pour saisir le prénom ce que tu a choisis est un item que tu utilise dans VALUES de cette façon " & Me.Prenom & "
pour une chaine de caractère tu dois impérativement entouré par des guillemets sinon rien ne s'affiche dans ta table
de même pour la date que tu dois entourer de #....#
bref ça tu l'as compris
maintenant pour mettre un points d'arrêts ( et ce une fois que tu sauras l'utiliser tu verra c'est très utiles )
il suffit que tu aille dans la fenêtre de code vb tu vas sur la ligne de code ( ici la ligne de ta commande INSERT TO ) et dans la marge tu click et normalement tu dois avoir un point rouge écarlate et ta ligne se surlignera de la même couleur
en espérant que tu ais tout compris
Private Sub Cmd_valid_Click()
On Error GoTo Err_cmd_valid_Click
DoCmd.RunCommand acCmdRecordsGoToNew
lst_id.Requery
lst_id = ""
'renvoi les données de la requete
Now.RowSource = "SELECT avril09.* from avril09; "
Me.Refresh
If chx = "m" Or "a" Then
dmcmd.RunSQL "INSERT INTO avril09(division,section,entité_pilotage,identifiant,UP,Nom,Prenom,Agent_Sexe,Grade,Clasniv_grade,n°_fonction,libelle_fonction,clasniv_fct,Agent_Statut,Date_naissance,quotite) VALUES ('" & Me.division & " ' , ' " & Me.section & " ' , " & Me.[entité pilotage] & " , " & Me.identifiant & " , ' " & Me.Nom & " ' , " & Me.UP & " , ' " & Me.Prenom & " ' , " & Me.[Agent_Sexe] & " , ' " & Me.Grade & " ' , " & Me.clasniv_grade & " , " & Me.[n°_fonction] & " , ' " & Me.Libelle_fonction & " ' , " & Me.clasniv_fct & " , ' " & Me.[Agent_Statut] & " ' , # " & Me.[Date_naissance] & " # , " & Me.quotite & " )"
End If
If chx = "s" Then
dmcmd.RunSQL "DELETE avril09.* FROM avril09 WHERE identifiant = " & CLng(lst_id.Value)
DoCmd.RunSQL req
End If
DoCmd.Close acForm, "frm_personnel"
End Sub
exemple
je met un points d'arrêts sur la ligne en question je ferme et j'ouvre mon formulaire ( si il n'est pas déjà ouvert) ensuite je remplis mes champs normalement rien ne se passe mais maintenant j'appuie sur le bouton valider ( bouton ou se situe mon code et donc mon points d'arrêts ) maintenant l'ordinateur exécute chaque instruction jusqu'à la ligne de code ou est le point d'arrêt, la le programme s'arrête et la fenêtre de vb s'ouvre tu es directement positionné sur la ligne de code arrêter, tu l'a verra en jaune et la tu pourras passer la souris sur les champs tel que " & Me.quotite & " et tu verra une sorte d'infobule qui te donneras le contenu de ta variable, si il y a ce que tu as rentré c'est déjà très encourageant
maintenant qu'est ce qu'es division dans ta table ta clé?, ou alors tu ne saisie pas la valeur de division dans ton formulaire
je vais me renseigner sur l'erreur
jai insérer des prédicats d'expression dans les listes déroulantes
dmcmd.RunSQL "INSERT INTO avril09(division,section,entité_pilotage,identifiant,UP,Nom,Prenom,Agent_Sexe,Grade,Clasniv_grade,n°_fonction,libelle_fonction,clasniv_fct,Agent_Statut,Date_naissance,quotite) VALUES ('" & Me.division & " ' , ' " & Me.section & " ' , " & Me.[entité pilotage] & " , " & Me.identifiant & " , ' " & Me.Nom & " ' , " & Me.UP & " , ' " & Me.Prenom & " ' , " & Me.[Agent_Sexe] & " , ' " & Me.Grade & " ' , " & Me.clasniv_grade & " , " & Me.[n°_fonction] & " , ' " & Me.Libelle_fonction & " ' , " & Me.clasniv_fct & " , ' " & Me.[Agent_Statut] & " ' , # " & Me.[Date_naissance] & " # , " & Me.quotite & " )"
End If
If chx = "s" Then
dmcmd.RunSQL "DELETE avril09.* FROM avril09 WHERE identifiant = " & CLng(lst_id.Value)
ce n'est pas DoCmd à la place?
- 1
- 2
- 3
- 4
- 5