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(III/III)

En este post voy a explicar algo que ya he podido nombrar seguro en alguno que otro post, pero a nivel más básico, así otras personas que no han visto nunca Reporting Services podrán verlo de un forma más clara y luego comprenderán mejor los otros post sobre Reporting que ya hay en mi blog y que pondré al final de este.

Parámetros:

Cuando necesitamos mandar información adicional a nuestro informe, aparte de la que ya le provee la fuente de datos(datasource), podemos crear parámetros. Este podemos crearlo desde el menú informe.

Parametros

Dentro de esta pantalla podremos configurar el tipo de parámetro que será, si está oculto, interno, es multivalor, permite nulos o permite valores blancos. También si tendrá valores disponibles por defecto o no, y como si escritos a mano o vienen de una consulta. Por ultimo, si habrá algún valor por defecto para el parámetro a la hora de ejecutar el informe(también a mano, desde consulta o nada(null)).

Estos parámetros pueden utilizarse desde cualquier sitio donde se pueda poner una expresión. Y la forma de ponerlos es así: Parameters!NombreDelParámetro.Value
Como ejemplo podemos ponerlo en el value de un textbox o la pestaña datos. En el textbox mostrará lo que le pasemos al parámetro y en la pestaña de datos, lo que hará será ejecutar lo que le pasemos por el parámetro(con sus consecuencias [;)]).

Puedes ver como crear y pasar parámetros a través del ReportViewer aquí.

Imágenes:

Debemos de diferenciar dos tipos a pesar de ser lo mismo, imágenes incrustadas y control image.
Una imagen incrustada es una imagen que se queda dentro del informe y que no se puede cambiar(bueno, hay trucos como todo) a menos que sea en diseño. Esta la definimos en tiempo de diseño y la añadimos mediante un control image.
Si metemos directamente un control image a nuestro informe, no nos saldrá una ventana para elegir imagen desde el principio, sino una con cuatro opciones: incrustada(hace lo mismo que la anterior), imagen que se guarda como parte del proyecto, imagen desde base de datos y desde web.

Propiedades del Informe:

