2008-11-03 68 views
29

Una de las muchas peculiaridades de Reporting Services que hemos encontrado es la completa y absoluta falta de un control CheckBox o incluso algo remotamente similar.¿Cómo visualizo CheckBoxes en SQL Server Reporting Services?

Tenemos un formulario que debe aparecer rellenado automáticamente en función de la información extraída de una base de datos. Tenemos varios campos de tipos de datos de bit. Imprimir "Verdadero" o "Falso" parece tonto, ya que se supone que debe verse como un formulario que se ha llenado automáticamente, por lo que queremos tener una serie de casillas de verificación y etiquetas que estén marcadas o desmarcadas.

Estamos ejecutando SSRS 2005 pero no tengo conocimiento de que SSRS 2008 haya agregado un control CheckBox. Incluso si lo hiciera, tendríamos que tener una alternativa por el momento. El mejor que hemos encontrado hasta ahora es:

  1. uso Wingdings
  2. uso de imágenes
  3. cuadros de texto
  4. uso con bordes e imprimir un/espacio en blanco o mayúscula X

Los tres enfoques requiere 0-travesuras de expresión.

El enfoque de Wingdings parecía funcionar de manera aceptable, y era el más estético, excepto que, por alguna razón, no siempre se imprimía correctamente. Lo que es más importante, las exportaciones de PDF, también por cualquier motivo, convirtieron todas las fuentes (generalmente) en Arial, por lo que obtuvimos letras funky en lugar de los dingbats de Windings.

Las imágenes, al ser un ráster basado en píxeles, no funcionan tan bien cuando se imprimen a lo largo de un vector lateral como texto. A menos que se manejen con cuidado, tienden a estirarse, pixelarse y hacer otras cosas que no se ven bien.

Si bien estos métodos funcionan (algunos con limitaciones como se mencionó anteriormente) ninguno de ellos son particularmente elegantes.

¿Nos falta algo obvio? ¿No es tan obvio? ¿Alguien en Microsoft tiene una buena razón por la cual dicho control no se proporcionó en SSRS 2000, y mucho menos en 2 versiones y 8 años después? Esta no puede ser la primera vez que aparece este problema ...

+1

SSRS 2000 fue lanzado en 2004. Así que han tenido solamente * * 5 años para llegar lo resuelto. –

+0

SQL Server 2012 salió y todavía no hay ninguna casilla de verificación solo 12 años para no agregar una característica simple. – lancegerday

+0

Sugeriría comenzar o agregar a un área de discusión o característica de respuesta de Microsoft real, tienen mucho, en lugar de quejarse aquí. El razonamiento puede ser lo que ya he visto demasiado: personas que usan SSRS como una herramienta de proceso de negocios, en lugar de una herramienta de informes. Agrega una cantidad tremenda al TCO y puede causar otros problemas ... y realmente, ¿qué informe necesita una casilla de verificación? – Volvox

Respuesta

18

Yo, junto con otros en mi tienda, he usado imágenes, alternando el atributo oculto según el valor del campo (verdadero o falso). No hemos tenido ningún problema con desenfocar o escalar, a menos que tratemos de aumentar la escala de la imagen más allá del 100% obviamente.

Otra opción que he usado es similar a la idea de las alas, pero solo uso una simple "X" antigua. Al menos en nuestros formularios, no es raro que alguien use una X en una casilla en lugar de una marca de verificación, por lo que parece completamente aceptable. Además, no tiene que preocuparse por caracteres extraños al imprimir.

En cuanto a por qué Microsoft no incluye un control de casilla de verificación, no puedo responder a eso porque me he estado preguntando lo mismo por mucho tiempo.

1

Creo que hay un error con SSRS e incrustación de caracteres de fuente por encima de 128 (algo que todo vale con codificación ANSI). Básicamente puede usar 1-128 bien, el resto aparece como bloques rectangulares altos.

Me gusta la idea de NY de la caja de texto con un borde y una X opcional; esto suena simple y efectivo.

+3

