Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
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 27/12/2010, 15h32   #1
Candidat au titre de Membre du Club
 
Inscription : février 2004
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 125
Points : 12
Points : 12
Par défaut Syntaxe SELECT CASE WHEN avec Microsoft.ACE.OLEDB.12.0

Bonjour,
je construis une requête en Vba qui va accéder à un fichier .xls via une connection ADODB, avec un provider Microsoft.ACE.OLEDB.12.0

Dans cette requête je souhaite utiliser un CASE...WHEN mais le WHEN n'est pas reconnu...
Connaissez vous la syntaxe à utiliser dans mon cas?

Voici un exemple de ma requête:

Code :
1
2
3
4
5
 
    lStrSQL = "select  IdMag, 
    sum(case TypeArt when 'ART1' then Cost else 0) as CostArt1 
  from matable 
  group by IdMag"
A l'exécution j'ai "Unrecognized keyword WHEN"...
P.S.: je tiens à préciser que j'ai 5 valeurs différentes pour "TypeArt" et je veux utiliser le case when pour avoir les sommes sur une même ligne. J'ai "allegé" la requête pour les tests...

Merci
kluh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 20h11   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 980
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 980
Points : 18 224
Points : 18 224
Envoyer un message via MSN à CinePhil
Ce forum est celui du langage SQL. En SQL normalisé, ta requête est bonne a un détail près qui est peut-être dû à sa simplification : il manque le END à la fin du CASE mais WHEN fait bien partie de la syntaxe normalisée.

Une piste peut-être, au lieu de ceci :
Code :
case TypeArt when 'ART1'
Essaie comme ça :
Code :
case when TypeArt = 'ART1'
Si ça ne fonctionne toujours pas, adresse toi au forum approprié pour les outils que tu utilises. VB ? Excel ? Ayant quitté la planète Microsoft depuis longtemps, je ne saurais pas t'y guider.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 20h35   #3
Candidat au titre de Membre du Club
 
Inscription : février 2004
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 125
Points : 12
Points : 12
Merci...
J'avais aussi essayé le END.

Le pb c'est que je ne sais pas sur quel forum m'adresser!!!
C'est pour ça que je suis venu sur le général...
kluh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 20h36   #4
Candidat au titre de Membre du Club
 
Inscription : février 2004
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 125
Points : 12
Points : 12
J'ai aussi essaayé de mettre le when avant...
kluh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2010, 23h33   #5
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Je ne sais pas si dans du VBA c'est pareil mais j'ai fait un truc dans MSQuery il n'y a pas longtemps et je crois me souvenir que le case s'écrivait :
Code :
IIF(TypeArt='ART1',Cost,0)
Bon c'est beaucoup moins flexible que case mais juste pour ton besoin s'est suffisant.
Après ça n'est peut être pas du tout le même environnement donc ça ne fonctionne peut être pas.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2010, 09h59   #6
Candidat au titre de Membre du Club
 
Inscription : février 2004
Messages : 125
Détails du profil
Informations forums :
Inscription : février 2004
Messages : 125
Points : 12
Points : 12
Ben en fait...ça fonctionne!
Merci
kluh 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 10h06.


 
 
 
 
Partenaires

Hébergement Web