reporting services desde cero mauricio grimberg [email protected]
TRANSCRIPT
Reporting Services desde Cero
Mauricio GrimbergMauricio [email protected]@mug.org.arAxtonAxtonhttp://www.axton.com.ar/http://www.axton.com.ar/
Versiones Reporting Versiones Reporting ServicesServices
Reporting Services está ya disponible Reporting Services está ya disponible para SQL Server 2000para SQL Server 2000
En todo caso significativo los En todo caso significativo los conocimientos que veremos hoy conocimientos que veremos hoy aplican tanto al estadio actual de aplican tanto al estadio actual de Yukon y de la versión actual (2000)Yukon y de la versión actual (2000)
Para que esto sea evidente Para que esto sea evidente utilizaremos ambas versiones en este utilizaremos ambas versiones en este WebCast WebCast
Para comenzarPara comenzar
RDLRDL
Vistas del Report DesignerVistas del Report Designer
Data Source y DatasetData Source y Dataset
Business Intelligence Development Business Intelligence Development StudioStudio
Arquitectura de Reporting Arquitectura de Reporting ServicesServices
Basado en servidor, utiliza la Basado en servidor, utiliza la infraestructura de :infraestructura de :
SQL ServerSQL Server
Internet Information Services (IIS)Internet Information Services (IIS)
.NET Framework.NET Framework
Provee Provee
Un entorno “en la caja” que, a través de Un entorno “en la caja” que, a través de IDEs basadas en Visual Studio .Net e IDEs basadas en Visual Studio .Net e Internet Explorer consume y opera sus Internet Explorer consume y opera sus serviciosservicios
Una API completa de operación a través de Una API completa de operación a través de Web ServicesWeb Services
Ciclo de vida de un Ciclo de vida de un reportereporte
Estas son las áreas centrales de cualquier Estas son las áreas centrales de cualquier plataforma seria de Reporting y por la calidad y plataforma seria de Reporting y por la calidad y arquitectura de esos procesos debemos evaluar arquitectura de esos procesos debemos evaluar una soluciónuna solución
CreaciónCreación GestiónGestión SuministroSuministro
Generación del reporteGeneración del reporte
Conexión a origen de datosConexión a origen de datos
Consultas a dicho origenConsultas a dicho origen
Diseño del reporteDiseño del reporte
Parámetros del reporteParámetros del reporte
Asignación de propiedades tales Asignación de propiedades tales como ancho, alto, formatos, etc.como ancho, alto, formatos, etc.
Información de conexiónInformación de conexión
Valores de parámetros por defectoValores de parámetros por defecto
Nuevo proyectoNuevo proyecto
Nuevo reporte: New ItemNuevo reporte: New Item
Nuestro origen de datosNuestro origen de datos
Configuramos Configuramos el origen de el origen de datos que datos que vamos a vamos a utilizar utilizar (DataSource)(DataSource)
Si lo deseamos Si lo deseamos editamos la editamos la cadena de cadena de conexiónconexión
Si es Si es compartido compartido (Shared Data (Shared Data Source) Source) podremos podremos utilizarlo con utilizarlo con varios reportesvarios reportes
Conexión completaConexión completa
En este caso En este caso seleccionamos seleccionamos localhost, seguridad localhost, seguridad integrada y la base integrada y la base de datos de datos AdventureWorksAdventureWorks
Nuestro conjunto de datosNuestro conjunto de datos
Construimos Construimos una consulta o una consulta o la pegamos en la pegamos en la caja de la caja de textotexto
Esto construirá Esto construirá nuestro nuestro Dataset (es un Dataset (es un dataset por dataset por conjunto de conjunto de datos, sin datos, sin relación relación alguna con el alguna con el Dataset Dataset de .Net)de .Net)
Seguimos…Seguimos…
En los próximos pasosEn los próximos pasosSeleccionamos un reporte tabularSeleccionamos un reporte tabular
Elegimos una categoría por página, Elegimos una categoría por página, agrupar por producto y colocar las agrupar por producto y colocar las ventas en el detalle.ventas en el detalle.
No modificamos el diseñoNo modificamos el diseño
FinalizamosFinalizamos
Cambiamos a modo Cambiamos a modo PreviewPreview y y algunos defectos saltan a la vista, algunos defectos saltan a la vista, vamos a modificarlosvamos a modificarlos
Modificando el reporteModificando el reporte
En el modo Layout, en el Body del En el modo Layout, en el Body del reporte seleccione la reporte seleccione la table1table1
““Estire” el ancho de las columnas Estire” el ancho de las columnas arrastrando el ratónarrastrando el ratón
Cambie el título del reporte a algo Cambie el título del reporte a algo más significativo como “Reporte de más significativo como “Reporte de ventas por producto”ventas por producto”
Compruebe que el paradigma sigue Compruebe que el paradigma sigue siendo el clásico diseñador creado en siendo el clásico diseñador creado en los orígenes de Visual Basiclos orígenes de Visual Basic
FinalmenteFinalmente
Guardamos todo (Guardamos todo (Save allSave all))
En modo En modo PreviewPreview comprobamos los comprobamos los cambios realizadoscambios realizados
Cerramos el Cerramos el Business Intelligence Business Intelligence Development StudioDevelopment Studio si lo deseamos si lo deseamos
Un reporte desde ceroUn reporte desde cero
Agregaremos un reporte en blancoAgregaremos un reporte en blanco
Configuraremos nuestra DataSource Configuraremos nuestra DataSource y nuestro Datasety nuestro Dataset
Manejaremos el diseñoManejaremos el diseño
Instalaremos el reporte en el servidorInstalaremos el reporte en el servidor
Nuevo reporteNuevo reporte
Nuevamente agregamos un item pero Nuevamente agregamos un item pero esta vez es un esta vez es un ReportReport
Elegimos la vista Elegimos la vista DataData y generamos y generamos un un New DatasetNew Dataset al que asignamos al que asignamos un nombre, reutilizando la un nombre, reutilizando la Shared Data SourceShared Data Source y una y una sentencia SQL nueva.sentencia SQL nueva.
Para ello utilizamos consultas Para ello utilizamos consultas grabadas grabadas en archivos de texto.en archivos de texto.
Con eso queda definido nuestro Con eso queda definido nuestro conjunto de datosconjunto de datos
Nuestro primer objeto List Nuestro primer objeto List (1)(1)
Pase al modo Pase al modo LayoutLayout
““Estiramos” un poco el BodyEstiramos” un poco el Body a todo el a todo el espacio visible como para disponer de un espacio visible como para disponer de un área adecuadaárea adecuada
En la En la ToolbarToolbar hacemos un doble click en el hacemos un doble click en el elemento elemento ListList
Hacemos coincidir su tamaño con el del Hacemos coincidir su tamaño con el del BodyBody
Arrastramos, en este caso, el nombre del Arrastramos, en este caso, el nombre del campo campo CategoriaCategoria, desde la lista de campos , desde la lista de campos al lado izquierdo de la al lado izquierdo de la ListList
Oprima F4 para obtener acceso a las Oprima F4 para obtener acceso a las propiedades de la caja de texto: Cambie el propiedades de la caja de texto: Cambie el FontWeightFontWeight a a BoldBold
Nuestro primer objeto List Nuestro primer objeto List (2)(2)
En las propiedades de la En las propiedades de la ListList seleccione seleccione Grouping Grouping y luego la elipsis (…)y luego la elipsis (…)
En En Details Grouping Details Grouping en la lista en la lista ExpressionExpression elija elija =Fields!Categoria.Value=Fields!Categoria.Value y acepte y acepte
Arrastre el campo VentasProducto al Arrastre el campo VentasProducto al vértice superior derecho de la vértice superior derecho de la ListList
En la propiedades de la nueva caja de En la propiedades de la nueva caja de texto sleccione Format y aplique el valor texto sleccione Format y aplique el valor “0,0.00”“0,0.00”
Agregue algo más de prolijidad y guarde Agregue algo más de prolijidad y guarde todo.todo.
Observe el resultado pasando a la ventana Observe el resultado pasando a la ventana dede Preview Preview
Objeto Objeto ListList “anidado” “anidado”
Vuelva a la ventana Vuelva a la ventana LayoutLayoutArrastre Arrastre desde la Toolbardesde la Toolbar una nueva una nueva List List al al interior interior de la primera de la primera ListListAsegúrese de no cubrir las cajas de texto Asegúrese de no cubrir las cajas de texto anterioresanterioresElija el campo Elija el campo Producto Producto y arrástrelo al extremo y arrástrelo al extremo izquierdo de la segunda izquierdo de la segunda ListListHaga click en la segunda Haga click en la segunda ListList, seleccione , seleccione propiedadespropiedades y allí y allí GroupingGrouping y del mismo modo y del mismo modo que anteriormente agrupe allí por el campo que anteriormente agrupe allí por el campo ProductoProductoVuelva a arrastrar el campo Vuelva a arrastrar el campo Total ProductoTotal Producto al al extremo derecho de la segunda extremo derecho de la segunda ListListFormateeFormateeGuardeGuardeObserve nuevamente en la vista Observe nuevamente en la vista PreviewPreview
Corte de páginaCorte de página
Volvemos al modo Volvemos al modo LayoutLayout
Seleccionamos la primera listaSeleccionamos la primera lista
PropertiesProperties GroupingGrouping
Tildamos “Tildamos “Page Break at EndPage Break at End” en ” en DetailsDetails GroupingGrouping
Guardamos y vamos al modo Guardamos y vamos al modo PreviewPreview
Agregar parámetrosAgregar parámetros
Vamos al modo DataVamos al modo Data
Habilitamos el Diseñador de Habilitamos el Diseñador de consultasconsultas
Editamos la consulta agregando Editamos la consulta agregando “WHERE (Categoria = @Cat)”“WHERE (Categoria = @Cat)”
Eso va a generar un parámetro Eso va a generar un parámetro automáticamenteautomáticamente
GuardamosGuardamos
Vamos a la vista PreviewVamos a la vista Preview
Observamos con Report Observamos con Report Parameters lo que hemos generadoParameters lo que hemos generado
Registrar en el servidorRegistrar en el servidor
ConfigConfigu-u-ramos ramos el el servidservidor de or de reportreporteses
Luego Luego aplica-aplica-mos mos BuildBuild y y DeployDeploy
En adelanteEn adelante
Explorar los elementos del diseñador Explorar los elementos del diseñador y sus propiedadesy sus propiedades
Data Regions: Data Regions: matrix, list, chart, matrix, list, chart, rectangle, y subreportrectangle, y subreport
Incorporar conceptos más avanzados Incorporar conceptos más avanzados de diseño como por ejemplo gráficos, de diseño como por ejemplo gráficos, drill down, drill troughdrill down, drill trough
Utilización de Utilización de expresionesexpresiones
Gestión de reportesGestión de reportes
Administración de contenidosAdministración de contenidos
PermisosPermisos
CalendarizaciónCalendarización
CachingCaching
System RolesSystem Roles
Definen los permisos habilitados para Definen los permisos habilitados para un un GrupoGrupo o o UsuarioUsuario
Esto incluye la seguridad, los roles, la Esto incluye la seguridad, los roles, la calendarización de sucesos y las calendarización de sucesos y las propiedades del servidorpropiedades del servidor
Por defecto heredan de su Por defecto heredan de su ParentParent pero pueden ser modificadas de a pero pueden ser modificadas de a itemsitems..
Práctica (Report Manager)Práctica (Report Manager)
Crear un Crear un rolrol a nivel a nivel systemsystem
Aplicar un nuevo Aplicar un nuevo rolrol a nivel a nivel systemsystem a a un un grupogrupo
Crear un Crear un rolrol a nivel a nivel itemitem
Aplicar un nuevo Aplicar un nuevo rolrol a nivel a nivel itemitem a un a un reportereporte
Crear un rol a nivel Crear un rol a nivel systemsystem
Ejecute Ejecute http://localhost/Reportshttp://localhost/ReportsEn la esquina superior derecha seleccione En la esquina superior derecha seleccione Site SettingsSite SettingsCasi debajo de todo, en Casi debajo de todo, en SecuritySecurity seleccione seleccione Configure system-level role definitionsConfigure system-level role definitionsOprima el botón Oprima el botón New RoleNew Role casi arriba de casi arriba de todotodoNameName: : Analista de reportesAnalista de reportesDescriptionDescription: : Puede ver propiedades del Puede ver propiedades del servidor y manejar calendarizaciónservidor y manejar calendarizaciónSeleccione Seleccione Manage shared schedules, View Manage shared schedules, View report server properties y View shared report server properties y View shared schedulesschedulesAcepte para guardar los cambiosAcepte para guardar los cambios
Crear un rol a nivel ItemCrear un rol a nivel Item
Nuevamente vamos a Site SettingsNuevamente vamos a Site Settings
Ahora seleccionamos en Security: Ahora seleccionamos en Security: Configure item-level role definitionsConfigure item-level role definitions
Nuevamente New RoleNuevamente New Role
Name: SoloLecturaName: SoloLectura
Description: Sólo puede ver los Description: Sólo puede ver los objetos del Servidorobjetos del Servidor
Seleccione Seleccione View data sources, View View data sources, View folders, View reports, View resourcesfolders, View reports, View resources
Acepte y el rol quedará incorporadoAcepte y el rol quedará incorporado
Asignación de RolesAsignación de Roles
Vuelva a la Vuelva a la HomeHomeIngrese a la carpeta Ingrese a la carpeta RapidoRapidoSeleccione el reporte Seleccione el reporte InicialInicialPase a la hoja de Pase a la hoja de PropertiesPropertiesClick en Click en SecuritySecurityOprima el Botón Oprima el Botón Edit Item SecurityEdit Item SecurityClick en Click en EditEditSólo deje tildado Sólo deje tildado SoloLecturaSoloLecturaApplyApplyAhora los Administradores sólo tendran los Ahora los Administradores sólo tendran los permisos asignados a SoloLecturapermisos asignados a SoloLectura¿Quiere dejar todo como estaba?¿Quiere dejar todo como estaba?
Botón Botón Revert to Parent SecurityRevert to Parent Security en el tab en el tab SecuritySecurity del Reportedel Reporte
Planificación de la Planificación de la ejecuciónejecución
Los reportes pueden planificarse, Los reportes pueden planificarse, estableciendo fecha de refresco y creando estableciendo fecha de refresco y creando así así snapshotssnapshots (fotografías), estas (fotografías), estas fotografías son guardadas en un históricofotografías son guardadas en un histórico
Se pueden establecer momentos de Se pueden establecer momentos de ejecución, de manera de aprovechar ejecución, de manera de aprovechar horarios de bajo accesohorarios de bajo acceso
También pueden cachearse También pueden cachearse temporalmente para economizar recursostemporalmente para economizar recursos
¿Qué provee el Report ¿Qué provee el Report Manager?Manager?
Administración de la seguridadAdministración de la seguridad
PlanificaciónPlanificación
RepartoReparto
OrganizaciónOrganización
AdministraciónAdministración
NavegaciónNavegación
Report Manager (1 de 5)Report Manager (1 de 5)
Requiere Requiere Microsoft Microsoft Internet Explorer 6.0 Internet Explorer 6.0 con Service Pack 1 con Service Pack 1 (SP1) o Internet (SP1) o Internet Explorer 5.5 con SP2 Explorer 5.5 con SP2 como navegador como navegador cliente.cliente.Recuerde habilitar Recuerde habilitar Active Scripting en Active Scripting en Internet Explorer Internet Explorer en en la zona de Intranetla zona de Intranet
Report Manager (2 de 5)Report Manager (2 de 5)
Toda la Toda la funcionalidad funcionalidad de Reporting de Reporting Services (el Services (el Report Server) Report Server) está expuesta está expuesta como un como un servicio Webservicio Web
El Report El Report Manager es un Manager es un consumidor de consumidor de ese servicioese servicio
Report Manager (3 de 5)Report Manager (3 de 5)
El El Report ManagerReport Manager fue construido fue construido para apoyar sobre todo el manejo del para apoyar sobre todo el manejo del contenido dentro de la base de datos contenido dentro de la base de datos del servidordel servidor
Lo que hace es interactuar con el Lo que hace es interactuar con el Report ServerReport Server
Toda la información de los reportes Toda la información de los reportes se guarda en una base de datos de se guarda en una base de datos de SQL ServerSQL Server
Report Manager (4 de 5)Report Manager (4 de 5)
Utiliza la configuración de seguridad de Utiliza la configuración de seguridad de Windows (el usuario logueado)Windows (el usuario logueado)
Provee una carpeta My Reports para Provee una carpeta My Reports para configurar personalizaciónconfigurar personalización
Permite crear nuevas carpetas para Permite crear nuevas carpetas para facilitar la administraciónfacilitar la administración
Permite administrar totalmente los Permite administrar totalmente los orígenes de datos compartidosorígenes de datos compartidos
Report Manager (5 de 5)Report Manager (5 de 5)
Maneja Autenticación (identificación del Maneja Autenticación (identificación del usuario) y autorización (permisos del usuario) y autorización (permisos del usuario)usuario)
Los usuarios forman parte de rolesLos usuarios forman parte de roles
Los roles tienen acceso o no a Los roles tienen acceso o no a determinadas tareasdeterminadas tareas
Al instalar agrega una configuración por Al instalar agrega una configuración por defecto con roles predefinidos que defecto con roles predefinidos que conviene mantener pero que pueden ser conviene mantener pero que pueden ser incrementados con roles a definirincrementados con roles a definir
Procesos de Procesos de representaciónrepresentación
Diferentes formatos de presentación Diferentes formatos de presentación ((NONO de exportación) posibles de exportación) posibles
On LineOn LineHTML con Office Web ComponentsHTML con Office Web ComponentsMHTMLMHTML
Intercambio de DocumentosIntercambio de DocumentosTIFFTIFFPDFPDF
Intercambio de DatosIntercambio de DatosExcelExcelCSVCSVXMLXML
PrácticaPráctica
Exportar reportes a diferentes Exportar reportes a diferentes formatosformatos
ProgramaciónProgramación
Mediante APIs (scripting o .Net)Mediante APIs (scripting o .Net)CreaciónCreación
AdministraciónAdministración
PresentaciónPresentación
ExtensiónExtensión
Utilizando .Net assembliesUtilizando .Net assemblies
Creación de una librería para Creación de una librería para Reporting ServicesReporting Services
Hacer el deployment adecuadoHacer el deployment adecuado
Utilizar la función dentro de un Utilizar la función dentro de un reportereporte
Creación de una librería Creación de una librería para Reporting Servicespara Reporting Services
Reemplazar el Reemplazar el número de número de Versión en Versión en AssemblyInfo.vAssemblyInfo.vb por 1.0.0.0 b por 1.0.0.0 para evitar para evitar problemas de problemas de versionadoversionado
Una función para formateoUna función para formateo
Public Class CommonPublic Class Common
Public Public SharedShared Function ColorSegunValor (ByVal Function ColorSegunValor (ByVal Valor As Valor As Decimal, ByVal ValorMinimo As Decimal, ByVal ValorMinimo As Decimal, ByVal Decimal, ByVal ValorOptimo As Decimal) As ValorOptimo As Decimal) As StringString
Select Case ValorSelect Case ValorCase Is > ValorOptimoCase Is > ValorOptimo
Return "Green"Return "Green"Case Is > ValorMinimoCase Is > ValorMinimo
Return "SteelBlue"Return "SteelBlue"Case ElseCase Else
Return "Red"Return "Red"End SelectEnd Select
End FunctionEnd FunctionEnd ClassEnd Class
Hacer el deployment Hacer el deployment adecuadoadecuado
Compile la soluciónCompile la solución
Copie el binario (MGReportLibrary.dll) Copie el binario (MGReportLibrary.dll) a a C:\Program Files\Microsoft SQL Server\C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\MSSQL\Reporting Services\ReportServer\binbin y y C:\Program Files\Microsoft C:\Program Files\Microsoft SQLServer\80\Tools\Report Designer SQLServer\80\Tools\Report Designer o a o a los directorios adecuados del Report los directorios adecuados del Report Server y el Report DesignerServer y el Report Designer
Utilizar la función dentro Utilizar la función dentro de un reportede un reporte
En las En las Properties Properties del Report del Report agregue agregue la la ReferenciReferencia a la a a la libreríalibrería
El color de un Textbox…El color de un Textbox…
En este En este caso caso utilizamos utilizamos la librería la librería para para producir producir una cadena una cadena que que determina determina el color de el color de la fuente la fuente de un de un campo del campo del reportereporte
Por dónde continuarPor dónde continuar
Código embebidoCódigo embebido
Extensiones personalizadas de datosExtensiones personalizadas de datos
Generación de RDLGeneración de RDL
Utilidad RS (Scripting)Utilidad RS (Scripting)
Proveedor de WMIProveedor de WMI
VínculosVínculos
http://msdn.microsoft.com/vstudio/tryhttp://msdn.microsoft.com/vstudio/tryit/hosted/sql/reportingservices/it/hosted/sql/reportingservices/http://www.devx.com/dotnet/Article/2http://www.devx.com/dotnet/Article/267596759http://www.codeproject.com/aspnet/Shttp://www.codeproject.com/aspnet/SQLRSViewer.aspQLRSViewer.asphttp://msdn.microsoft.com/sql/defaulthttp://msdn.microsoft.com/sql/default.aspx?pull=/library/en-us/dnsql2k/htm.aspx?pull=/library/en-us/dnsql2k/html/RSDSetEx3.aspl/RSDSetEx3.asphttp://www.microsoft.com/http://www.microsoft.com/sql/reporting/default.mspxsql/reporting/default.mspx