Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
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 09/01/2012, 10h28   #1
Invité régulier
 
Homme
Développeur informatique
Inscription : novembre 2011
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2011
Messages : 48
Points : 8
Points : 8
Par défaut Problème avec l'instruction CASE .. WHEN

Bonjour,

J'essaye depuis quelques temps de faire ressortir un tableau en utilisant une procédure stockée, notamment en voulant afficher "Oui" ou "Non" au lieu de "True" ou "False" (ça fait plus français quand même pour des clients ).
Donc voici ma requête :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
ALTER PROCEDURE [dbo].[PSlisteFinaleRisques]
	@valeur AS VARCHAR(100)
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
 
CREATE TABLE #TmpListReportViewer
(
	libelleDomaine varchar(50) NULL,
	idMapping int NULL,
	idRisque int NULL,
	theme varchar(100) NULL,
	lieu varchar(100) NULL,
	risque varchar(200) NULL,
	descripRisque varchar(1000) NULL,
	niveau1RisqueBrut int NULL,
	niveau0RisqueBrut int NULL,
	enjeuEconomique int NULL,
	calculEnjeuEco varchar(50) NULL,
	activiteControle bit NULL,
	OK bit NULL,
	maj bit NULL,
	incomplet bit NULL,
	inexistant bit NULL,
	niveau1RisqueNet int NULL,
	niveau0RisqueNet int NULL,
	planAction int NULL,
	deadline datetime NULL,
	responsable varchar(50) NULL,
	commentaires varchar(200) NULL
	)
 
INSERT INTO #TmpListReportViewer (activiteControle, OK, maj, incomplet, inexistant)
VALUES (1, 1, 1, 1, 1)
 
SELECT DISTINCT
	TB1.libelleDomaine,
	TB1.idMapping,
	TB3.idRisque,
	TB3.theme,
	TB3.lieu,
	TB3.risque,
	TB3.descripRisque,
	TB3.niveau1RisqueBrut,
	TB3.niveau0RisqueBrut,
	TB3.enjeuEconomique,
	TB3.calculEnjeuEco,
	TB3.activiteControle,
	TB3.descripActControle,
	TB3.OK,
	TB3.maj,
	TB3.incomplet,
	TB3.inexistant,
	TB3.niveau1RisqueNet,
	TB3.niveau0RisqueNet,
	TB3.planAction,
	TB3.deadline,
	TB3.responsable,
	TB3.commentaires
 
FROM
 
	TBdomaine TB1 INNER JOIN
	fn_split(@valeur,',') TB2 ON	TB1.idDomaine = TB2.value
	INNER JOIN TBrisque TB3 ON TB1.idDomaine = TB3.idDomaine
 
SELECT * FROM #TmpListReportViewer
UPDATE #TmpListReportViewer
SET
	activiteControle = CASE WHEN activiteControle =1 THEN 'Oui' ELSE 'Non' END,
	OK = CASE WHEN OK=1 THEN 'Oui' ELSE 'Non' END,
	maj = CASE WHEN maj=1 THEN 'Oui' ELSE 'Non' END,
	incomplet = CASE WHEN incomplet =1 THEN 'Oui' ELSE 'Non' END,
	inexistant = CASE WHEN inexistant=1 THEN 'Oui' ELSE 'Non' END
 
DROP TABLE #TmpListReportViewer
END
Si vous pouviez m'aider à la modifier ou si vous avez d'autres idées pour trouver une solution à mon problème, je suis preneur.

Merci d'avance
Nikko42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/01/2012, 15h40   #2
Membre émérite
 
Homme Serge RUQUET
Consultant informatique
Inscription : août 2006
Messages : 669
Détails du profil
Informations personnelles :
Nom : Homme Serge RUQUET
Âge : 50
Localisation : France

Informations professionnelles :
Activité : Consultant informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2006
Messages : 669
Points : 840
Points : 840
Citation:
SELECT * FROM #TmpListReportViewer
UPDATE #TmpListReportViewer
SET
activiteControle = CASE WHEN activiteControle =1 THEN 'Oui' ELSE 'Non' END,
OK = CASE WHEN OK=1 THEN 'Oui' ELSE 'Non' END,
maj = CASE WHEN maj=1 THEN 'Oui' ELSE 'Non' END,
incomplet = CASE WHEN incomplet =1 THEN 'Oui' ELSE 'Non' END,
inexistant = CASE WHEN inexistant=1 THEN 'Oui' ELSE 'Non' END
à la place mets:
Code :
1
2
3
4
5
6
7
SELECT *,	 
CASE WHEN activiteControle =1 THEN 'Oui' ELSE 'Non' END AS activiteControle_char ,
CASE WHEN OK=1 THEN 'Oui' ELSE 'Non' END AS ok_char,
CASE WHEN maj=1 THEN 'Oui' ELSE 'Non' END AS maj_char,
CASE WHEN incomplet =1 THEN 'Oui' ELSE 'Non' END AS incomplet_char,
CASE WHEN inexistant=1 THEN 'Oui' ELSE 'Non' END AS inexistant_char
FROM #TmpListReportViewer
__________________
Errare humanum est, perseverare diabolicum (Sénèque)
serge0934 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/01/2012, 17h38   #3
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 670
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 670
Points : 8 732
Points : 8 732
Bonjour,

Au passage l'utilisation de la table temporaire #TmpListReportViewer est totalement inutile ...

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/01/2012, 09h17   #4
Invité régulier
 
Homme
Développeur informatique
Inscription : novembre 2011
Messages : 48
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : novembre 2011
Messages : 48
Points : 8
Points : 8
Merci bien, cependant, quand je fais des tests avec ma procédure sur SQL Server, ça fonctionne bien, ça m'affiche "oui" ou "non" mais, quand je génère mon rapport dans mon application, il m'affiche encore "true" ou "false".
J'utilise bien la bonne procédure pourtant
Nikko42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2012, 14h30   #5
Membre expérimenté
 
Inscription : octobre 2002
Messages : 654
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 654
Points : 554
Points : 554
Bonjour,
Citation:
quand je génère mon rapport dans mon application, il m'affiche encore "true" ou "false".
Dans quelle application?
Est-ce que cette application n'aurait pas "stocké " les types de données retournés par la première version de ta PS, et ne se serait pas aperçu que c'était les mêmes.
Dans un cas similaire sur SQL server 2005 reporting services, je fais une fausse modification dans le DATASET, je rajoute un espace que j'enlève après, cela indique à Reporting services que la requête a changé et qu'il faut qu'il revérifie les types de données.

En espérant que cela t'ai aidé.
PS: Dans ta premier post, le select était avant l'update, ce qui fait que l'update ne servait à rien.
Par ailleurs je suis d'accord avec elsuket, tu peux faire la même chose avec un seul select.

A+
Soazig
soazig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h05.


 
 
 
 
Partenaires

Hébergement Web