Fran Diaz

Reporting Services, Business Intelligence, tecnologías Microsoft y otros

Email Notifications

Recent Posts

Tags

News

Community

Comunidades

  • OnobaNET
  • Grupo de usua
  • INETA
  • Culminis
  • Zona de Grupos de Usuarios Online
  • Foro MSDN Español: Colaborador
  • CartujaDotNet

Webs Amigas

Archives

Reporting Services in Visual Studio 2005(I/III)

Hasta ahora he estado escribiendo sobre Reporting Services(entre otras cosas) en mi blog, empezé con una pequeña introducción a él y algún que otro ejemplo o truco al respecto.
Mirando en algún que otro foro, noto que a pesar de ser fácil(más cuando lo manejas a menudo), cuesta mucho crear el primer informe, ya que hay varias formas de hacerlo: de forma local o de forma remota, con la versión express o sin ella.
Para ayudar a crear, implementar y consumir un informe de una forma más sencilla, voy a hablar sobre como crear nuestro informe de las dos formas posibles desde cero y las características de este durante tres post. 

Diferencias:

Cuando creamos un informe que es de tipo local este se crea con la extensión RDLC y cuando el informe es de tipo servidor, este se crea con la extensión RDL. Pues bien, si queremos utilizar un informe de tipo servidor de forma local tan solo tendremos que cambiar la extensión de este a rdlc o lo que es lo mismo añadir una "c" al final del archivo.

¿Porque convertirlo de tipo servidor a tipo local?
Pues muy sencillo, cuando creamos un informe de tipo local, en su vista diseño como veremos luego, tan solo sale el diseñador para arrastrar controles, campos, formulas y demás relacionados con el diseño. En un informe de tipo servidor, cuando lo creamos, nos aparecen tres pestañas para configurar nuestro informe. Pestaña Datos, Diseño y Vista Previa.
En la pestaña de datos, podremos configurar todo lo relacionado con los datos(sql, proveedores y consultas propias) más fácilmente. En la pestaña de datos, es donde arrastraremos nuestros controles  de diseño y campos para la creación de la vista final de nuestro informe.
En la vista previa, podremos ver una vista real de nuestro informe tal como quedaría cuando lo llamásemos desde un explorador Web o desde el control ReportViewer.

Creación de un Informe Local:

¿Que necesitamos?: Visual Studio Standard o superior para poder utilizarlo con el control ReportViewer desde Windows Forms o Visual Studio Express(como mínimo) si solo queremos utilizar el informe con Web Forms. El porque este control viene en una versión y no en la otra, es una duda que aún tengo [:(].

Pasos a seguir:
Creamos un proyecto de tipo Windows Forms, añadimos un nuevo item de tipo informe.rdlc y aceptamos.
Una vez aceptado, tendremos esta pantalla:

Visual_Informe

Lo que tenemos que hacer ahora, es crear un nuevo origen de datos, para ello nos situamos en la pestaña orígenes de datos(2) y pulsamos en uno nuevo.

Al pulsar en uno nuevo, nos saldrá un nuevo asistente que nos pedirá el tipo de origen de donde obtendremos los datos. En mi caso, voy a utilizar una base de datos sql server llamada AdventureWorks(está disponible para descarga aquí). Pulsamos siguiente y configuramos nuestra cadena de conexión. Si ya teníamos otra de antes nos la dejará seleccionar y sino podremos elegir una nueva.
Una vez hecho esto pulsamos en siguiente y nos dejará escribir un nombre para la cadena de conexión que se guarda en el archivo de configuración. Este nombre lo dejaremos tal cual y pulsaremos siguiente.
En la siguiente pantalla podemos elegir de donde queremos obtener los datos. Tablas, vistas, SP o funciones(para el caso de sql server). Elegimos nuestra tabla, que en mi caso será Contact y a continuación finalizamos el asistente. Si miramos nuestra pestaña orígenes de datos deberíamos tener lo siguiente:

Contacts

Ya tenemos nuestro informe y los datos que vamos a utilizar en él. Ahora tan sólo tenemos que irnos al cuadro de herramientas(3) e insertar algunos controles.
Para este ejemplo voy a utilizar un control tabla. Este tiene un encabezado, un detalle y un pie. Si nos vamos a la pestaña orígenes de datos otra vez, podremos arrastrar los campos a las celdas de la tabla y ya tendremos enlazado nuestros datos con nuestro informe.

Nota: Si arrastramos los campos al encabezado o al pie, solo se mostrará el primer(o un sum de este si es numérico) registro de nuestra tabla(contact en mi caso), mientras que si lo añadimos al detalle añadirá una fila en la tabla por cada registro que tenga la tabla.

Ya está, ya tenemos nuestro informe creado. Ahora la pregunta es: ¿como lo llamamos?. Pues muy fácil, si nos vamos a un formulario de Windows Forms y seleccionamos del cuadro de herramientas(Pestaña datos), veremos el control ReportViewer, podremos arrastrarlo al formulario y mostrarlo ahí.
Una vez hecho esto, nos situamos en el control en la pestaña de arriba a la derecha, seleccionamos nuestro informe. Y con esto listo, ya podemos ejecutar nuestra aplicación con nuestro informe.

ReportViewer_SelectLocal 

Espero a ver sido claro, sino preguntad!!

Hasta la próxima!!!

Un Saludo.

Posted: 19/12/2007 13:24 por Fran Díaz | con 30 comment(s) |
Comparte este post:

Comentarios

Alberto ha opinado:

Bien Fran!!

A ver si de una vez por todas creo un informe guapo :).

