Commande valider access

sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   -  
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
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!!!
A voir également:

83 réponses

DarkAurora Messages postés 443 Statut Membre 27
 
ton code est bien trop long pour moi, mais voici la solution, il faut tout d'abord détecter l'erreur je te propose de commencer par soit mettre des points d'arrêts soit des msgbox pour savoir ce qu'il y a dans tes variables

une fois l'erreur ciblé on pourras intervenir que mieux au lieu d'en créer, comme cela peut être le cas maintenant
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
je les place ou met point darret ou msgbox
car les probleme vient certainement de ma requete
0
DarkAurora Messages postés 443 Statut Membre 27
 
déjà un problème la dessus

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
0
DarkAurora Messages postés 443 Statut Membre 27
 
si le problème viendrais de ta requête tu aurais sûrement un message d'erreur mais il y a un cas ou ce ne marche pas comme ça c'est vrai

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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
je pense que ces instructions ne me servent plus.en faite jai une liste déroulante lst_id lorsque je clique dessus toutes les informations concernant les personnes se remplissent . je peux ainsi modifier supprimer des informations
cest la qu intervient le bouton valider dont mon code est faux
0
DarkAurora Messages postés 443 Statut Membre 27
 
il me faut impérativement les valeurs que tu rentre dans tes champs, a savoir si tu rentre des chaînes de caractère ou un format date ect

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
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
cest que du texte ou des nombres
date de naissace cest type date
quotité sexe up entite pilotage cest du nombre le reste du texte
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
si tu veux je tenvoi mon formulaire par mail
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
0
DarkAurora Messages postés 443 Statut Membre 27
 
nan c'est pas la peine merci je vais t'expliquer la syntaxe est très rigoureuse dans un "insert to" et en plus il faut ajouter des cochoneries

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
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
merci je vais essayé , quand tu me dis des points d'arret tu veux dire quoi?
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
c'est value ou values? certains dise value
0
DarkAurora Messages postés 443 Statut Membre 27
 
que je t'explique mon enfant (:)) quand je dit values c'est pour me la péter je devrais dire valeur, par contre quand je dis values c'est que ça correspond à VALUES de ton insert to, la dedans il y a tout tes items comme une zone de texte ou liste déroulante et que sais je encore. bref le problème est que tu a une erreur mais que rien ne s'affiche pour te l'indiquer donc cela peut venir de ta syntaxe de ton insert to

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
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
jai changé comme tu m'as dit jai mis un point d'arret sur la ligne de ma commande mais tj rien ne se passe
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
0
DarkAurora Messages postés 443 Statut Membre 27
 
autant pour moi j'ai oublié de te donner une explication essentielle , lorsque tu passe ton curseur sur une variable tu peux voir ce qu'elle contiens

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
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
il me met erreur de compilation , argument non facultatif
et il me surligne division du values
0
DarkAurora Messages postés 443 Statut Membre 27
 
alors déjà il y a une anomalie car au niveau du champ up correspond la valeur de nom et au niveau du champ nom correspond la valeur de up

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
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
Pourtant ma requete fonctionnait parfaitement hier avant que je modifie certains cahmp du formulaire
jai insérer des prédicats d'expression dans les listes déroulantes
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
c'est l'identifiant qui est la clé primaire , la division est un champ de type texte
0
DarkAurora Messages postés 443 Statut Membre 27
 
un truc con mais

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?
0
sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   43
 
j'avais deja corriger cette erreur qui est revenu je ne sais pa scomment bref jai corrigé jai testé et sa ne marche toujours pas la modification n'est pas prise en compte dans ma base de donnée
0