21
Reporting Services con formato y filtros

Tutorial Reporting Services

Embed Size (px)

Citation preview

Reporting Services con formato y filtros

(local) o nombre de PC

Usuario y Clave de SQL Server

Nombre de la base de datos

Consulta:

SELECT p.Title As Titulo, ISNULL(p.FirstName,'')+' '+ISNULL(p.MiddleName,'')+' '+ISNULL(p.LastName,'') AS NombreCompleto, pp.PhoneNumber AS Telefono, ea.EmailAddress AS Email, a.AddressLine1 AS Direccion, a.City AS Ciudad, sp.Name AS Estado, a.PostalCode AS CodigoPostal, cr.Name AS Pais FROM Person.Person AS p INNER JOIN Person.BusinessEntityAddress AS bea ON bea.BusinessEntityID = p.BusinessEntityID INNER JOIN Person.Address AS a ON a.AddressID = bea.AddressID INNER JOIN Person.StateProvince AS sp ON sp.StateProvinceID = a.StateProvinceID INNER JOIN Person.CountryRegion AS cr ON cr.CountryRegionCode = sp.CountryRegionCode INNER JOIN Sales.Customer AS c ON c.PersonID = p.BusinessEntityID LEFT OUTER JOIN Person.EmailAddress AS ea ON ea.BusinessEntityID = p.BusinessEntityID LEFT OUTER JOIN Person.PersonPhone AS pp ON pp.BusinessEntityID = p.BusinessEntityID

Hasta aquí hemos diseñado el reporte, ahora vamos a darle Formato(color, tamaño)

Insertamos título del reporte

Ahora vamos a pintar de color las filas cuyos títulos sean “Ms.”

Explicación:

=IIf(Fields!Titulo.Value="Ms.","Red","White")

Iif(Condicion,Retorno si es verdadero, Retorno si es verdadero)

Condicion= Fields!NombredelCampo.Value = “Ms”

Color si es verdadero= “Red”

Color si es falso= “White”

Observación: “Ms.” Entre comillas porque es texto, si fuera número no se coloca comillas

Ahora vamos a agregar un filtro: Pais

Primero agregamos un nuevo conjunto de datos

Consulta:

--Los paises estan en la tabla Person.CountryRegion, y su llave primaria es tipo varchar SELECT NULL AS CodigoPais, 'TODOS' AS Pais UNION ALL SELECT CountryRegionCode AS CodigoPais, Name AS PAIS FROM Person.CountryRegion

Explicación

El primer registro la consulta tiene como código NULL y de Valor a Mostrar TODOS, el NULL se usara más abajo con la función COALESCE

UNION ALL se usa para juntar dos Consultas(SELECT) las cuales deben tener los mismos nombres de columnas( CodigoPais y Pais)

Además tenemos que agregar un parámetro

Ponemos Tipo de Datos Texto porque la clave primaria(PK) de la tabla de Paises(Person.CountryRegion) es tipo Varchar, si fuera int usar Entero, activamos Permitir NULL

Finalmente modificar la consulta del conjunto de datos “ListaClientes”

SELECT p.Title As Titulo, ISNULL(p.FirstName,'')+' '+ISNULL(p.MiddleName,'')+' '+ISNULL(p.LastName,'') AS NombreCompleto, pp.PhoneNumber AS Telefono, ea.EmailAddress AS Email, a.AddressLine1 AS Direccion, a.City AS Ciudad, sp.Name AS Estado, a.PostalCode AS CodigoPostal, cr.Name AS Pais FROM Person.Person AS p INNER JOIN Person.BusinessEntityAddress AS bea ON bea.BusinessEntityID = p.BusinessEntityID INNER JOIN Person.Address AS a ON a.AddressID = bea.AddressID INNER JOIN Person.StateProvince AS sp ON sp.StateProvinceID = a.StateProvinceID INNER JOIN Person.CountryRegion AS cr ON cr.CountryRegionCode = sp.CountryRegionCode AND cr.CountryRegionCode = COALESCE(@Pais,cr.CountryRegionCode) INNER JOIN Sales.Customer AS c ON c.PersonID = p.BusinessEntityID LEFT OUTER JOIN Person.EmailAddress AS ea ON ea.BusinessEntityID = p.BusinessEntityID LEFT OUTER JOIN Person.PersonPhone AS pp ON pp.BusinessEntityID = p.BusinessEntityID

Explicación:

COALESCE(Parametro1,Parametro2)

Si el Parametro1 es null, se devuelve el Parametro2

Entonces si es NULL la condición seria

AND cr.CountryRegionCode =cr.CountryRegionCode Devuelve todos los paises

Agregamos la columna país al reporte

En vista previa quedara así

Escogemos un país

Espero haber sido lo más claro posible.

Suerte y seguid aprendiendo y compartiendo.