Un saludo y buen trabajo.

# December 19, 2007 12:34 PM

Toni Recio ha opinado:

Pues en alguno que otro de los foros que comentas este artículo va a ser enlazado muuuuchas veces!

;P

Gran trabajo!

# December 19, 2007 1:46 PM

Fran Díaz ha opinado:

[Alberto] A ver si te sale de una vez y dejas ya el access hombre!!, jejeje.

[Toni] Esa es la idea, tener en algún sitio un enlace de rápido acceso Big Smile.

Un SaludT a los dos Wink!!

# December 19, 2007 2:09 PM

rubber ha opinado:

Buenas,

Lo siento por poner el post aki, pero es que me daba error en el apartado de "Contacto".

Estoy realizando una aplicación  bajo C# en Visual Studio 2005 y utilizo SQL Server 2000. La cuestión es que quiero hacer procedimientos almacenados y para ello necesito la referencia "Microsoft.SQLServer.Management.Common.ServerConnection", pero no tengo la referencia "Microsoft.SQLServer.Management", tengo la ".ConectionINFO" y unas cuantas más.

¿Qué es lo que tengo que hacer para poder añadir esa referencia?.

Estaría muy agradecido si me puedes proporcionar algo de información.

Muchas gracias,

Un saludo.

# January 1, 2008 9:00 PM

Fran Díaz ha opinado:

Vamos con esta segunda parte para trabajar con informes de Reporting Services. En este post, vamos a

# January 2, 2008 9:20 AM

Fran Diaz ha opinado:

Vamos con esta segunda parte para trabajar con informes de Reporting Services. En este post, vamos a

# January 3, 2008 10:02 AM

Fran Díaz ha opinado:

Hola Rubber

Mira a ver si este link te ayuda: support.microsoft.com/.../es

Un Saludo

# January 3, 2008 10:14 AM

Fabian ha opinado:

Hola Fran, he leido mucho sobre ti  y sabes mucho de esto , haber si me puedes ayudar, yo no puedo crear la fuente de datos pq estoy operando con una Base de datos Postgres, como puedo exportar desde un datatable mis datos hacie el reporte y luego visualizarlo en un ReportViewer?

gracias

Fabian

# January 13, 2008 6:58 AM

Leonardo ha opinado:

Buenas

Como deberia hacerlo si quiero enlazar el informe al resultado de un procedimiento almacenado en tiempo de ejecucion?

Muchas gracias

# January 21, 2008 8:21 PM

Fran Díaz ha opinado:

Hola a todos,

Fabian: Claro que puedes, en este post explico como manejar el ReportViewer

Enlace: geeks.ms/.../llamando-a-nuestro-informe-desde-el-reportviewer.aspx

Ya me contarás que tal.

Leonardo: Puedes pasarle la consulta a través de un parámetro, si ves el tercer artículo de esta entrega podrás orientarte un poco, sino ya seguimos hablando Wink.

Un Saludo

# January 22, 2008 9:24 AM

Elias ha opinado:

Hola frank, sabes como puedo mandarle parametros al reporte, por ejemplo si voy a imprimir una facura, me gustaria desde un form enviarle el numero de la factura dijitado por el usuario.

