Pb Access et VB

Résolu/Fermé
Siimon71 Messages postés 25 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 6 septembre 2010 - 22 juin 2009 à 14:36
Siimon71 Messages postés 25 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 6 septembre 2010 - 23 juin 2009 à 09:44
Bonjour,

J'ai un souci avec un insert dans un formulaire access, j'ai l'erreur suivante lorsque je clique sur le bouton qui envoie l'ordre insert :

Erreur d'exécution 3085. Fonction << Forms![Formulaire_Affectation]!liste.Column >> non définie dans l'expression.

Et voici mon code VB qui plante derrière ce bouton :



For Each j In Forms![Formulaire_Affectation]!article.ItemsSelected
        For i = 1 To Forms![Formulaire_Affectation]!liste.ListCount - 1
            SQL = "Select max(id_affectation) from pacom_affectation"
            
            
            DoCmd.RunSQL "INSERT INTO PACOM_AFFECTATION (id_affectation, id_vehicule, id_article, observation) VALUES (" & " 200000 " & " , " & " Forms![Formulaire_Affectation]!liste.Column(0, i)" & ", " & " Forms![Formulaire_Affectation]!article.Column(0, j)" & " ," & " Forms![Formulaire_Affectation]!observation" & " )"
           
        Next i
    Next j
    MsgBox "Base de donnée renseignée."



Et vous pouvez voir aussi que j'essaie de stocker le résultat d'une requete (ici SQL qui est l'id max de id_affectation) dans une variable pour pouvoir l'insérer ensuite dans id_affectation. Mais je n'y arrive pas non plus.


Si quelqu'un peut m'éclairer sa serait vraiment sympathique =)

Mercii
A voir également:

2 réponses

blux Messages postés 26013 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 26 avril 2024 3 289
22 juin 2009 à 16:16
Salut,

Une requête SQL pouvant renvoyer plusieurs lignes de plusieurs colonnes, la syntaxe se doit d'être différente d'une simple affectation de variable. Pour mettre le résultat d'une requête dans une variable, c'est la commande dlookup (avec les paramètres idoines, mais je n'ai jamais testé avec l'aggrégat MAX, donc faut voir...).

Pour la requête UPDATE, je n'ai pas regardé dans le détail, mais il faudrait voir s'il n'est pas obligatoire de mettre des .value à tes zones de saisie, en plus des problèmes de double-quotes doublées (une pour délimiter le string SQL et l'autre pour délimiter les valeurs.

Esaie de passer par une variable string que tu construis pour la passer à ta commande docmd.runsql, et en plus tu pourras l'afficher avant pour voir si elle est correcte, au niveau syntaxe.
0
Siimon71 Messages postés 25 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 6 septembre 2010
23 juin 2009 à 09:44
Voilà j'ai résolu mon problème, c'était juste un problème de syntaxe dans mon insert (les guillemets) :

    For Each j In Forms![Formulaire_Affectation]!article.ItemsSelected
        For i = 1 To Forms![Formulaire_Affectation]!liste.ListCount - 1
            
            DoCmd.RunSQL "INSERT INTO PACOM_AFFECTATION (id_affectation, id_vehicule, id_article, observation) VALUES (200001 , " & "'" & Forms![Formulaire_Affectation]!liste.Column(0, i) & "'" & "," & "'" & Forms![Formulaire_Affectation]!article.Column(0, j) & "'" & "," & "'" & Forms![Formulaire_Affectation]!observation & "')"
            
        Next i
    Next j
    MsgBox "Base de donnée renseignée."


Et pour l'auto-incrémentation j'ai effacer ma table et mis une auto-incrémentation sur le champs voulu et ensuite j'ai recoller le contenu de ma table.

Mercii
0