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

Création table a partir d'une requête en VB Access

3 réponses
Avatar
jorie80
Bonjour,

Mon objectif est de créer une table qui récupère les champs d'une
requête lancée auparavant qui est enregistrée dans le recordset.
Voici comment je procède pour le moment :

je lance ma requête avec un paramètre :

Code:
Sub crea()
Dim parmètre As Integer

paramètre = InputBox("nb")
Call stateQuery("Demande_age", paramètre)


Je crée ma table:

Code:
Dim cnn As New ADODB.Connection

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=J:\MaBase.mdb"

cnn.Execute "CREATE TABLE Table1 (?????? comment faire pour
récupérer les champs de la requête exécutée plus haut ?)"

cnn.Close
Set cnn = Nothing




Mais comment récupérer les champs et les données de mon recordset pour
les insérer dans cette nouvelle table créée ?
Là est mon souci.

Merci de vos précieux conseils
Okto

3 réponses

Avatar
Raymond [mvp]
Bonjour.

Tu récupères le recordsource , tu rajoutes into x avant le from et tu
exécutes ta requête sql construite.

ton recordsource est par exemple: SELECT table1.* FROM table1;
et il doit devenir:
SELECT table1.* INTO tablex FROM table1;

tu fais un replace de "FROM" par "INTO tablex FROM"


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"okto" a écrit dans le message de
news:
Bonjour,

Mon objectif est de créer une table qui récupère les champs d'une
requête lancée auparavant qui est enregistrée dans le recordset.
Voici comment je procède pour le moment :

je lance ma requête avec un paramètre :

Code:
Sub crea()
Dim parmètre As Integer

paramètre = InputBox("nb")
Call stateQuery("Demande_age", paramètre)


Je crée ma table:

Code:
Dim cnn As New ADODB.Connection

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=J:MaBase.mdb"

cnn.Execute "CREATE TABLE Table1 (?????? comment faire pour
récupérer les champs de la requête exécutée plus haut ?)"

cnn.Close
Set cnn = Nothing




Mais comment récupérer les champs et les données de mon recordset pour
les insérer dans cette nouvelle table créée ?
Là est mon souci.

Merci de vos précieux conseils
Okto


Avatar
jorie80
Bonjour Raymond,

Merci de ton post.

Voici ce que donne mon code. Il m'indique une erreur de type "objet
requis" sur la ligne :

CurrebtDb.Execute "SELECT [X Client détail 3 - ENCOURS OPCVM niveau 0
avec niveau 3].* into [dd] from [X Client détail 3 - ENCOURS OPCVM
niveau 0 avec niveau 3]"


Voici mon code :

Function stateQuery(QueryName As String, strParameter As String) As
Recordset
Dim qdState As QueryDef
Dim dbsCurrent As Database
Set dbsCurrent = CurrentDb()
Set qdState = dbsCurrent.QueryDefs(QueryName)
qdState.Parameters("V_DATE_T") = strParameter
Set stateQuery = qdState.OpenRecordset
End Function


Sub Export()
Dim cnn As New ADODB.Connection
Dim DATE_T As String

DATE_T = InputBox("DATE")

'Recordset
Call stateQuery("X Client détail 3 - ENCOURS OPCVM niveau 0 avec
niveau 3",
DATE_T)

'"Vidage" de la requête dans une nouvelle table
CurrebtDb.Execute "SELECT [X Client détail 3 - ENCOURS OPCVM
niveau 0 avec
niveau 3].* into [dd] from [X Client détail 3 - ENCOURS OPCVM
niveau 0 avec
niveau 3]"
End Sub



Merci de votre aide
Okto




"Raymond [mvp]" wrote in message news:...
Bonjour.

Tu récupères le recordsource , tu rajoutes into x avant le from et tu
exécutes ta requête sql construite.

ton recordsource est par exemple: SELECT table1.* FROM table1;
et il doit devenir:
SELECT table1.* INTO tablex FROM table1;