Tambien me gustaria saber si se puede usar un solo formulario contenedor del reporte, es decir que no tenga que crear tantos formularios como reportes halla, que exista un solo contenedor de reportes. Creo que se puede ya que en cristal report lo puedo hacer.

muchas gracias

# January 23, 2008 7:30 PM

Jrojas ha opinado:

hola tengo una pregunta en con los informes de  crystalreport yo generaba un solo control Crystalreportviewer y desde un Frm llamaba el rpt que necesitaba, esto para evitarme tener que crear un control Crystalreportviewer por cada informe en mi aplicacion como puedo hacer esto con los informes rdcl y el control reportviewer..,que la verdad me ha parecido muy bueno y tambien como puedo crear reportes basados en una consulta SQL....?

# January 30, 2008 6:03 PM

Fran Díaz ha opinado:

Hola a todos,

Elias, claro que puedes, puedes poner los parámetros dependiendo del informe que quieran abrir en el control. El control solo abre informes(tantos como tu quieras, eso sí de uno en uno por cada control reportviewer). Como pongas tu los campos para que seleccione el usuario es otra cosa Wink.

Jrojas,tan solo tienes que añadir el informe al control, tal como explico aquí: geeks.ms/.../llamando-a-nuestro-informe-desde-el-reportviewer.aspx

Date una pasada por estos post sobre reporting services, verás como seguro que te aclaras bastante, si aún así ves impedimentos o tienes dudas. Estaré por aquí.

Eso sí, no siempre contesto al momento, depende de mi tiempo Embarrassed.

Un Saludo

# January 31, 2008 3:22 PM

Jhon_cledes ha opinado:

He aqui mi problema nesecito que el reporte aparescan los datos que digito o genero desde otro formulario.

es decir pasar los textos de los controles nesesarios a los controles de mi reporte

tengo el reporte diseñado a la medida de una factura e imprime los textos que digito en el reporte mas quiero que imprima los datos que genero en el formulario.. le agradecere mucho su ayuda ..

# February 8, 2008 5:45 AM

Fran Díaz ha opinado:

Hola Jhon Cledes,

Create parámetros para pasarlos desde el formulario al informe. Tienes más información de como hacerlo aquí: geeks.ms/.../llamando-a-nuestro-informe-desde-el-reportviewer.aspx

Ya me contarás que tal.

Un Saludo

# February 17, 2008 1:41 PM

C Gomez ha opinado:

Hola Fran quisiera hacerte una pregunta acerca de los parametros.

Mi duda es la siguiente necesito agrandar el textbox de un Parametro ya que al momento de subirlo, tiene mal diseño en el momento de seleccionar este mismo ..

espero tu respuesta y muchas gracias..

# March 5, 2008 6:41 PM

Fran Díaz ha opinado:

Hola C Gomez,

¿Qué quieres decirme con que quieres agrandar el textbox?. Disculpa pero no lo entendí Tongue Tied.

Un Saludo

# March 6, 2008 1:36 PM

Emiliano Hasan ha opinado:

Hola Fran, como estas? Soy Emiliano de Argentina. Queria hacerte una consulta. yo ya hice el reporte esta todo OK. lo que tengo dudas es: para probarlo puse un boton que me lleva a un formulario donde puse el report viewer. lo que queria saber es lo siguiente: se puede usar ese formulario con el reporte para cualquier consulta?

La segunda pregunta es: si yo quiero generar el informe a partir de una consulta que no es unica sino son diferentes por ejemplo desde un form con un DataGridView, como se puede enlazar con los reportes?

Espero haber sido claro y agradecere tu respuesta.!!

Saludos!!

Emiliano Hasan

# March 10, 2008 6:42 PM

Fran Díaz ha opinado:

Hola Emiliano Hasan,

Puedes crearte un parámetro que se llame por ejemplo sql y luego estes lo pones en la parte de datos. Cuando estes

en tiempo de ejecución le mandas al parámetro la consulta y listo Smile. La única pega, es que los campos que tengan

la sql tienen que coincidir con los que hay en el informe, solo eso.

Un Saludo

# March 17, 2008 7:49 PM

Lucy ha opinado:

Hola Fran, ya te he escrito en otras ocasiones, mira necesito saber si hay forma de mandor como parametro el nombre de DataSet a cual quiero que accese o mejor dicho mandar como parametro el origen de datos a mi reporte... espero pronto tu respuesta y muchas gracias.

# March 18, 2008 9:10 PM

Fran Díaz ha opinado:

Hola Lucy,

¿Me puedes explicar un poco más como trabajas?. Es decir, ¿informes locales o de servidor?

si es verdad que no se puede hacer lo que quieres de un forma sencilla. Yo pasaría un xml

al informe y un dataset. Estos ya irían rellenos con los datos y el informe ya los

presentaría como tal. El como rellenarlo ya tendrías tú que currartelo [;)].

Ya me contarás que tal.

PD: Si no quieres ver cuando salen los comentarios, puedes suscribirte al RSS de

comentarios o suscribirte a un determinado artículo(necesitas registrarte antes como

usuario del sitio).

Un Saludo

# March 19, 2008 10:33 AM

Lucy ha opinado:

Hola de nuevo, si te comento mis reportes estan en el servidor, y lo que quiero hacer es por medio de paramentros yo le indique con que origen de datos quiero que trabajen mis reportes, he leido y me encontrado con el archivo xml, pero a lo que leido solo puedo pasar el nombre del servidor y el nombre de la base de datos a donde quiero que se conecte, pero no el nombre del origen de datos a donde quiero que se conecte, bueno espero que me puedas ayudar muchas gracias :d lucy.

# March 19, 2008 6:41 PM

I.S.C. Maximino Del Angel ha opinado:

es muy mala tu explicacion lo que la gente quiere saber es como crear e imprimir un ticket en asp.net con codigo visual basic.net

M.C: MAXIMIN0 DEL ANGEL.

# March 26, 2008 12:12 AM

paolobu ha opinado:

Hola Fran,

Un favor mira tengo un reporte elaborado en visual studio 2005 dentro de una aplicacion web, los datos que jala el reporte es de una clase de tipo generica, por intermedio del dataobject enlazo el metodo al reporte, donde el metodo de la clase es el que realiza la funcion del llenado y carga la lista generica, estos datos pasan al report donde es mostrado, mi problema es primero que no me sale el icono de impresion, y segundo ahora que necesito publicar esta aplicacion web donde debo poner el reporte en mi directorio virtual, en un servidor? deseo que el reporte pueda ser visualizada desde internet.

Gracias.

# April 4, 2008 3:33 AM

paolobu ha opinado:

Hola Fran,

Un favor mira tengo un reporte elaborado en visual studio 2005 dentro de una aplicacion web, los datos que jala el reporte es de una clase de tipo generica, por intermedio del dataobject enlazo el metodo al reporte, donde el metodo de la clase es el que realiza la funcion del llenado y carga la lista generica, estos datos pasan al report donde es mostrado, mi problema es primero que no me sale el icono de impresion, y segundo ahora que necesito publicar esta aplicacion web donde debo poner el reporte en mi directorio virtual, en un servidor? deseo que el reporte pueda ser visualizada desde internet.

Gracias.

# April 4, 2008 3:40 AM

Gerardo ha opinado:

Hola a todos:

    Fran Necesito consultarte un problemita.

      Quiero que mi reporte se imprima sin que se muestre el reportviewer, o en el inicio del mismo. (lo que deseo es que el usuario no tenga que presionar un boton de imprimir.)

                    Mil Gracias y Saludos a todos.

# April 7, 2008 12:27 PM

Rodrigo Diaz ha opinado:

Hola Fran, Tengo un reporte q se visualiza muy bien, pasa los parametros correctamente de eso no hay probleamas, a q lo voy, quisiera q se imprima el reporte sin visualizarse, eso q quiero hacerlo por la rapidez, x q hay muchos pedido y le toma un poco de tiempo al cajero visualizarlo y despues agarrar el mause y recien imprimir. esta hecho en ReportViewer vb 2005. de antemano mucho gracias fran por la repuesta.

# April 9, 2008 5:10 PM

Alfredo ha opinado:

Hola disculpa yo ya tengo jalando todo mi reporte bien excepto porke estoy usando formatos de hoja pesolalisados dado el giro de la empresa en la que trabajo mi pregunta es donde puedo ajustar los margnes para que ya keden definidos en el reporrte y el tamaño de la hoja donde se va a imprimir ???

# April 25, 2008 6:10 PM

Fran Díaz ha opinado:

Hola a tod@s,

Estoy contestando todos los comentarios en los foros de MSDN. Más información del porque la podéis encontrar aquí:geeks.ms/.../191-adi-243-s-a-los-comentarios-en-el-blog.aspx

Un Saludo

# April 26, 2008 10:18 AM