Pbs requête SQL

Résolu
fraysco Messages postés 1 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 27 février 2007 - 27 févr. 2007 à 14:15
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 27 févr. 2007 à 20:15
Bonjour,
J'ai créer une requête afin de récupérer des données sur mon tableau Excel mais j'ai l'erreure "Attendu : fin d'instruction" sur la première parenthèse fermante de ma reqète.
Pouvez vous m'aidez s'il vous plait car je ne vois pas d'où viens le pb.
Merci.

Voici la requête :
 SQL = "SELECT * FROM [" & Feuille & "$] _
    WHERE (([Demande] = "'Modernisation *'" OR [Demande] = "'Enlèvement *'" OR [Demande] = "'TELEPHONE FIXE IP'" _
    [Demande] = "'Restitution*'"OR[Demande] = "'Dotation *'"OR[Demande] = "'POSTE *'"OR[Demande] = "'* PDA *'") _
    AND([Tache en cours] = "'Validation Hiérarchique N+1'"OR[Tache en cours] = "'Validation Technico-Fonctionnelle'" _
    [Tache en cours] = "'Validation Budgetaire'"OR[Tache en cours])"'Validation Budgétaire'") _
    AND([Site beneficiaire] = "'NOV'"OR[Site beneficiaire] = "'AJJ'"OR[Site beneficiaire] = "'EQV'"OR _
    [Site beneficiaire] = "'K22'"OR[Site beneficiaire] = "'PBK'"OR[Site beneficiaire] = "'QLG'"OR _
    [Site beneficiaire] = "'PDS'"OR[Site beneficiaire] = "'S44'"OR[Site beneficiaire] = "'S79'"OR _
    [Site beneficiaire] = "'Q10'"OR[Site beneficiaire] = "'SQY'"OR[Site beneficiaire] = "'TPZ'"))"<!-- END TEMPLATE: bbcode_code --><!-- / message -->

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
27 févr. 2007 à 20:15
Salut
Sous SQL :
+ La recherche plutiple ne se fait pas avec des * mais des %
+ Si tu utilises ce genre de recherche, ce n'est pas = mais Like qu'il faut utiliser
+ Attention à la gestion des OR et des AND dans une même requète  Il y a des priorités et ton résultat ne sera surement pas celui escompté --> Utilise des parenthèses
+ Je ne crois pas que la rupture de ligne avec le symbole _ soit accepté sous SQL (only sous VB). Il te faut donc fermer les " puis les réouvrir à la ligne suivante. De plus, _ ne peut s'utiliser qu'après un &
+ Après TELEPHONE FIXE IP, il manque un OR
+ Toujours mettre un espace devant et derrière les mots clé comme OR (voir "'Dotation *'"OR[Demande] = ... et suivants)
+ Dans "OR[Tache en cours])"'Validation Budgétaire'", manque le =
+ Après écriture de ta formule, recompte le nombre de parenthèses ( et ) : Il doit y en avoir un nombre pair
+ Simplifie grace à la fonction IN :

Ca devrait donner ceci :

SQL = "SELECT * FROM [" & Feuille & "$] " &  _
      " WHERE (   [Demande] Like 'Modernisation %'" & _
      "        OR [Demande] Like 'Enlèvement %'" & _
      "        OR [Demande] = 'TELEPHONE FIXE IP'" & _
      "        OR [Demande] Like 'Restitution%'" & _
      "        OR [Demande] Like 'Dotation %'" & _
      "        OR [Demande] Like 'POSTE %'" & _
      "        OR [Demande] Like '% PDA %')" & _
      "       AND [Tache en cours] In ('Validation Hiérarchique N+1', " & _
                                      "'Validation Technico-Fonctionnelle', " & _
                                      "'Validation Budgetaire', " & _
                                      "'Validation Budgétaire')" & _
      "       AND [Site beneficiaire] In ('NOV', 'AJJ', 'EQV', 'K22', 'PBK', " & _
                                         "'QLG', 'PDS', 'S44', 'S79', 'Q10', " & _
                                         "'SQY', 'TPZ')"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
Sytchev3 Messages postés 89 Date d'inscription jeudi 17 mars 2005 Statut Membre Dernière intervention 26 avril 2012
27 févr. 2007 à 15:44
Essaye sans les parenthèses :

SELECT * FROM [" & Feuille & "$] WHERE
[Demande] = "'Modernisation *'"
OR [Demande] = "'Enlèvement *'"
OR [Demande] = "'TELEPHONE FIXE IP'"
OR [Demande] = "'Restitution*'"
OR [Demande] = "'Dotation *'"
OR [Demande] = "'POSTE *'"
OR [Demande] = "'* PDA *'"
AND [Tache en cours] = "'Validation Hiérarchique N+1'"
OR [Tache en cours] = "'Validation Technico-Fonctionnelle'"
AND [Tache en cours] = "'Validation Budgetaire'"
OR [Tache en cours]="'Validation Budgétaire'"
AND [Site beneficiaire] = "'NOV'"
OR [Site beneficiaire] = "'AJJ'"
OR [Site beneficiaire] = "'EQV'"
OR [Site beneficiaire] = "'K22'"
OR [Site beneficiaire] = "'PBK'"
OR [Site beneficiaire] = "'QLG'"
OR [Site beneficiaire] = "'PDS'"
OR [Site beneficiaire] = "'S44'"
OR [Site beneficiaire] = "'S79'"
OR [Site beneficiaire] = "'Q10'"
OR [Site beneficiaire] = "'SQY'"
OR [Site beneficiaire] = "'TPZ'"

mon analyseur de requêtes me dit qu'il n'y a pas d'erreur.
Par contre quand tu mets une valeur en dur (sans passer par une variable par exemple) dans ta requête du style [Site beneficiaire] = "'TPZ'" tu n'est pas obligé de mettre les " " tu peux directement mettre [Site beneficiaire] = 'TPZ'
0
Rejoignez-nous