domingo, 19 de mayo de 2013

[Reporting Service] [Dynamic CRM] - Integrar con google maps (1/2)

 

Introducción


La utilización de mapas para aportar valor en las aplicaciones es un aspecto cada vez mas requerido, las aplicaciones CRM están especializadas en trabar con cliente por lo que conocer su distribución aporta valor al usuario.

En este caso uniremos tres tecnologías Dynamic CRM el cual nos aportara los datos de las cuentas, Reporting Service para el listado de información, y Google Maps para obtener la imagen del mapas que será incrustado en el reporte

Por lo extenso del articulo se realizaran dos partes, esta primera donde se verán los pasos necesarios para la creación del reporte y su edición en el Visual Studio

Una segunda parte se encargara de presentar como integrar la librería dll con el reporte y su posterior publicación en CRM.

 

Creación del reporte desde Dynamic CRM


El primer paso será definir la estructura básica del reporte, para esta tarea nos ayudaremos con el el wizard que provee CRM.

1- Creamos el nuevo reporte

image

 

2- Se define como entidad primaria al cliente

image

 

3- Se definen los filtros si hace falta, en este caso solo listaremos los clientes de Buenos Aires

image

 

4- Se definen las columnas del reporte

image

 

5- Se aceptan los cambios validando que la entidad asociada sea la cuenta

image

 

Estos pasos nos permitirán contar con una estructura básica del reporte que mas tarde usaremos para vincular con la librería encargada de generar la imagen del mapa.

Ejecutamos el reporte para validar que este correcto

SNAGHTML20981b19

image

 

Edición Reporte desde Visual Studio 2008


El siguiente paso requiere de Visual Studio 2008 con las tools de Business Intelligence las cuales se instalan al agregar el Sql Server 2008 Express Advanced Services, este incluye el servicio de Reporting Service.

En el Visual Studio deberíamos poder crear un proyecto como el siguiente:

SNAGHTML2abc8dae

 

En CRM ubicamos el reporte y lo editamos

image

Usamos la opción para descargar el reporte como archivo rdl

image

El archivo descargado lo deberíamos ubicar en la carpeta del proyecto que creamos con el Visual Studio

image

Para luego agregarlo al proyecto

SNAGHTML2acbd8d2

 

Si editamos el reporte veremos que se conserva el diseño, así como la información de conexión y campos disponibles

SNAGHTML2acf227e

 

Es aquí donde vamos a definir la invocación a la librería que devolverá la imagen con el mapa de google representando la ubicación de los cuentas.

En el siguiente articulo veremos como crear el componente y vincularlo al reporte.

2 comentarios:

  1. Buenas noches Leandro.
    Disculpa.

    Tengo una duda que quiero consultarte.

    Tengo un reportviewer que carga un rdlc con información agrupada , los datos provienen de una vista y el tabladapter desde un procedimiento almacenado, el filtrado es entre el campo semestre(2014) y hora 1 minuto 1, hora 2 . minuto 2,(6-0 23-0).

    como puedo visualizar los registros no coincidentes en la consulta? es decir ,por ejemplo tengo 300 registros totales en la vista, al filtrar en una franja horaria me muestra 250, pero necesito ver en otro group los 50 registros restantes, como lo haría Amigo leandro?

    este es el procedimiento:


    procedure [dbo].[spbuscarReporteAulas]

    @Año varchar(20)=null,
    @Consecutivo varchar(20)=null,
    @Dia nvarchar(10)=null,
    @H1 varchar(20)=null,
    @M1 varchar(20)=null,
    @H2 varchar(20)=null,
    @M2 varchar(20)=null,
    @BloqueAula varchar(20)=null,
    @Jornada nvarchar(50)=null,
    @Sede nvarchar(50)=null,
    @TipoAula nvarchar(150)=null

    as
    SELECT Ano,Consecutivo,[Id Grupo],[Codigo Asignatura],Grupo,Asignatura,TipoAula,BloqueAula,[TotalHoras],Dia,H1,M1,H2,M2,Desde,Hasta,Aulas,Aula,Jornada,Sede,Capacidad FROM [dbo].[VISTA ] WHERE H1 >=@H1 AND M1>=@M1 AND H2<=@H2 AND M2>=@M2 AND Dia = (Case when @Dia is null then Dia else



    @Dia end)and BloqueAula = (Case when @BloqueAula is null then BloqueAula else
    @BloqueAula end)
    and Jornada = (Case when @Jornada is null then Jornada else
    @Jornada end)

    and Sede = (Case when @Sede is null then Sede else
    @Sede end)

    and TipoAula = (Case when @TipoAula is null then TipoAula else
    @TipoAula end)

    and jornada = (Case when @jornada is null then jornada else
    @jornada end)

    and Ano = (Case when @Año is null then Ano else
    @Año end)

    and Consecutivo = (Case when @Consecutivo is null then Consecutivo else
    @Consecutivo end)

    Mil gracias Leandro.

    ResponderEliminar
  2. hola Orlando

    se me ocurre que el reporte podria tener dos origenes de datos, uno que liste los 250 registros y otra vista que retorne el resto

    entonces al reporte le defines dos reportsource y dos tablas para que muestre ambos grupos de datos

    saludos

    ResponderEliminar