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

Requête SQL en VBA

5 réponses
Avatar
RENAUD Eric
Bonjour,

Je souhaite effectuer une requête SQL sous VBA.

Celle qui suit fonctionne (DELETE)
Dim SQL As String
SQL = "DELETE [Réfs contrat Airbus].* " & _
"FROM [Réfs contrat Airbus]"
DoCmd.RunSQL SQL

J'en ai crée une seconde à l'identique avec SELECT
Dim SQL As String
SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi OF-ZPP11].Gestionnaire " & _
"FROM [Suivi OF-ZPP11]"
DoCmd.RunSQL SQL
Cette fois j'ai un message
Une action ExecuterSQL nécessite un argument consistant en une instruction
SQL
Pourquoi ?

5 réponses

Avatar
Michel__D
Bonjour,

"RENAUD Eric" <erenaud(retirerceci)@hotmail.fr> a écrit dans le message de news:
Bonjour,

Je souhaite effectuer une requête SQL sous VBA.

Celle qui suit fonctionne (DELETE)
Dim SQL As String
SQL = "DELETE [Réfs contrat Airbus].* " & _
"FROM [Réfs contrat Airbus]"
DoCmd.RunSQL SQL

J'en ai crée une seconde à l'identique avec SELECT
Dim SQL As String
SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi OF-ZPP11].Gestionnaire " & _
"FROM [Suivi OF-ZPP11]"
DoCmd.RunSQL SQL
Cette fois j'ai un message
Une action ExecuterSQL nécessite un argument consistant en une instruction
SQL
Pourquoi ?



Que cherche-tu as faire ?

PS:Une requête selection sert à renvoyer un jeu d'enregistrements et le code
utilisé n'est pas approprié.
Avatar
RENAUD Eric
Bonjour,
J'ai quelque peu avancé.
On m'a dit que la commande ExecuteSQL ne s'applique qu'aux requêtes Action.
J'ai modifié mon code

Dim SQL As String
Dim rs As Recordset

SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi OF-ZPP11].[Gestionnaire]
" & _
"FROM [Suivi OF-ZPP11]"
Set Db = CurrentDb()
Set rs = CurrentDb.OpenRecordset(SQL)

et là je sais qu'il fonctionne car j'ai fait un test avec le code suivant
pour voir dans la fen^tre d'exécution
With rs
Do While Not .EOF
Debug.Print , .Fields(0), .Fields(1)
.MoveNext
Loop
End With

Par contre je ne sais pas comment afficher le recordset comme je le ferais
avec une requête Sélection standard
D'avance merci


"Michel__D" a écrit dans le message de
news: ge9fee$gan$
Bonjour,

"RENAUD Eric" <erenaud(retirerceci)@hotmail.fr> a écrit dans le message de
news:
Bonjour,

Je souhaite effectuer une requête SQL sous VBA.

Celle qui suit fonctionne (DELETE)
Dim SQL As String
SQL = "DELETE [Réfs contrat Airbus].* " & _
"FROM [Réfs contrat Airbus]"
DoCmd.RunSQL SQL

J'en ai crée une seconde à l'identique avec SELECT
Dim SQL As String
SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi OF-ZPP11].Gestionnaire " &
_
"FROM [Suivi OF-ZPP11]"
DoCmd.RunSQL SQL
Cette fois j'ai un message
Une action ExecuterSQL nécessite un argument consistant en une
instruction
SQL
Pourquoi ?



Que cherche-tu as faire ?

PS:Une requête selection sert à renvoyer un jeu d'enregistrements et le
code
utilisé n'est pas approprié.



Avatar
Michel__D
re,

Essaye avec ce qui suit.

SQL = "SELECT [N° OF], [Gestionnaire] FROM [Suivi OF-ZPP11];"
Set oQry = CurrentDb().CreateQueryDef("rQryTmp", SQL)
DoCmd.OpenQuery "rQryTmp"


"RENAUD Eric" <erenaud(retirerceci)@hotmail.fr> a écrit dans le message de news:Oe61%
Bonjour,
J'ai quelque peu avancé.
On m'a dit que la commande ExecuteSQL ne s'applique qu'aux requêtes Action.
J'ai modifié mon code

Dim SQL As String
Dim rs As Recordset

SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi OF-ZPP11].[Gestionnaire]
" & _
"FROM [Suivi OF-ZPP11]"
Set Db = CurrentDb()
Set rs = CurrentDb.OpenRecordset(SQL)

et là je sais qu'il fonctionne car j'ai fait un test avec le code suivant
pour voir dans la fen^tre d'exécution
With rs
Do While Not .EOF
Debug.Print , .Fields(0), .Fields(1)
.MoveNext
Loop
End With

Par contre je ne sais pas comment afficher le recordset comme je le ferais
avec une requête Sélection standard
D'avance merci


"Michel__D" a écrit dans le message de
news: ge9fee$gan$
> Bonjour,
>
> "RENAUD Eric" <erenaud(retirerceci)@hotmail.fr> a écrit dans le message de
> news:
>> Bonjour,
>>
>> Je souhaite effectuer une requête SQL sous VBA.
>>
>> Celle qui suit fonctionne (DELETE)
>> Dim SQL As String
>> SQL = "DELETE [Réfs contrat Airbus].* " & _
>> "FROM [Réfs contrat Airbus]"
>> DoCmd.RunSQL SQL
>>
>> J'en ai crée une seconde à l'identique avec SELECT
>> Dim SQL As String
>> SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi OF-ZPP11].Gestionnaire " &
>> _
>> "FROM [Suivi OF-ZPP11]"
>> DoCmd.RunSQL SQL
>> Cette fois j'ai un message
>> Une action ExecuterSQL nécessite un argument consistant en une
>> instruction
>> SQL
>> Pourquoi ?
>
> Que cherche-tu as faire ?
>
> PS:Une requête selection sert à renvoyer un jeu d'enregistrements et le
> code
> utilisé n'est pas approprié.
>




Avatar
RENAUD Eric
Bonjour,
C'est super, ça fonctionne.
J'ai rajouté au début le code
Db.Execute ("DROP TABLE rQryTmp")
pour effacer la table rQRYTmp
Encore merci

"Michel__D" a écrit dans le message de
news: ge9n00$if7$
re,

Essaye avec ce qui suit.

SQL = "SELECT [N° OF], [Gestionnaire] FROM [Suivi OF-ZPP11];"
Set oQry = CurrentDb().CreateQueryDef("rQryTmp", SQL)
DoCmd.OpenQuery "rQryTmp"


"RENAUD Eric" <erenaud(retirerceci)@hotmail.fr> a écrit dans le message de
news:Oe61%
Bonjour,
J'ai quelque peu avancé.
On m'a dit que la commande ExecuteSQL ne s'applique qu'aux requêtes
Action.
J'ai modifié mon code

Dim SQL As String
Dim rs As Recordset

SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi
OF-ZPP11].[Gestionnaire]
" & _
"FROM [Suivi OF-ZPP11]"
Set Db = CurrentDb()
Set rs = CurrentDb.OpenRecordset(SQL)

et là je sais qu'il fonctionne car j'ai fait un test avec le code suivant
pour voir dans la fen^tre d'exécution
With rs
Do While Not .EOF
Debug.Print , .Fields(0), .Fields(1)
.MoveNext
Loop
End With

Par contre je ne sais pas comment afficher le recordset comme je le
ferais
avec une requête Sélection standard
D'avance merci


"Michel__D" a écrit dans le message
de
news: ge9fee$gan$
> Bonjour,
>
> "RENAUD Eric" <erenaud(retirerceci)@hotmail.fr> a écrit dans le message
> de
> news:
>> Bonjour,
>>
>> Je souhaite effectuer une requête SQL sous VBA.
>>
>> Celle qui suit fonctionne (DELETE)
>> Dim SQL As String
>> SQL = "DELETE [Réfs contrat Airbus].* " & _
>> "FROM [Réfs contrat Airbus]"
>> DoCmd.RunSQL SQL
>>
>> J'en ai crée une seconde à l'identique avec SELECT
>> Dim SQL As String
>> SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi OF-ZPP11].Gestionnaire
>> " &
>> _
>> "FROM [Suivi OF-ZPP11]"
>> DoCmd.RunSQL SQL
>> Cette fois j'ai un message
>> Une action ExecuterSQL nécessite un argument consistant en une
>> instruction
>> SQL
>> Pourquoi ?
>
> Que cherche-tu as faire ?
>
> PS:Une requête selection sert à renvoyer un jeu d'enregistrements et le
> code
> utilisé n'est pas approprié.
>







