Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
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 31/01/2011, 17h08   #1
Invité régulier
 
Inscription : mai 2008
Messages : 27
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 27
Points : 8
Points : 8
Par défaut Comment définir un nom de table sous forme d'une variable ?

Bonjour,

Je souhâite creer une table avec une instruction SQL, dont les données proviennent d'une table dont le nom serait fournis par une variable.
J'ai fait différents essais sans succés. Voici mon code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 Function influtab(nomt As String, influ As String)
Dim MonSql As String
Dim MaDB As Database
Set MaDB = CurrentDb()
 
 
MonSql = "SELECT * INTO INFLXXZZZZN FROM " & nomt &" WHERE champ1 =" & influ & ";"
 
MaDB.Execute MonSql
MaDB.Close
 
End Function
J'ai un message concernant FROM.
Y a t'il une solution ???

J'ai essayé également aprés FROM: & nomt " IN 'C:\devis.accdb ' "
mais j'ai un message sur 'C:\DEVIS.accdb ' qu'access considère comme un paramètre.
Inutile de préciser que je suis débutant ! Merci pour toute suggestion.
JPJOLY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 08h17   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 607
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 607
Points : 30 955
Points : 30 955
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il faut que ton nom de table soit mit par concaténation :

Code :
MonSql = "SELECT * INTO " & nomtable & " FROM " & nomt &" WHERE champ1 =" & influ & ";"
nomtable est une variable comportant le nom de ta table.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 09h44   #3
Invité régulier
 
Inscription : mai 2008
Messages : 27
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 27
Points : 8
Points : 8
Par défaut Ca marche...à moitié !

Merci pour la réponse.

J'ai essayé la solution proposée. Je prends bien en compte le paramètre nomTN pour le nom de la table à créer. Par contre le paramètre nomt pour la table source n'est pas accepté. J'ai le message suivant:
ERREUR EXECUTION 3131
ERREUR DE SYNTAXE DANS LA CLAUSE FROM

J'ai défini NomTN et nomt comme string. Est ce bien la solution pour nomt ?
JPJOLY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 09h52   #4
Membre éprouvé
 
Homme
Inscription : octobre 2007
Messages : 324
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2007
Messages : 324
Points : 440
Points : 440
Es-ce que ça marche si tu enlève la clause Where déjà? Es-ce que nomt est une table existante?
Psychopathe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 21h57   #5
Invité régulier
 
Inscription : mai 2008
Messages : 27
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 27
Points : 8
Points : 8
Par défaut Petit à petit...

Tout d'abord merci de votre aide.

En réponse à votre message, en enlevant la clause WHERE....ça marche !
Je copie alors la totalité de la table ..bien sur !

VOICI MON CODE:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function influtab()
Dim MonSql As String
Dim MaDB As Database
Set MaDB = CurrentDb()
Dim nomTN As String
Dim nomT As String
Dim nomX
nomTN = "INFLXXZZZZN"
nomT = "INFLU544033N"
nomX = "532"
 
MonSql = "SELECT * INTO " & nomTN & " FROM " & nomT & "WHERE  Champ1 = " & nomX & ";"
 
MaDB.Execute MonSql
MaDB.Close
 
End Function
Donc avec:
Code :
MonSql = "SELECT * INTO " & nomTN & " FROM " & nomT & "WHERE Champ1 = " & nomX & ";
"

erreur 3131
erreur de syntaxe dans la clause FROM

MAIS AVEC:
Code :
1
2
 
MonSql = "SELECT * INTO " & nomTN & " FROM " & nomT  & ";"
TOUT EST OK ...mais je copie la table entière !!

Une idée ? J'ai vérifié Champ1 existe bien et rigoureusement sous le syntaxe indiquée.
JPJOLY est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 22h16   #6
Invité régulier
 
Inscription : mai 2008
Messages : 27
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 27
Points : 8
Points : 8
Par défaut EUREKA


J'ai trouvé dans mon SQL il manquait un 'blanc' avant WHERE !

SQL MAUVAIS:
Code :
MonSql = "SELECT * INTO " & nomTN & " FROM " & nomT & "WHERE Champ1 = " & nomX & ";"
=======

SQL BON
Code :
MonSql = "SELECT * INTO " & nomTN & " FROM " & nomT & "  WHERE Champ1 = " & nomX & ";"                                                       =====
Avec toutes mes excuses et mes remerciements à tout ceux qui ont perdu leur temps à cause d'une erreur aussi idiote.
JPJOLY 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 06h50.


 
 
 
 
Partenaires

Hébergement Web