Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/01/2012, 16h31   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 10
Points : 10
Par défaut INSERT INTO en VBA

Bonjour à tous,

Voilà, dans un projet, j'essaye de faire une requête action de type INSERT, mais j'ai une erreur d’Exécution "3219" : Opération Non Valide.

Voici mon code d'insertion :

Code :
1
2
3
Dim Req_Insert As DAO.Recordset
                Set Req_Insert = ACCESS_insert("INSERT INTO CHOIX([NUMERO_QCM],[NUMERO_QUESTION],[NUMERO_PROPOSITION], [ID_ENREGISTREMENT],[SELECTIONNE]) 
                   Values (" & Num_QCM & "," & num_quest & "," & num_prop1 & ",1,1);")
La fonction ACCESS_insert :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Public Function ACCESS_insert(requete As String) As DAO.Recordset
 
    Dim db As DAO.Database, rst As DAO.Recordset
    Dim sSQL As String
    ' Ouverture de la base de données
    Set db = CurrentDb
    sSQL = requete
    ' Ouverture du recordset
    Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly)
 
 
    Set ACCESS_insert = rst
    ' Fermeture du Recordset
    'rst.Close
 
End Function
Voilà, j'ai vérifié les variables num_QCM, etc, elles sont ok, la requête marche par ailleurs quand je l'éxécute sur ACCESS, mais en VBA, pas moyen.
mes requête de sélection fonctionnent en rajoutant l'option dbReadOnly que j'ai retiré ici sur la fonction (OpenRecordset)

J'ai recherché plusieurs heures, et je n'arrive pas à résoudre mon problème, j'en fais donc appel à votre compétence,

Merci d'avance,
0_Azerty_0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2012, 16h38   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 874
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 874
Points : 10 742
Points : 10 742
Envoyer un message via MSN à jpcheck
hello,

il faut revoir l'utilisation des fonctions selon leur attitude vis a vis des données.

Ici tu souhaites réaliser une requete dite Action, c'est a dire qui ajoute/supprime/met à jour les données dans la base.
Aussi, la fonction Openrecordset n'est pas la bonne. Il faut partir sur :
- Docmd.RunSQL
- CurrentDb.Execute
par exemple
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/01/2012, 17h08   #3
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : novembre 2011
Messages : 33
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2011
Messages : 33
Points : 10
Points : 10
Bonjour,

Merci beaucoup, tu avais raison.
Je ne suis pas familier du langage et en fait, c'est évident !

pour les intéressés, voici donc la fonction d'insertion ) laquelle on passe en paramètre la requête SQL :
Code :
1
2
3
4
5
6
7
 
Public Function ACCESS_insert(requete As String) As DAO.Recordset
 
    ' Execution de la requete d'insertion
    DoCmd.RunSQL requete
 
End Function

Bien sur, une telle fonction est facultative.

Encore merci
0_Azerty_0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h57.


 
 
 
 
Partenaires

Hébergement Web