Si pulsamos el menú informe, podemos ver una serie de pestañas donde configurar el diseño de la página, poner nuestro nombre  y entre otros(todos muy intuitivos) podemos meter código(solo en visual basic) o dlls con funcionalidad(estás si pueden estar en c# y vb.net).

Expresiones:

Cuando creamos un informe, nos puede llamar la atención(o marearnos) el símbolo expresión SExpression . Este icono nos abre un editor como este:

editorexpresiones

Cuando hemos creado nuestro datasource en la pestaña datos, podemos crear nuestros SQLs personalizados. Tan solo tendremos que ponerla en el espacio en blanco que hay más abajo(imagen anterior).
Pero si queremos añadir parámetros por ejemplo ya no nos valdrá ponerlo con el caracter @ sino con una expresión. Podríamos poner algo así:
="Select * From MiTabla Where MiTabla.MiCampo = " & Parameters!MiParametro.Value
¿Qué es esto?, pues esto es una expresión hecha en visual basic y el igual el comodín o caracter que nos indica que hay una expresión delante.

Desde el editor de expresiones, podemos utilizar expresiones globales, campos, operadores, iif, switch, funciones propias desde código o desde dlls o parámetros entre otros. Es una buena forma personalizar nuestros campos de una tabla, una sql o simplemente jugar un poco con el diseño y estilo de nuestros informes. Nada se escapa a la imaginación y todo lo que se te ocurra puedes aplicarlo de una u otra forma [:D].

Espero que estos tres artículos te haya servido para empezar a caminar con Reporting Services, .NET y sus informes.

Mas sobre Reporting Services en mi blog: http://geeks.ms/blogs/fdiaz/archive/tags/Reporting+Services/default.aspx

Un Saludo

Posted: 14/1/2008 10:11 por Fran Díaz | con 20 comment(s) |
Comparte este post:

Comentarios

Hernán ha opinado:

Hola Fran,

Quería preguntarte si al reportviewer hay alguna forma de pasar como parámetro un objeto de negocio...? sólo he visto que puede recibir parámetros de 5 tipos de datos diferentes (boolean, datatime, integer, float y string), pero ninguno hace referencia a un tipo como, por ejemplo, object.

La pregunta es porque tengo un objeto que tiene todos los parámetros que necesito para colocar en la cabecera del reporte (son muchísimos y no me parecería una buena práctica declarar XXX parámetros).

He creado un datasource que trae mi objeto de negocio, y lo puedo usar solamente en el cuerpo del reporte, pero necesito varios datos de este objeto en la cabecera.

Habrá alguna forma de poder hacer esto?

Desde ya muchas gracias.

Saludos.

Hernán.

# February 15, 2008 8:17 PM

Fran Díaz ha opinado:

Hola Hernán,

siento decirte que en la cabecera y en el pie no se pueden incluir parámetros. Puedes crearte algunos parámetros y

usarlos como líneas en la cabecera. Por ejemplo si tienes tres líneas en la cabecera, pues creas tres y ahora

concatenas los valores que necesites y se los pasas a la cabecera.

No es una solución muy buena que digamos, pero es una forma más de hacerlo.

Un Saludo

# February 17, 2008 1:56 PM

Jorge Conil ha opinado:

Hola Fran,

Antes que nada, gracias por el trabajo que has hecho. Ahora si puedo abusar un poquito de tu amabilidad, dejame que te haga una consultita:

Se puede desde el form de VB manejar la configuracion de la pagina que va a tener el reporte?

Yo he visto que está el boton (PageSetup) en la barra de herramientas del reporte, pero me gustaria ya dejarlo pre-establecido antes de que lo cargue... por ej que sea una pagina A3 y orientacion Horizontal...

Nuevamente, gracias.

Jorge C.

# February 22, 2008 12:11 PM

Rubén ha opinado:

Tengo un problema, necesito que por defeto unos informes se impriman en horizontal, dado a que hay muchos campos, y cada vez que paso por la vista diseño a vista previa tengo que modificar la orientación de la pagina de vertical a horizontal y me supone un problema ademas que al darle a imprimir tambien tengo que modificarlo antes. En las propiedades de informe hay un apartado de codigo, hay alguna sentencia que pueda utilizar???

Saludos.

# February 22, 2008 12:45 PM

Fran Díaz ha opinado:

Hola Jorge,

Claro que puedes, cuando diseñas el informe, en el menú informe->propiedades puedes configurar eso y otras cosillas Wink.

Un Saludo

# February 22, 2008 1:05 PM

Jorge Conil ha opinado:

Hola Franz, gracias por el consejito, he podido configurar la pagina con la medida deseada, mi consulta ahora es la siguiente: porque me imprime el informe de forma acostada en la hoja?

Me fije en la configuracion de la impresora y está bien config.

Porque puede ser?

# March 3, 2008 6:00 PM

Jose Somarriba ha opinado:

Hola tengo ya el reporte pero el procedimiento almacenado recibe un parametro, como hago para ingresarle el valor al parametro si no se donde buscarlo y como acceder a el. Gracias

# March 3, 2008 10:30 PM

maria ha opinado:

Hola,

yo quería preguntarte si hay alguna forma de acceder al dataset que alimenta el reporte(una vez publicado en el servidor de reportes) desde un winform

# March 6, 2008 11:43 AM

Fran Díaz ha opinado:

Hola,

Maria, ya lo estamos hablando por correo, cuando tengamos la solución ponemos el problema aquí para otras personas Wink.

Jorge Conil, cuando diseñas el informe, tienes un menú llamado informe, vete a él, luego a propiedades y luego configuras tú página. Tal como se ve en el ReportViewer(si es este el que utilizas) tiene dos formas de visualización, vista diseño(o similar, no recuerdo bien ahora de cabeza) o vista impresión. Es esta última, la configuración que tendrá a la hora de imprimir, no te fies mucho de la otra ya que algunas veces nos juega malas pasadas.

Espero que os sirvan las respuestas, si no por aquí seguiremos Smile.

Un Saludo

# March 6, 2008 1:29 PM

bertone ha opinado:

Hola Fran,

Me gustaría saber si Reporting Services 2005 es una buena herramienta para generar informes profesionales a nivel de formatos (Facturas, Albaranes, Pedidos,...etc). Llevo algún tiempo utilizando Reporting, pero estoy viendo que es algo limitado a la hora de crear este tipo de informes (Paginaciones, insertar datos en pies de página, muy complicado formatear secciones en el cuerpo del informe(cuadros y lineas), la vista previa en web se desvirtua y no se asemeja en nada a la hora de exportar a pdf, etc. Anteriormente había utilizado Crystal Report y se hacían del tirón.

Un saludo.

# March 11, 2008 1:48 PM

Fran Díaz ha opinado:

Hola Bertone,

La verdad es que llevas razón en lo de que la vista previa en la web, da mucho que desear. Pero es mayoritariamente cuando pones varios elementos encima de otros Sad. Por lo demás, yo no le ví muchos problemas. Si aún andas pensando en cual escoger, prueba la CTP de SQL Server 2008, a ver que tal Smile. Yo estoy a ver si le hecho un rato.

Un Saludo

# March 17, 2008 7:50 PM

Fran Díaz ha opinado:

Hola Jose Somarriba,

Te he dejado un ejemplo de como ejecutar un SP en SSRS en esta dirección: geeks.ms/.../reporting-services-llamar-a-un-procedimiento-almacenado-desde-ssrs.aspx

Ya me contarás que tal [;)].

Un Saludo

# March 18, 2008 11:20 AM

Jose Somarriba ha opinado:

Gracias primer.

Primer Problema. Todo lo que has explicado con anterioridad del I II III son todos hechos con un Project de Report Server y yo no estoy trabajando exactamente asi, estoy usando un control reportViewer en donde le digo diseñar un reporte y lo crea en la capa web, entoces hago la matriz con los datos que necesito del data set de SP, luego me voy a donde estar el reportviewer y le digo que vea al reporte1 y automaticamente se genera un objectDataSource que viene desde el reporte que llama al sp. Alli deberia de funcionar pero tenia que hacer algo para pasarle parametro y ya lo descubri, fue una matada de 2 semanas y al fin lo pude hacer. Ya este no es problema

Este es mi problema: Quiero que la matris tenga la funcionalidad de excel que se llama Inmovilizar Paneles pero en mi reporte. Gracias.

# March 18, 2008 9:25 PM

Fran Díaz ha opinado:

Hola Jose Somarriba,

Perdona mi ignorancia, pero ¿qué significa: "que la matris tenga la funcionalidad de excel que se llama Inmovilizar Paneles"?

Un Saludo

# March 19, 2008 10:37 AM

Jose Somarriba ha opinado:

es que digamos el reporte se hace muy grande hacia las derecha porque lleva todos los dias del mes entoces. COmo sabes la matriz te permite que la información se extienda hacia abajo y hacia la derecha. la informamcion es mucha hacia la derecha entonces se crea un scroll

el cual quiero que funciones pero que la informacion que va hacia abajo no se mueva con el scroll solo lo delos dia osea la de la derecha.

como lo que hace el excel con lo de congelar paginas

# March 24, 2008 5:20 PM

David ha opinado:

Holas, muchas gracias por el post,soo una duda, como pueo mostrar el reporte en ASP.NET (C#)????

ya tengo hecho mis reportes pero no he podido visualizarlos en ASP.NET.

espero pueda ayudarme con eso!

# March 25, 2008 1:07 AM

maria ha opinado:

Hola Fran,

Me gustaría saber como ver una fila determinada al cargar un report.Es decir, en un informe con varias paginas, en lugar de que se muestre la primera pag, ver un lugar intermedio.

Se que se pueden utilizar bookmark, pero necesito ver la fila al ejecutar, sin un evento previo.

Un saludo

# March 26, 2008 10:15 AM

maria ha opinado:

Hola Fran,

tengo alguna duda del funcionamiento de informes en remoto.Me gustaria que me lo pudieses explicar.

El caso es que tengo los informes ya procesados en el servidor.(como una instantanea)

Cuando lo visualizo en el reportviewer, lo hago con la instruccion refreshreport.

La primera pregunta es, refreshReport ejecuta otra vez el informe?(porque si es asi no me interesa)

Lo digo porque en mi formulario tarda mucho en visualizarse los datos.

Necesito que si ya tengo un informe procesado en mi servidor,al traerlo a mi aplicacion no se tarde mucho en visualizarlo.

¿tengo que utilizar otro metodo?

me lo puedes aclarar?

muchas gracias

# April 1, 2008 2:48 PM

maria ha opinado:

hola Fran,

yo tengo un problema con las marcas de contraer y expandir.

Resulta que cuando visualizo el informe en un visor, me lo muestra todo contraído.Pincho para desplegar y va bien.

Pero luego cuando vuelvo a pinchar no me lo contrae.

Si esto lo hago en el servidor de informes funciona correctamente

¿tienes alguna idea?

Además, cuando vuelvo a ejecutar la aplicacion, el mismo informe se ve expandido, es decir, se visualiza con el ultimo estado

no sé qué es lo que está pasando

muchas gracias y enhorabuena por tu blog.

# April 1, 2008 2:48 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:20 AM