SQL Server Reporting Services: Preguntas y Respuestas (I)!

Uno de los seminarios “tradicionales” que hemos impartido en el CIIN es el de SQL Server Reporting Services (SSRS). Durante estas sesiones han surgido numerosas preguntas que he tratado de responder con el tiempo, siempre desde el punto de vista práctico, y sin preocuparme mucho si la solución planteada a las cuestiones es una buena práctica o no. El caso es que llevaba tiempo con ganas de publicar estas preguntas y respuestas sobre SSRS, y aquí está el comienzo. Como varéis, he dividido las preguntas y respuestas en secciones con temáticas similares.  También espero que los cracks de SSRS den su opinión y otras alternativas posibles ;). Hoy comenzaremos con cuestiones relativas al formato de salida de un informe. Empecemos.

Cuestiones sobre el formato de salida de un informe

Esta sección está enfocada a cuestiones relativas al formato de salida del informe en cuanto a su aspecto gráfico, lograr ciertas funcionalidades a priori  no posibles, etc.

i. ¿Cómo se pueden visualizar sólo cierto número de filas de un informe?

Una forma de conseguir esto es la siguiente:

  • Insertar un nuevo grupo en el informe a través de la opción Insert Group y en la pestaña general definir la siguiente expresión de agrupamiento: =int((RowNumber(“Scope”)-1)/20).

image

  • Marcamos también Page break at end:

image

Y ya está. Más información sobre el tema en este enlace.

ii. ¿Qué manera puede haber de saber si es página par o impar para poner salto de página?

Hay una extensión de impresión pensada para este tipo de situaciones. Más información sobre esta extensión en el este enlace.

iii. ¿Cómo se pueden añadir números de página a un sub-informe?¿y cabeceras? En subreport no se pueden poner Footer ni Header por lo tanto: No se pueden usar las Globals tipo PageNumber.

Efectivamente esto es así, por lo que la única solución que veo es que por código (inline o mediante assembly) accedas a estas propiedades y las puedas utilizar en un elemento tipo Texbox de tu subreport. Sería algo tal que así:

Public Function PageNumber() as String
     Dim str as String
     str = Me.Report.Globals!PageNumber.ToString()
     Return str
End Function

Public Function TotalPages() as String
     Dim str as String
     str = Me.Report.Globals!TotalPages.ToString()
     Return str
End Function

Y esta function se usaría del siguiente modo:

=”Page ” + Code.PageNumber() + ” of ” + Code.TotalPages()

Más información en este enlace.

iV. ¿Qué es necesario para poder exportar un informe a formato Word?

Aquí la opción sería exportar el informe a Excel que si es editable y es un formato de salida más característico para volcar informes. De todos modos, si es un requisito que el informe se pueda exportar a Word, la opción pasa por que te crees una extensión de renderizado que te lo permita. En la misma:

  • Se tendría que coger el rdl de tu informe.
  • Llamar a la extensión de procesamiento de SSRS.
  • Construir el documento Word (la extensión de renderizado) en el que vas a mostrar los resultados.

Precisamente este es uno de los puntos de extensibilidad de la plataforma de SSRS. Crear la extensión no es para nada trivial, y hay productos de terceros como este. Habrá que ver con SQL Server 2008 como se comporta una de las novedades con las que viene: renderizado de informes en Microsoft Word.

Preguntas para las que no tengo todavía respuesta en esta sección

Aparte de estas cuestiones que he podido resolver de forma más o menos completa, tengo otras que todavía no he resuelto de manera clara y que os dejo aquí por si alguien en la comunidad tiene la respuesta para las mismas:

i. ¿Es posible adaptar las celdas de un informe al tamaño del contenido que tendrán? O lo que es lo mismo, ¿Se puede ajustar de manera dinámica la anchura de los controles de tipo TextBox que forman el informe?

Las celdas de un informe (controles TextBox) sólo permiten jugar visualmente con el atributo Width. Por lo tanto, parece que la única opción para este requerimiento pasa por:

  • Ver si con código in-line puedes acceder a estas propiedades utilizando ReportItems.
  • Probar lo mismo con un ensamblado.
  • La última opción es que pases del BI Management Studio y te crees una aplicación que genere el informe y tenga esa funcionalidad….

ii. ¿Cómo se puede conseguir impresión dúplex para el caso de tener sub-informes en un informe?

Tenemos un report con un subreport dentro de una lista. Si se quiere imprimir ese informe en Duplex, el problema es que los subreport pueden tener tanto páginas pares como impares.

Espero que el post os haya resultado de interés. Seguiré con esta serie de faqs próximamente.

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

8 comentarios en “SQL Server Reporting Services: Preguntas y Respuestas (I)!”

  1. Vaya, muy interesante :). En SSRS algunas veces podemos hacer las cosas de diferentes modos, no está de más saber otras opciones.

    Esperaré el siguiente con ganas [:D].

    Saludos!!!

  2. Je Je…pues si Fran…a ver si te arrancas y nos cuentas también otras alternativas a estas preguntas y sobre todo las que tengo medio resueltas :PPPP

    Un saludo

    JC’s

  3. Si vieses todos los comentarios(en el blog) que genera el hablar de SSRS y que tengo sin poder responder por falta de tiempo :S, es para asustarse.

    Eso sí, tengo post pendientes, jejeje.

    Saludos Juan Carlos

  4. Pa’ que contarte Fran…resulta que tengo hecho un documento de Faqs para SSRS desde hace más de un mes…pero bueno, poco a poco lo iremos sacando a la luz 😉

    Un saludo

    Jc’s

  5. Tengo una pregunta.
    Como le hago para usar archivos de recurso en mi reporte. me necesidad es la siguiente

    tengo un reporte y quiero que ese reporte se muestre en el idioma correspondiende para la localizacion del usuario.

    como hago que el reporte sea localizable y como le digo de donde consuma los recursos.

    saludos.

  6. Hola cux,
    La clave está en utilizar un ensamblado que se encargue de realizar estas traducciones aprovechando que podemos detectar la cultura del usuario mediante User!Language. Más información sobre el tema en:
    http://technet.microsoft.com/en-us/library/aa964130.aspx
    Otra posibilidad es jugar con parámetros de informe y buscar las traducciones en la BD. Esta opción no me convence porque puede penalizar el rendimiento. Enlaces sobre este tema:
    http://bobp1339.blogspot.com/2007/10/multi-language-reports.html
    http://blogs.msdn.com/bwelcker/archive/2007/07/11/laser-guided-missiles-report-localization-through-parameters.aspx

    Un saludo

    JC’s

  7. Tengo una inquietud, necesito generar un reporte que contiene un listado de empleados por empresa, pero debo ponerle la paginacion en el cuerpo del reporte Pagina x de y, pero por empresa, es decir que si el listado de la empresa A se imprime en dos paginas, debe ser Pagina 1 de 2 y Pagina 2 de 2, para la siguiente empresa debe ser pagina 1 de 1.
    Alguien sabe como lo puedo hacer?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *