Comment afficher au mieux les cases à cocher dans les services de rapports SQL Server?

L'une des nombreuses bizarreries des services de Reporting que nous avons rencontrées est l'absence totale et totale de contrôle de la case à cocher ou même quelque chose de similaire.

Nous avons un formulaire qui doit apparaître automatiquement rempli basé sur des informations extraites d'une base de données. Nous avons plusieurs bits type de données des champs. Imprimer "vrai" ou" faux " semble stupide, car cela doit ressembler à un formulaire qui a été rempli automatiquement, donc nous voulons avoir une série de cases à cocher et des étiquettes qui sont soit cochée ou décochée.

nous sommes en train D'exécuter SSRS 2005 mais je ne suis pas au courant que SSRS 2008 a ajouté un contrôle de case à cocher. Même si elle l'était, nous aurions besoin d'avoir une alternative pour le moment. Le meilleur que nous avons trouvé pour l'instant est:

  1. utilisez Wingdings
  2. utiliser des images
  3. utilisez des zones de texte avec des bordures et imprimez un blanc / espace ou une majuscule X

Les trois approches nécessitent IIF expression des manigances.

Le Wingdings approche a semblé fonctionner de façon acceptable, et a été le plus esthétiquement agréable, sauf que pour une raison quelconque, il n'a pas toujours imprimé correctement. Plus important encore, PDF exports, aussi pour quelque raison que ce soit, a converti toutes les polices (généralement) en Arial et nous avons donc reçu des lettres funky au lieu des bobinages dingbats.

Les Images, étant une trame basée sur des pixels, ne fonctionnent pas aussi bien lorsqu'elles sont imprimées le long de vecteurs latéraux comme du texte. Si elles ne sont pas manipulées avec soin, elles ont tendance à s'étirer, à pixéliser et à d'autres choses non professionnelles.

bien que ces méthodes fonctionnent (certaines avec des limites mentionnées ci-dessus) aucune d'entre elles n'est particulièrement élégante.

nous manque quelque chose d'évident? pas si évident? Quelqu'un chez Microsoft a-t-il une bonne raison pour laquelle un tel contrôle N'a pas été fourni dans SSRS 2000, encore moins 2 versions et 8 ans plus tard? Cela ne peut pas être la première fois que cette question a venir...

29
demandé sur Joel Coehoorn 2008-11-03 20:41:27

7 réponses

moi, avec d'autres dans ma boutique, avons utilisé des images, toggling l'attribut caché basé sur la valeur du champ (vrai ou faux). Nous n'avons eu aucun problème avec le flou ou la mise à l'échelle, sauf si nous avons essayé d'augmenter l'échelle de l'image au-delà de 100% évidemment.

une autre option que j'ai utilisée est similaire à l'idée de wingdings, mais j'utilise juste un simple Vieux "X". Sur nos formulaires au moins, il n'est pas rare pour quelqu'un d'utiliser un X dans une boîte au lieu d'un crochet, il semble donc complètement acceptable. De plus, vous n'avez pas à vous soucier des caractères étranges lors de l'impression.

en ce qui concerne la raison pour laquelle Microsoft n'inclut pas de contrôle de case à cocher, Je ne peux pas répondre car je me demande la même chose moi-même depuis longtemps maintenant.

18
répondu NYSystemsAnalyst 2008-11-03 18:24:50

Ce que j'ai utilisé pour afficher une case à cocher (ou urne):

1 - créer une zone de texte (qui deviendra votre case à cocher)

2 - modifier la police Arial Unicode MS

3 - dans la fenêtre d'expression utiliser:

ChrW(&H2611) pour un rempli case

ChrW(&H2610) pour une case vide

11
répondu Matthew 2010-03-31 22:26:15

outre les différentes méthodes déjà présentées, à partir de SQL Server 2008 R2 il y a un contrôle intégré qui peut être utilisé pour la fonctionnalité de type boîte à cocher: le Voyant!

jetez un oeil ici pour plus de détails sur la façon de l'utiliser: http://blog.hoegaerden.be/2012/08/04/displaying-checkboxes-in-an-ssrs-report/

Pour être en mesure d'utiliser un champ de type bit, vous aurez à le jeter aux int en premier. Cela peut être fait soit à la requête de dataset ou par l'ajout d'un champ calculé à l'ensemble de données.

si vous voulez que les NULLs apparaissent en jaune, alors vous devrez construire l'expression de cette façon afin qu'elle tienne compte de cette exigence.

Voici une expression possible pour un champ calculé:

=Switch(
    IsNothing(Fields!YourBoolean.Value), 50,
    Fields!YourBoolean.Value = False, 0,
    Fields!YourBoolean.Value = True, 100)

selon la signification de vos champs - est faux bon ou mauvais - vous pouvez avoir besoin d'échanger le zéro et 100.

8
répondu Valentino Vranken 2012-10-17 07:05:38

je veux juste partager l'idée sur ce blog. SSRS: Comment afficher la case à cocher sur le rapport

  1. créer D'abord une zone de texte
  2. alors changez la famille font en Wingdings
  3. insérez une expression sur la boîte de texte et écrivez cette expression.

    =IIF(Fields!Active.Value,chr(254),"o")
    

    Champs!Actif.La valeur pourrait être n'importe quoi de votre requête qui devrait retourner une valeur booléenne 1 ou 0.

  4. puis cliquez sur Preview et voir la case ;)

Plus de styles peuvent être sélectionnés sur le blog que j'ai partagé ci-dessus.

Voici un exemple de ma sortie enter image description here

7
répondu bot 2016-03-02 16:39:27

vous pouvez aussi utiliser une chaîne de caractères calculée comme "[X]" ou "[ ]". C'est moins joli que la boîte de texte avec border mais vous n'avez pas à mettre un contrôle spécifique pour la valeur et vous pouvez remplir le tableau ou la matrice avec cela.

au moins il y a une solution pour la case à cocher. Je suis toujours à la recherche d'une justification complète pour mon texte (en fait, je suis à la recherche d'une autre solution que SSRS savent).

ACCESS 97 pourrait faire ce genre de chose, mais pas SQL SERVER 2012.

2
répondu Marco Guignard 2013-02-19 12:33:54

je pense qu'il y a un bug avec SSRS et l'intégration de caractères de police au-dessus de 128 (quelque chose à faire avec l'encodage ANSI). Fondamentalement, vous pouvez utiliser 1-128 amende, le reste se présentent comme de grands blocs rectangulaires.

j'aime NY idée de la zone de texte avec une bordure et une option de X - cela semble simple et efficace.

1
répondu AndyM 2009-06-01 14:15:26

une autre façon de faire ceci est d'aller dans "Placeholder properties" de TextBox et de vérifier Html - Interpret HTML tag as styles

Puis dans le Value -Expression mettre cette ligne de code pour vérifier:

="<font face=""Wingdings 2"" color=""green"">" & Chr(81) &"</font>" & "some other text"

Ou cet exemple de code pour décochée:

="<font face=""Wingdings 2"" color=""red"">" & Chr(163) &"</font>" & "some other text"

de cette façon vous pouvez avoir la case à cocher et le texte dans la même zone de texte.

Palceholder properties

Later edit:

si vous avez des problèmes d'affichage Wingdings 2 sur L'Azur, ensuite, utilisez Wingdings.

apparemment ça marche.

="<font face=""Wingdings"" color=""green"">" & Chr(253) &"</font>" & "some other text"

Ou cet exemple de code pour décochée:

="<font face=""Wingdings"" color=""red"">" & Chr(168) &"</font>" & "some other text"
0
répondu Dragos Durlut 2017-09-13 10:02:23