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!!!
Configuration: Windows XP Internet Explorer 6.0

83 réponses

  • 1
  • 2
  • 3
  • 4
  • 5
Résumé de la discussion

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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. 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
  2. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    je les place ou met point darret ou msgbox
    car les probleme vient certainement de ma requete
    0
  3. 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
  7. 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
  8. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
  9. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
  10. 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
  11. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    merci je vais essayé , quand tu me dis des points d'arret tu veux dire quoi?
    0
  12. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    c'est value ou values? certains dise value
    0
  13. 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
  14. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
  15. 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
  16. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    il me met erreur de compilation , argument non facultatif
    et il me surligne division du values
    0
  17. 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
  18. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
  19. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    c'est l'identifiant qui est la clé primaire , la division est un champ de type texte
    0
  20. 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
  21. sya21 Messages postés 426 Date d'inscription   Statut Membre Dernière intervention   44
     
    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
  • 1
  • 2
  • 3
  • 4
  • 5