Téléchargement
illégal
Posez votre question Signaler

Pb Access et VB [Résolu]

Siimon71 21Messages postés 22 juin 2009Date d'inscription 6 septembre 2010Dernière intervention - Dernière réponse le 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
Lire la suite 

Pb Access et VB »

2 réponses
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « Pb Access et VB » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?