Eso es lo que finalmente terminamos haciendo. Nada más funcionaba en los tres formatos: visor web, impreso y exportación PDF. Todavía creo que deberían haber tenido un control de casilla de verificación hace mucho tiempo. El hecho de que SSRS 2008 todavía no tenga una buena solución después de 8 años de Reporting Services es increíble. –

11

Lo que he utilizado para mostrar una casilla de verificación (o urna):
1- crear cuadro de texto (que se convertirá en la caja su cheque)
2- cambiar la fuente a Arial Unicode MS
3 en la expresión utilización ventana:
ChrW (& H2611) para una casilla rellenada
ChrW (& H2610) para una casilla vacía

+0

cuando exporto a pdf, muestra la casilla de verificación en un medio tamaño. Estoy usando Chr (0168). –

+0

¡También funciona exportando a pdf! La fuente 'Arial Unicode MS' fue clave para su funcionamiento. No funcionó con el estándar 'Arial' –

8

Además de los diferentes métodos que ya se presentó, a partir de SQL Server 2008 R2 hay un control integrado que se puede usar para che funcionalidad ckbox-similar: el Indicador!

un vistazo aquí para más detalles sobre cómo usarlo: http://blog.hoegaerden.be/2012/08/04/displaying-checkboxes-in-an-ssrs-report/

Para poder utilizar un campo de tipo poco, vas a tener que echarlo a int primero. Esto se puede hacer en la consulta del conjunto de datos o agregando un campo calculado al conjunto de datos.

Si desea que los valores NULL aparezcan en amarillo, entonces deberá compilar la expresión de esa manera para que también tenga en cuenta ese requisito.

He aquí una posible expresión para un campo calculado:

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

Dependiendo del significado de los campos - es bueno falso o malo - puede que tenga que cambiar el cero y 100.

+0

El indicador parece que sería un (finalmente) buen ajuste, pero noté que su ejemplo usa valores enteros. Sin arrancar un proyecto de SSRS, ¿puede usarlo fácilmente con un valor booleano? ¿Qué tal un nullable (y obtener la versión amarilla/advertencia esperada tal vez)? –

+0

He extendido la respuesta para responder a sus preguntas, parecía más factible que responder a través de un comentario :) –

2

Puede también use un campo de cadena calculada como "[X]" o "[]". Es menos bonito que el cuadro de texto con borde pero no tienes que poner un control específico para el valor y puedes llenar la tabla o la matriz con esto.

Al menos hay alguna solución para la casilla de verificación. Todavía estoy buscando una justificación completa para mi texto (de hecho, estoy buscando otra solución que SSRS sepa).

ACCESO 97 podría hacer este tipo de cosas, pero no SQL SERVER 2012.

7

Sólo quiero compartir la idea en este blog. SSRS: How to Display Checkbox on Report

  1. En primer lugar crear un cuadro de texto
  2. a continuación, cambiar a la familia de fuentes Wingdings
  3. Inserte una expresión en el cuadro de texto y escribir esta expresión.

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

    campos Active.Value podría ser cualquier cosa de la consulta que debe devolver un valor booleano 1 ó 0.

  4. A continuación, haga clic en Vista y ver la casilla de verificación;!)

Se pueden seleccionar más estilos en el blog que compartí arriba.

Aquí es un ejemplo de mi salida enter image description here

+1

Esta es la mejor solución :) –

0

Otra forma de hacer thisd se vaya a "Propiedades del marcador de posición" del cuadro de texto y comprobar Html - Interpret HTML tag as styles

Luego, en el Value - Expression poner esta línea de código para comprobar :

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

O este ejemplo de código para marcar:

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

De esta manera puede tener casilla de verificación y texto en el mismo cuadro de texto.

Palceholder properties

Later edit:

Si usted está teniendo problemas en la visualización Wingdings 2 en Azure, a continuación, utilizar Wingdings.

Aparentemente funciona.

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

O este ejemplo de código para marcar:

="<font face=""Wingdings"" color=""red"">" & Chr(168) &"</font>" & "some other text" 
Cuestiones relacionadas