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 18/05/2011, 11h24   #1
Membre régulier
 
Inscription : octobre 2008
Messages : 224
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 224
Points : 76
Points : 76
Par défaut Stocker les requêtes dans une table

Bonjour le forum,

Je commence à avoir beaucoup de requêtes dans mon code, et j'ai voulu m'inspirer du tutoriel de Christophe Warin pour les stocker dans une table (le tutoriel est ici: http://warin.developpez.com/access/requeteparametre/#L8 )

J'ai donc créé un table "tbl_RequetesSQL" avec deux champs: NomRequete (au format texte) et StringSQL (au format Mémo) dans lequel j'ai copié les codes SQL des requêtes qui fonctionnent bien quand je les stocke "en dur" dans mon code VBA.

Ensuite, je vais chercher le code SQL de ma requête avec un DLookup
Code :
strSQL = DLookup("[StringSQL]", "[tbl_RequetesSQL]", "[NomRequete]='qry_tblExemple'")
Si je fais un Debug.Print, je retrouve bien le bon StringSQL. Par contre, si j'ouvre un recordset ADO en faisant:
Code :
Rst.Open strSQL, , adOpenDynamic
j'ai une erreur qui me dit que ma requête SQL n'est pas valide ("blablabla" is not a valid token).

Est-ce que c'est déjà arrivé à quelqu'un? Ou à défaut, est-ce que vous auriez une idée de la raison?
neiluj26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 14h04   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 737
Points : 10 737
Envoyer un message via MSN à jpcheck
salut,

peut-on voir le contenu SQL de la requete en question stp ?
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 14h50   #3
Membre régulier
 
Inscription : octobre 2008
Messages : 224
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 224
Points : 76
Points : 76
Salut,

Oui, voici un exemple. Mais ça ne fonctionne avec aucune des requêtes que j'ai stocké.
Je me suis demandé si ce n'était pas à cause de mes retours à la ligne?

Code SQL :
1
2
3
4
5
"SELECT T_PARTDESC.PDPNUM, T_PARTDESC.PDLANG, STRIP(T_PARTDESC.PDPNUM) CONCAT T_PARTDESC.PDLANG, T_PARTDESC.PDPDES, " _
    & " T_PARTMASTER.PAPDES, T_PARTMASTER.PASCSU, T_PARTMASTER.PAACTF, T_PARTMASTER.PAPCLS " _
    & "FROM TAD.ECDSCP AS T_PARTDESC INNER JOIN TAD.ECARTP AS T_PARTMASTER ON T_PARTDESC.PDPNUM = T_PARTMASTER.PAPNUM " _
    & "WHERE T_PARTDESC.PDCONO ='EC' AND T_PARTMASTER.PASGRP = 'AB23' AND T_PARTDESC.PDPDES <>'' " _
    & "ORDER BY T_PARTDESC.PDPNUM, T_PARTDESC.PDLANG"
neiluj26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 15h19   #4
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 737
Points : 10 737
Envoyer un message via MSN à jpcheck
Je ne connaissais pas
Code SQL :
STRIP(T_PARTDESC.PDPNUM) CONCAT T_PARTDESC.PDLANG
en quoi cela consiste-til ?

la concatenation sous Access se fait plus souvent avec le caractere &
__________________
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 déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 15h36   #5
Membre régulier
 
Inscription : octobre 2008
Messages : 224
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 224
Points : 76
Points : 76
Cela me sert juste à concaténer deux codes. Je veux bien utiliser le & pour essayer, mais je n'ai pas d'erreur quand j'exécute cette requête comme ça.

Les autres requêtes de ma table n'ont pas cette fonction de concaténation, cela dit.
neiluj26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 20h16   #6
pgz
Expert Confirmé Sénior
 
Avatar de pgz
 
Homme Pierre GONZALEZ
Développeur Office VBA
Inscription : août 2005
Messages : 3 412
Détails du profil
Informations personnelles :
Nom : Homme Pierre GONZALEZ
Âge : 58
Localisation : France

Informations professionnelles :
Activité : Développeur Office VBA
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 412
Points : 5 934
Points : 5 934
Bonsoir.

Si ce que tu as montré correspond au contenu de strSQL, ça ne peut pas marcher. Il ne doit plus y avoir les "&", "_", """, ... qui sont des caractères d'assemblage de l'éditeur VB.

Si tu écris sous VBE
Code :
1
2
strSQL = "SELECT T_PARTDESC.PDPNUM, T_PARTDESC.PDLANG, STRIP(T_PARTDESC.PDPNUM) CONCAT T_PARTDESC.PDLANG, T_PARTDESC.PDPDES, " _
    & ...
Dans strSQL tu auras et, à mon avis, c'est ce texte que tu dois enregistrer.

Cordialement,

PGZ
__________________
pluritas non est ponenda sine necessitate - Le rasoir d'Okham
Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon
pgz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 14h02   #7
Membre régulier
 
Inscription : octobre 2008
Messages : 224
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 224
Points : 76
Points : 76
Bonjour pgz,

J'ai corrigé mon texte dont voici le résultat:

Code sql :
SELECT T_PARTDESC.PDPNUM, T_PARTDESC.PDLANG, STRIP(T_PARTDESC.PDPNUM) CONCAT T_PARTDESC.PDLANG, T_PARTDESC.PDPDES, T_PARTMASTER.PAPDES, T_PARTMASTER.PASCSU, T_PARTMASTER.PAACTF, T_PARTMASTER.PAPCLS FROM TAD.ECDSCP AS T_PARTDESC INNER JOIN TAD.ECARTP AS T_PARTMASTER ON T_PARTDESC.PDPNUM = T_PARTMASTER.PAPNUM WHERE T_PARTDESC.PDCONO ='EC' AND T_PARTMASTER.PASGRP = 'AB23' AND T_PARTDESC.PDPDES <>'' ORDER BY T_PARTDESC.PDPNUM, T_PARTDESC.PDLANG

Malheureusement, j'ai toujours une erreur -2147467259

Citation:
SQL0104:Token SELECT T_PARTDESC.PDPNUM, T_P was not valid. Valid tokens: ( END GET SET CALL DROP FREE HOLD...
neiluj26 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2011, 14h34   #8
Membre régulier
 
Inscription : octobre 2008
Messages : 224
Détails du profil
Informations forums :
Inscription : octobre 2008
Messages : 224
Points : 76
Points : 76
Argh, un guillemet se baladait... désolé! C'était effectivement le problème.
neiluj26 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 14h32.


 
 
 
 
Partenaires

Hébergement Web