Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Comment exécuter une requete Selection en VBA ?

7 réponses
Avatar
debdrai
Hello,

J'ai un peu progressé depuis ma derniere question sur les requetes,
jusqu'à obtenir une erreur 2342 "Une action Executer SQL necessite un
argumant consistant en une instruction SQL" en essayant de l'éxécuter.
Plusieurs d'entre vous on écrit dans le forum que c'est parce que
l'instruction DoCmd.RunSQL SQL
ne permet d'éxécuter que les requetes Action, pas Selection.

Quelqu'un aurait-il le code pour éxécuter une requete selection ?

Merci beaucoup. Deb

7 réponses

Avatar
Alain TEYSSEDRE
Bonjour

Pour visualiser le code d'une requete SQL et te familiariser avec ce code,
il te suffit de creer une
requete en mode QBE 'Query by exemple° sous ACCESS (tu as même un assitant
pour t'aider)
puis une fois ta requete crée tu te met en mode "Modifier" et tu
sélectionnes:
Affichage ---> Mode SQL et la tu verras apparaitre le code SQL dans la
fenetre de requete

@+
Alain

"La p'tite Deb" a écrit dans le message de
news:
Hello,

J'ai un peu progressé depuis ma derniere question sur les requetes,
jusqu'à obtenir une erreur 2342 "Une action Executer SQL necessite un
argumant consistant en une instruction SQL" en essayant de l'éxécuter.
Plusieurs d'entre vous on écrit dans le forum que c'est parce que
l'instruction DoCmd.RunSQL SQL
ne permet d'éxécuter que les requetes Action, pas Selection.

Quelqu'un aurait-il le code pour éxécuter une requete selection ?

Merci beaucoup. Deb


Avatar
Jean
Tu peux faire comme ça :(Access 2000 et +). Code à placer
dans une procédure. Le contenu de StrSql est un exemple.

Dim Dtbase as dao.database, StrSql as string

StrSql="DELETE * FROM TbleClients WHERE Code='Toto';"

Set dtbase=currentdb()

dtbase.execute(strsql)

dtbase.close

A+ Jean.
Avatar
Raymond [mvp]
Bonjour.
tu as deux solutions:
soit tu fais un:
DoCmd.OpenQuery "requeenregistrée"
et t'affiches la requête à l'écran

soit tu fais ceci:
Dim Db As DAO.Database
Dim Rs As DAO.Recordset
Set Db = CurrentDb
Set Rs = Db.OpenRecordset("select * from table1")
Do Until Rs.EOF
Debug.Print Rs!Numero
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
Set Db = Nothing
et tu peux faire tout ce que tu veux avec ce recordset

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"La p'tite Deb" a écrit dans le message de
news:
Hello,

J'ai un peu progressé depuis ma derniere question sur les requetes,
jusqu'à obtenir une erreur 2342 "Une action Executer SQL necessite un
argumant consistant en une instruction SQL" en essayant de l'éxécuter.
Plusieurs d'entre vous on écrit dans le forum que c'est parce que
l'instruction DoCmd.RunSQL SQL
ne permet d'éxécuter que les requetes Action, pas Selection.

Quelqu'un aurait-il le code pour éxécuter une requete selection ?

Merci beaucoup. Deb


Avatar
debdrai
Salut et merci à tous d'avoir pris le temps de me répondre,

Malheureusement, ca ne marche pas. J'ai essayé les deux solutions de
Raymond: dans le second cas, ça m'affiche: "erreur d'exécution 3061
Trop peu de paramètres. 2 attendu ". Et quand j'essaie le "OpenQuery",
ça marche mais ça m'affiche une boite de texte dans le lequel l'usager
doit taper à la main le nom cherché au lieu de le lire directement
dans ma liste de choix.

Raymond, peux-tu jeter un coup d'oeil à ma requete (calqué sur la
tienne) pour voir si tu comprends l'erreur ? La voici


Dim StrSql As String
Dim strchoix As String
Dim Db As DAO.Database
Dim Rs As DAO.Recordset

strchoix = lstFichier

Set Db = CurrentDb
Set Rs = Db.OpenRecordset("SELECT tblLIDAR.* FROM tblLIDAR WHERE
Fichier.tblLIDAR = strchoix")
Do Until Rs.EOF
Debug.Print Rs!Numero
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
Set Db = Nothing


Merci encore. Deb
Avatar
Raymond [mvp]
RE.
Set Rs = Db.OpenRecordset("SELECT tblLIDAR.* FROM tblLIDAR WHERE
Fichier.tblLIDAR ='" & strchoix & "'")
strchoix éant alpha il faut des '

Fichier.tblLIDAR c'est quoi ?

je préfère:
Dim Msg as string
Msg = "SELECT tblLIDAR.* FROM tblLIDAR WHERE Fichier.tblLIDAR ='" & strchoix
& "'"
Set Rs = Db.OpenRecordset(Msg)
etc.....
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"La p'tite Deb" a écrit dans le message de
news:
Salut et merci à tous d'avoir pris le temps de me répondre,

Malheureusement, ca ne marche pas. J'ai essayé les deux solutions de
Raymond: dans le second cas, ça m'affiche: "erreur d'exécution 3061
Trop peu de paramètres. 2 attendu ". Et quand j'essaie le "OpenQuery",
ça marche mais ça m'affiche une boite de texte dans le lequel l'usager
doit taper à la main le nom cherché au lieu de le lire directement
dans ma liste de choix.

Raymond, peux-tu jeter un coup d'oeil à ma requete (calqué sur la
tienne) pour voir si tu comprends l'erreur ? La voici


Dim StrSql As String
Dim strchoix As String
Dim Db As DAO.Database
Dim Rs As DAO.Recordset

strchoix = lstFichier

Set Db = CurrentDb
Set Rs = Db.OpenRecordset("SELECT tblLIDAR.* FROM tblLIDAR WHERE
Fichier.tblLIDAR = strchoix")
Do Until Rs.EOF
Debug.Print Rs!Numero
Rs.MoveNext
Loop
Rs.Close
Set Rs = Nothing
Set Db = Nothing


Merci encore. Deb


Avatar
debdrai
Re-bonjour

J'ai finalement réussi à exécuter ma requete d'ajout dans la table.
Mon probleme est que la liste attachée à la table refuse de se mettre
à jour si je n'ai pas d'abord fermé puis réouvert le formulaire.
Pourtant, j'ai bien ajouté l'instruction "Maliste.Requery" juste après
l'exécution de ma requete.

Quelqu'un a-t-il une idée ?

Merci. Deb
Avatar
Raymond [mvp]
ce qui voudrait dire que le requery s'exécute avant la fin de la mise à jour
de la table ?
la table ne serait-elle pas ouverte par ailleurs ?
normalement, ce que tu as mis doit suffire pour régénérer la liste.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour une meilleure
efficacité de tes interventions sur MPFA


"La p'tite Deb" a écrit dans le message de
news:
Re-bonjour

J'ai finalement réussi à exécuter ma requete d'ajout dans la table.
Mon probleme est que la liste attachée à la table refuse de se mettre
à jour si je n'ai pas d'abord fermé puis réouvert le formulaire.
Pourtant, j'ai bien ajouté l'instruction "Maliste.Requery" juste après
l'exécution de ma requete.

Quelqu'un a-t-il une idée ?

Merci. Deb