Avatar
Michel__D
Si la requête existe déja au lieu de la supprimer et de la recréer, on peut utiliser ceci :

SQL = "SELECT [N° OF], [Gestionnaire] FROM [Suivi OF-ZPP11];"
Set oQry = CurrentDb().QueryDefs("rQryTmp")
oQry.SQL = SQL
DoCmd.OpenQuery "rQryTmp"
Set oQry = Nothing


"RENAUD Eric" <erenaud(retirerceci)@hotmail.fr> a écrit dans le message de news:%
Bonjour,
C'est super, ça fonctionne.
J'ai rajouté au début le code
Db.Execute ("DROP TABLE rQryTmp")
pour effacer la table rQRYTmp
Encore merci

"Michel__D" a écrit dans le message de
news: ge9n00$if7$
> re,
>
> Essaye avec ce qui suit.
>
> SQL = "SELECT [N° OF], [Gestionnaire] FROM [Suivi OF-ZPP11];"
> Set oQry = CurrentDb().CreateQueryDef("rQryTmp", SQL)
> DoCmd.OpenQuery "rQryTmp"
>
>
> "RENAUD Eric" <erenaud(retirerceci)@hotmail.fr> a écrit dans le message de
> news:Oe61%
>> Bonjour,
>> J'ai quelque peu avancé.
>> On m'a dit que la commande ExecuteSQL ne s'applique qu'aux requêtes
>> Action.
>> J'ai modifié mon code
>>
>> Dim SQL As String
>> Dim rs As Recordset
>>
>> SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi
>> OF-ZPP11].[Gestionnaire]
>> " & _
>> "FROM [Suivi OF-ZPP11]"
>> Set Db = CurrentDb()
>> Set rs = CurrentDb.OpenRecordset(SQL)
>>
>> et là je sais qu'il fonctionne car j'ai fait un test avec le code suivant
>> pour voir dans la fen^tre d'exécution
>> With rs
>> Do While Not .EOF
>> Debug.Print , .Fields(0), .Fields(1)
>> .MoveNext
>> Loop
>> End With
>>
>> Par contre je ne sais pas comment afficher le recordset comme je le
>> ferais
>> avec une requête Sélection standard
>> D'avance merci
>>
>>
>> "Michel__D" a écrit dans le message
>> de
>> news: ge9fee$gan$
>> > Bonjour,
>> >
>> > "RENAUD Eric" <erenaud(retirerceci)@hotmail.fr> a écrit dans le message
>> > de
>> > news:
>> >> Bonjour,
>> >>
>> >> Je souhaite effectuer une requête SQL sous VBA.
>> >>
>> >> Celle qui suit fonctionne (DELETE)
>> >> Dim SQL As String
>> >> SQL = "DELETE [Réfs contrat Airbus].* " & _
>> >> "FROM [Réfs contrat Airbus]"
>> >> DoCmd.RunSQL SQL
>> >>
>> >> J'en ai crée une seconde à l'identique avec SELECT
>> >> Dim SQL As String
>> >> SQL = "SELECT [Suivi OF-ZPP11].[N° OF], [Suivi OF-ZPP11].Gestionnaire
>> >> " &
>> >> _
>> >> "FROM [Suivi OF-ZPP11]"
>> >> DoCmd.RunSQL SQL
>> >> Cette fois j'ai un message
>> >> Une action ExecuterSQL nécessite un argument consistant en une
>> >> instruction
>> >> SQL
>> >> Pourquoi ?
>> >
>> > Que cherche-tu as faire ?
>> >
>> > PS:Une requête selection sert à renvoyer un jeu d'enregistrements et le
>> > code
>> > utilisé n'est pas approprié.
>> >
>>
>>
>