tu fais un replace de "FROM" par "INTO tablex FROM"


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"okto" a écrit dans le message de
news:
Bonjour,

Mon objectif est de créer une table qui récupère les champs d'une
requête lancée auparavant qui est enregistrée dans le recordset.
Voici comment je procède pour le moment :

je lance ma requête avec un paramètre :

Code:
Sub crea()
Dim parmètre As Integer

paramètre = InputBox("nb")
Call stateQuery("Demande_age", paramètre)


Je crée ma table:

Code:
Dim cnn As New ADODB.Connection

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=J:MaBase.mdb"

cnn.Execute "CREATE TABLE Table1 (?????? comment faire pour
récupérer les champs de la requête exécutée plus haut ?)"

cnn.Close
Set cnn = Nothing




Mais comment récupérer les champs et les données de mon recordset pour
les insérer dans cette nouvelle table créée ?
Là est mon souci.

Merci de vos précieux conseils
Okto




Avatar
Pierre CFI [mvp]
si tu as fais un copier coller, fautes de frappe
CurrebtDb.Execute au lieu de currentdb.execute

--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"okto" a écrit dans le message de news:
Bonjour Raymond,

Merci de ton post.

Voici ce que donne mon code. Il m'indique une erreur de type "objet
requis" sur la ligne :

CurrebtDb.Execute "SELECT [X Client détail 3 - ENCOURS OPCVM niveau 0
avec niveau 3].* into [dd] from [X Client détail 3 - ENCOURS OPCVM
niveau 0 avec niveau 3]"


Voici mon code :

Function stateQuery(QueryName As String, strParameter As String) As
Recordset
Dim qdState As QueryDef
Dim dbsCurrent As Database
Set dbsCurrent = CurrentDb()
Set qdState = dbsCurrent.QueryDefs(QueryName)
qdState.Parameters("V_DATE_T") = strParameter
Set stateQuery = qdState.OpenRecordset
End Function


Sub Export()
Dim cnn As New ADODB.Connection
Dim DATE_T As String

DATE_T = InputBox("DATE")

'Recordset
Call stateQuery("X Client détail 3 - ENCOURS OPCVM niveau 0 avec
niveau 3",
DATE_T)

'"Vidage" de la requête dans une nouvelle table
CurrebtDb.Execute "SELECT [X Client détail 3 - ENCOURS OPCVM
niveau 0 avec
niveau 3].* into [dd] from [X Client détail 3 - ENCOURS OPCVM
niveau 0 avec
niveau 3]"
End Sub



Merci de votre aide
Okto




"Raymond [mvp]" wrote in message news:...
Bonjour.

Tu récupères le recordsource , tu rajoutes into x avant le from et tu
exécutes ta requête sql construite.

ton recordsource est par exemple: SELECT table1.* FROM table1;
et il doit devenir:
SELECT table1.* INTO tablex FROM table1;

tu fais un replace de "FROM" par "INTO tablex FROM"


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"okto" a écrit dans le message de
news:
Bonjour,

Mon objectif est de créer une table qui récupère les champs d'une
requête lancée auparavant qui est enregistrée dans le recordset.
Voici comment je procède pour le moment :

je lance ma requête avec un paramètre :

Code:
Sub crea()
Dim parmètre As Integer

paramètre = InputBox("nb")
Call stateQuery("Demande_age", paramètre)


Je crée ma table:

Code:
Dim cnn As New ADODB.Connection

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=J:MaBase.mdb"

cnn.Execute "CREATE TABLE Table1 (?????? comment faire pour
récupérer les champs de la requête exécutée plus haut ?)"

cnn.Close
Set cnn = Nothing




Mais comment récupérer les champs et les données de mon recordset pour
les insérer dans cette nouvelle table créée ?
Là est mon souci.

Merci de vos précieux conseils
Okto