Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1750 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Probleme fonction SWITCH SQL ACCESS

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Probleme fonction SWITCH SQL ACCESS

n°2066499
Jarod511
****
Posté le 28-03-2011 à 11:34:55  profilanswer
 

Bonjour,
 
J'ai un petit problème que je n'arrive pas à identifier, du moins à comprendre ce qui fait "foirer" ma requête.  
 
Je suis sous ACCESS 2003, dans une mes requêtes j'utilise la fonction SWITCH pour coder différement certaines occurences.  
 
Dès lors que je veux rajouter une nouvelle occurence dans la clause SWITCH ça ne passe pas, j'ai comme message : expression trop complexe.  
 
Voilà je ne comprends pourquoi ça marche pour 12 valeurs et pour 13 non.
 
Je mets la requête qui marche, est ce que quelqu'un saurait comment rajouter de nouvelles possibilités dans le SWITCH ?
 
Merci.
 
Requête qui marche :
 

Code :
  1. SELECT [A02 004].PM,
  2. [A02 004].AN,
  3. Switch([COD] Like "OP*","ENRO",
  4. [AN_ANACOD] Like "*_PO*","ENRO",
  5. [AN_ANACOD] Like "RVES","ENRO",
  6. [AN_ANACOD] Like "*-BE*","ENRO",
  7. [AN_ANACOD] Like "BE","ENRO",
  8. [AN_ANACOD] Like "*_BE*","ENRO",
  9. [AN_ANALIB] Like "*OPER*","ENRO",
  10. [AN_ANALIB] Like "*opér*","ENRO",
  11. [AN_ANALIB] Like "*RESECTION*","ENRO",
  12. [AN_ANACOD] Like "CR*","ENRO",
  13. [AN_ANACOD] Like "*OP*","ENRO",
  14. [AN_ANACOD] Like "CUR","ENRO",
  15. [AN_ANACOD] Like "HYPOP","ENRO",True,Null) AS ACOD1I
  16. FROM [A02 004];


 
Requête qui plante quand je rajoute une nouvelle occurence.
 

Code :
  1. SELECT [A02 004].PM,
  2. [A02 004].AN,
  3. Switch([COD] Like "OP*","ENRO",
  4. [AN_ANACOD] Like "*_PO*","ENRO",
  5. [AN_ANACOD] Like "RVES","ENRO",
  6. [AN_ANACOD] Like "*-BE*","ENRO",
  7. [AN_ANACOD] Like "BE","ENRO",
  8. [AN_ANACOD] Like "*_BE*","ENRO",
  9. [AN_ANALIB] Like "*OPER*","ENRO",
  10. [AN_ANALIB] Like "*opér*","ENRO",
  11. [AN_ANALIB] Like "*RESECTION*","ENRO",
  12. [AN_ANACOD] Like "CR*","ENRO",
  13. [AN_ANACOD] Like "*OP*","ENRO",
  14. [AN_ANACOD] Like "CUR","ENRO",
  15. [AN_ANACOD] Like "CURO","ENRO",
  16. [AN_ANACOD] Like "HYPOP","ENRO",True,Null) AS ACOD1I
  17. FROM [A02 004];


mood
Publicité
Posté le 28-03-2011 à 11:34:55  profilanswer
 

n°2066522
Oliiii
Posté le 28-03-2011 à 13:15:33  profilanswer
 

La commande SWITCH est probablement limitée a 12 valeurs.
Le plus facil pour eviter le probleme est d'utiliser une deuxieme table avec les valeurs et faire un lookup dessus (un join); Avec cette facon de faire, plus aucune limite et c'est beaucoup plus facile a lire et a mettre a jour :)

n°2066533
Jarod511
****
Posté le 28-03-2011 à 13:58:19  profilanswer
 

Salut Oliiii,
 
Merci pour ta réponse. Si je comprends bien je fais une table du genre :
 
"OP*","ENRO",
"*_PO*","ENRO",
"RVES","ENRO",
"*-BE*","ENRO",
"BE","ENRO",
"*_BE*","ENRO",
"*OPER*","ENRO",
"*opér*","ENRO",
"*RESECTION*","ENRO",
"CR*","ENRO",
"*OP*","ENRO",
"CUR","ENRO",
"HYPOP","ENRO"
 
et ensuite un select en faisant un inner join sur les codes OP, _PO, etc... ? Sachant que ma requête contient une autre requête select [A02 004], ça peut marcher ça ?

n°2066558
Oliiii
Posté le 28-03-2011 à 14:19:25  profilanswer
 

oui en gros c'est ca l'idée


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Probleme fonction SWITCH SQL ACCESS

 

Sujets relatifs
Variable PHP dans une fonction JavascriptProblème return char.
Problème(s) positionnement div[RESOLU] Problème compilation Visual C++
[RESOLU] problème requete SQL 2008[CSS] Problème d'affichage!
Problème de libération (free())Vba: Excel >Word , Probleme de decimales
Mesurer le temps d'exec d'une fonction 
Plus de sujets relatifs à : Probleme fonction SWITCH SQL ACCESS


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR