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 :

[SSRS]Conversion de date NULL cdate


Sujet :

MS SQL Server

  1. #1
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut [SSRS]Conversion de date NULL cdate
    Bonjour,

    Alors voila la situation :
    J'ai un champ de date, standard qui affiche aaaammdd hh:mm:ss. Dans ma table, ce champ est parfois vide. jusque là, pas de probleme.
    Dans le rapport, pour des soucis pratiques, il faudrait que j'affiche la date proprement. Pour ca, j'ai voulu utilisé le cdate() qui marche au poil... sauf dans le cas ou la date est NULL. La il me fait une erreur.

    Plein de motivation, je me lance dans un iif(date est nothing alors vide sinon cdate())
    et là, c'est le drame car le cdate dans un iif, ca passe pas.

    Quelqu'un aurait-il une idée pour palier ce probleme de conversion de date null sachant que cette date n'est pas un parametre (donc pas de format dans le dataset) et il faudrait se cantonner à SSRS sans modifier les valeurs dans l'ETL.

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    Pourquoi ne pas modifier le SELECT ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COALESCE(madate, CURRENT_TIMESTAMP) ...
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Citation Envoyé par Reskibil
    Plein de motivation, je me lance dans un iif(date est nothing alors vide sinon cdate())
    Un truc de ce genre

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =iif(Fields!MaDate.Value is nothing ,"" ,Cdate(Fields!MaDate.Value))

    ne fonctionne pas ?
    Mehdi Feki : Modérateur .Net

  4. #4
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    @ mehdi_tn:
    Non justement, ca me sort un #error dès que la date est NULL. On a essayé pas mal de choses différentes sur cette base mais rien n'a marché.

    @ Rudib:
    A priori mon collègue a déjà essayé de modifier le MDX pour sortir la date au bon format mais ca n'a rien donné non plus. je vais réessayer de mon côté mais disons que le MDX, c'est pas vraiment mon point fort. (On aurait peut être dû en faire plus pendant la formation, hein Rudi ;-))

    Merci en tout cas de vos réponses.

    Edit :
    Changer le select n'a rien changé. En fait, fondamentalement, le probleme de base c'est juste lorsque la date est NULL, on a une erreur, sinon ca marche. Alors je me demandais si il n'existait pas une commande genre ESTNA dans Excel juste pour masquer les #error qui sont mis pour les dates NULL.

  5. #5
    Membre expérimenté
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Points : 1 566
    Points
    1 566
    Par défaut
    Citation Envoyé par Reskibil
    @ mehdi_tn:
    Non justement, ca me sort un #error dès que la date est NULL. On a essayé pas mal de choses différentes sur cette base mais rien n'a marché.
    Tu m'as mis le doute, je viens d'essayer et ca marche, je n'ai pas de #error. T'es bien en 2005 ?
    Mehdi Feki : Modérateur .Net

  6. #6
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Ah vi vi vi SQL Server 2005 avec le SP2.

    Et pourtant, je ne fais rien de bien particulier.
    J'ai un champ date qui provient d'une base DB2 qui est rempli ou pas. Après un passage dans le cube, il est supposé être affiché dans un bête rapport avec le format d MMMM,yyyy (obligé pour éviter les ambiguités sur les formats date genre DMY ou MDY).
    Pour que ca marche, il faut faire un cdate sur le champ et appliquer le format. Tout marche bien sauf pour les champs où la valeur de base de la date est NULL.

    Et en combinant le cdate avec un iif, ca me sort une erreur pour tout, NULL ou pas en fait. Idem avec 2 iif (un global et un autre dans le cdate) et re-idem avec un iif à l'intérieur du cdate.

    Peut être qu'on a fait un truc pas bon et que c'est tout bête mais là je vois pas.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 356
    Points : 406
    Points
    406
    Par défaut
    Dans ta requête SQL, tu pourrais utilisé la commande CASE de la manière suivante :

    SELECT CASE champ WHEN NULL THEN "" ou une valeur ELSE champ END, autres champs FROM ma Table

    Cette requête te mettera une valeur que tu souhaites lorsque la valeur de ton champ est à NULL.

    Teste cela, je pense que ça pourrait résoudre ton problème.
    Bon courage pour la suite.

  8. #8
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Les données viennent du cube, donc c'est pas une requête SQL mais une requête MDX et c'est une autre paire de manche vu que je suis pas trop familier avec le MDX.
    Si vous avez un exemple pour le faire en MDX je peux essayer mais déjà, en faisant ce que Rudib avait suggéré, ca ne marche pas plus.
    D'autre part, je vais peut être dire une bêtise mais pour autant que je me souvienne, les dates dans SQL Serveur sont soit NULL soit 31/12/1899 (="") mais pas vides aussi si je met "" à la place du NULL, il risque de me mettre "31 dec, 1899" après le cdate. Me trompe-je ?

    En tout cas merci de votre aide.

  9. #9
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    Rudib,

    Pour faire autre chose, j'ai essayé ta fonction COALESCE et ca marche pas vraiment:
    Executing the query ...
    Query (15, 8) La fonction*«*[COALESCE]*» n'existe pas.
    Execution complete

    Est-ce que ca vient de moi ou bien c'est la fonction COALESCEEMPTY qu'il faut utiliser ?

    Sinon pour le NULL, je sèche toujours j'avoue.

  10. #10
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Ta requête, c'est quoi ? du T-SQL, du MDX ?
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  11. #11
    Membre éclairé
    Avatar de Reskibil
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    561
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2007
    Messages : 561
    Points : 815
    Points
    815
    Par défaut
    C'est du MDX mais c'est bon en fait, j'ai fait autrement au niveau d'une vue.

    Merci pour votre aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37
  2. recherche Date nulle dans une table
    Par lol_adele dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/04/2004, 14h06
  3. Conversion de date lors d'un import
    Par bilbon.S dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/03/2004, 14h33
  4. Conversion de date et division 64 bits
    Par dway dans le forum Assembleur
    Réponses: 38
    Dernier message: 27/01/2004, 10h31
  5. [CR9] conversion de valeurs NULL
    Par ministry dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 12/09/2003, 11h41

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