SSRS et null datetime
J'ai toujours pensé que lorsqu'une procédure stockée ramené un nul datetime qu'un rapport SSRS montrerait mindate dans la cellule. Le truc, c'est que dans mon expérience, ce n'est pas toujours vrai. Je ne peux pas comprendre pourquoi. Parfois, un rapport montrera vide et parfois mindate pour une valeur nulle de type datetime. Pourquoi est-ce?
Est-il des règles ou de la documentation (qui fait sens) qui explique comment cela fonctionne? Il est difficile d'être cohérent quand les outils que vous utilisez ne sont pas cohérentes. Je peux faire deux rapports qui sont exactement de la même manière. On va montrer mindate et on va montrer à vide pour les nuls datetimes. Je n'ai pas l'obtenir.
EDIT:
Tout d'abord, oui le mindate chose est arrivé à de nombreux.
https://www.google.com/search?num=50&q=ssrs+null+date+show+blank&oq=ssrs+null+date+show+blank&gs_l=serp.3...8759.9774.0.9941.10.10.0.0.0.0.152.888.8j2.10.0....0...1c.1.25.serp..8.2.166.kl2WBVx4Ijw
Presque chaque résultat a quelqu'un parler de la mindate quand ils veulent un vide. Beaucoup de résultats sont issus de Débordement de Pile alors avant de commencer à me dire qu'il n'arrive jamais, réalisez que vous êtes totalement faux. Vous ne l'avez jamais vu. Je n'ai jamais vu une sectionné un doigt dans ma nourriture dans toutes mes années de consommation et des milliers de repas. Ne signifie pas qu'il n'est pas arrivé à quelqu'un.....
Exemple de celui qui est en montrant min date:
Dans le rapport de l'expression de la zone de texte est:
=Fields!SecondaryInjuryRecordDate.Value
Le numéro de mise en forme a été fixé à la Date->01/31/2000 dans la fenêtre propriétés de l'espace réservé.
Assez simple, rien de bizarre se passe là-bas. DROIT?
Dans le proc, le code pour que la colonne est:
CASE WHEN ISNULL(l.SecondaryInjury, 0) = 0 THEN '' ELSE l.SecondaryInjuryDXDate END AS SecondaryInjuryRecordDate
Qui a abouti à mindate être présentées à chaque SecondaryInjuryDXDate était nulle. J'ai dû passer à ceci:
CASE WHEN ISNULL(l.SecondaryInjury, 0) = 0 THEN '' ELSE ISNULL(l.SecondaryInjuryDXDate, '') END AS SecondaryInjuryRecordDate
...pour obtenir des blancs lorsque la date est nulle.
SecondaryInjuryDXDate est un DATETIME et
SecondaryInjury est un peu.
- Dans mon expérience, une valeur NULL dans un jeu de données sera toujours affichée comme une chaîne vide si simplement mettre dans une zone de texte. Ne trouve pas de source officielle, qui permettrait de prédire le comportement des si. Avez-vous un exemple / repro où il montre avec une mindate? Je n'ai jamais vu ça (à moins que la requête de dataset serait de fournir un mindate au lieu d'une valeur NULLE).
- Je n'ai aucune idée de comment je pourrait fournir un exemple ici de ce rapport, la procédure stockée(s), les fonctions, la base de données, etc..
- Il a juste besoin d'être un exemple de situation où un mindate est affiché. Voir ici pour obtenir de l'aide sur la création d'un exemple minimal de quelque chose (qu'il s'adresse à code, mais travaille pour des choses comme les rapports de trop). En tout cas, sans un moyen de reproduire la situation que vous êtes en train de vivre, elle est un peu difficile pour nous de dire n'importe quoi sur la question, nous avions juste deviner.
- +1 @Jeroen. Je n'ai jamais, dans les centaines de rapports, à travers de nombreuses versions de SSR, de voir un
null
affichage de la valeur minimale de la date. Je soupçonne fortement votre code, que ce soit dans la requête ou dans le rapport est de faire cela. - Les gars, vous pouvez continuer à voter cette baisse, c'est de ne pas en faire non plus arriver.
- Je downvoted, parce que la question, ni de code me permet de reproduire le problème d'une valeur NULL d'affichage, comme un mindate dans un rapport. (Le quelque peu hostile ton dans l'édition n'aide pas non plus, tbh.)
Vous devez vous connecter pour publier un commentaire.
Au sein des SSR, par défaut, une valeur NULL valeur DateTime sera représenté comme une chaîne vide à la place.
Si les données de mise en forme est appliquée à la valeur MIN valeur DateTime sera utilisé à la place de la valeur null par exemple: la conversion de la date /heure pour un ShortDate comme décrit:
Pour éviter cela, la valeur de la colonne doit être enveloppé dans une expression conditionnelle, appliquer la nécessaire mise en forme:
Utiliser quelque chose comme cela dans la zone de texte de l'expression:
Il semble comme il n'y a pas de documentation à être trouvé à ce sujet. La prochaine meilleure chose est d'avoir ce Q&Un document de choses en se basant sur notre expérience collective.
Supposant la question: "Ce n'SSRS faire lors de l'affichage d'un DATETIME, avec une valeur NULL?"...
...la réponse est il affiche une chaîne vide à la place. Il n'est pas reproductible scénario où une valeur NULL sera affiché comme rien d'autre, sauf si vous faites un peu de travail à cette fin, vous-même, par exemple:
IIF(Fields!MyDateTime.Value Is Nothing, "01-01-1900", Fields!MyDateTime.Value)
Chaque champ renvoyé dans une requête SQL obtient un type de données assigné. En général, vous voulez garder les dates retournées comme une date à partir de SQL, et non pas comme des chaînes de caractères. (Ne pas le format de la date en une chaîne de caractères en SQL. Faire en tant que proche de la couche de présentation que possible.)
Ainsi, au lieu de cela, dans votre requête:
Je voudrais essayer d'utilisation:
Voir SQL cast datetime pour une explication de pourquoi vous obtenez 0 exprimés pour une date.