SSRS hide #Error affiché dans la cellule
Je suis en train de faire des calculs sur des données qui entraînera #Erreur à la fois. La cause sous-jacente est une division par zéro. Je pouvais sauter à travers les nécessaires travaux de contournement pour éviter la division par zéro, mais il pourrait être plus simple pour masquer le #texte d'Erreur et de montrer une cellule vide. Est-il possible de masquer le n ° d'Erreur et juste ne rien afficher?
Modifier
L'expression pour le texte d'affichage #Erreur est quelque chose le long de ces lignes:
Fields!Field1.Value /Fields!ValueThatMightBeZero.Value
Je pourrais contourner ce avec les moches, les vérifier, mais il pourrait être plus facile d'attraper le message d'Erreur. (Droite iif
vérifier autour de l'express ne fonctionne pas parce que SSRS évalue à la fois le vrai et le faux clauses d'abord; si elle obtient une division par zéro sur la clause, il sera de retour #Erreur, même si cette clause n'aurait pas été utilisé).
source d'informationauteur poke
Vous devez vous connecter pour publier un commentaire.
Il y a une fonction IsError, mais il ne réduira pas le code que vous avez besoin pour gérer cela. Si vous n'aimez pas l'habitude
iif
solutions, alors je pense que vous devez utiliser votre propre code incorporé dans le rapport. Dans ce code, vous pouvez avoir un essai gestionnaire catch. Créer une fonction que vous pouvez appeler avec=Code.MyDivider(Fields!Field1.Value , Fields!ValueThatMightBeZero.Value)
Changer la police la couleur de l'arrière-plan si
Fields!Value_Denominator.Value=0
et vous ne voyez pas le message d'erreur.C'est moche mais c'est un moyen que j'ai trouvé pour le faire fonctionner dans l'expression et sans la fonction personnalisée.
Vous devez vérifier dans le dénominateur trop et le remplacer par un non diviseur de zéro, de sorte qu'une division par 0 n'arrive jamais (même si nous préférons la première moitié de l'IIF de court-circuit et de ne pas y arriver du tout): - je utiliser 1.
Bien sûr, cela donnera alors une valeur incorrecte, mais puis-je conserver l'extérieur IIF de montrer tout ce que je veux quand le dénominateur est égal à 0 (je indiquer 0 dans mon exemple).
Ajouter une petite valeur à la seconde expression -
Champs!Champ1.Valeur /(Champs!ValueThatMightBeZero.Valeur+.00001)
Qui va retourner 0.
C'est une bonne solution.
Cependant, je pense que c'est possible, même à l'améliorer. Au lieu de mettre la mise en forme conditionnelle "Blanc", je vous suggère de mettre le conditionnel Caché expression de True à la place.
Dans ce cas, lors de l'exportation vers excel, les cellules contiennent rien, contrairement au cas de la modification de la police forecolor.
En vertu de la Visibilité --> Caché
=Iif(Champs!dénominateur.Valeur=0,True,False)
Vous pouvez utiliser IsNumeric de vérifier chaque expression et d'afficher un 0 ou mieux encore ne pas afficher quoi que ce soit que 0 peut avoir une signification.
IsNumeric - Retourne une valeur Booléenne qui indique si une expression peut être évaluée comme un nombre.
Par exemple:
ou
Utiliser le
NULLIF
fonction:Une autre alternative pour les suggestions à ce jour est d'ajouter la partie de la formule qui pourrait créer de l'erreur.
Exemple: a/b, si b = 0, alors l'équation donne une erreur.
{=IIF(b=0, TRUE, FALSE)}
Utilisation d'ESSAYER & ATTRAPER dans un SSRS Code Personnalisé