Pb Access et VB

Résolu
Siimon71 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
Siimon71 Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -
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 27100 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
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   Statut Membre Dernière intervention  
 
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