IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Problème avec l'instruction CASE .. WHEN


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    53
    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 : 53
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2006
    Messages
    730
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

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

    Informations forums :
    Inscription : Août 2006
    Messages : 730
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

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

    @++

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2011
    Messages
    53
    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 : 53
    Par défaut
    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

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    956
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 956
    Par défaut
    Bonjour,
    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

Discussions similaires

  1. [aide]probléme avec l'instruction group by
    Par diden138 dans le forum Bases de données
    Réponses: 4
    Dernier message: 25/05/2007, 07h09
  2. [ASP3] Problème avec un select case
    Par beegees dans le forum ASP
    Réponses: 4
    Dernier message: 05/07/2006, 17h14
  3. Problème avec l'instruction IN : 16 bits retournés
    Par HadiNET dans le forum Assembleur
    Réponses: 4
    Dernier message: 11/02/2006, 17h43
  4. []Problème avec un "Select Case" : Instructions et..
    Par Olun dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/09/2005, 13h32
  5. Problème avec une instruction OUTER /Postgres
    Par Volcomix dans le forum Langage SQL
    Réponses: 14
    Dernier message: 21/04/2004, 16h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo