en

MSGuayaquil

Recursos esenciales para el desarrollador .NET

Blog Comunitario

Campos de DataSet en el Cabecera de Reportes

Hola, soy novato con esto de los blogs y con reporting services esto se basa en un requerimiento que tuve recientemente, espero que si alguien más tiene un problema similar si le es de ayuda utilice lo aqui indicado en caso de existir una forma diferente de resolver el problema no duden en contarmelo 

Cuantas veces se nos ha pedido crear reportes con cabeceras con datos extraidos de la base, al menos a mi solo en una ocasión por lo cual me parecio una buena idea comentar sobre el.

El primer problema es que de forma directa no podermos seleccionar como valor de text el dato extraido por un dataset, despues de investigar en la red me tope que la solución era crear un ítem en el body del reporte y tomar el valor de ese item pero para conseguir esto se tiene que utilizar la coleccion ReportItems, con lo cual tendriamos lo siguiente

- item en el body con un valor = First(Fields!Campo.Value, "ds_nombre"), cambiando el nombre de text### a campoCabecera (esto no es necesario solo nos servira para evitar confusiones)

- item en la cabecera con un valor = ReportsItems!campoCabecera.Value

- Para evitarnos inconvenientes ponemos la propiedad del item campoCabecera hidden a true

Hasta aqui logramos ubicar el valor de un campo obtenido desde la base a un item en la cabecera del reporte pero podriamos toparnos con el siguiente problema (como fue en mi caso), si tenemos en cuenta que:

- La cabecera se mostrará en todas las páginas, y

- Tenemos ítems que produzcan quiebres de página (Page break), entre los más usados las tablas y los rectangulos (al menos los que mas he utilizado)

el problema radica en que dependiendo de la página donde se encuentre nuestro item será la pagina donde la cabecera poseera el valor esto es si el item esta en la página 2/4 solo en esta el item de cabecera aparecera con dicho valor en la otra aparecerá en blanco. Después de algunos experimentos me encontre con unos algo que al final utilice como herramienta para la resolución de este problema esto es la declaración de variables y de funciones en el reporte esto se realiza:

- Seleccionar la opcion Report Properties en el menu Reports

- Seleccionar el tab Code

dentro del text Custom Code podemos escribir codigo VB hasta el momento he probado declarar variables y funciones no he explotado más la herramienta, con lo cual declarando el siguiente codigo

Public dim nombrevariable as String = ""

Public dim i as Integer = 0

Public Function FncCampoCabecera(byval valorCampo as String) as String

i = i  + 1

if i = 1 then

nombrevariable = valorCampo

end if

return nombrevariable

End Function

esta función la usuaremos a continuación pero la pregunta sería como utilizar estas variables y funciones declaradas en el reporte? esto se realiza con Code, esto es dentro del valor de un item podriamos asignarle el valor de una variable haciendo lo siguiente = Code!nombrevariable y en el caso de funciones = Code!FncCampoCabecera(parametro) y como nos imaginamos podemos poner cualquier valor dentro de parametro el problema es que aunque tratemos de engañar a reporting services enviando el valor de un campo de un dataset y haciendo que la función nos retorne ese valor en la cabecera esto no funcionará porque nos indicará que no se puede utilizar campos de dataset en la cabecera por lo cual podemos utilizar lo anterior y enviar el valor del item campoCabecera, esto es = Code!FncCampoCabecera(campoCabecera.Value)

Con lo indicado anteriormente se puede ubicar el valor de un campo en la cabecera de un reporte y solucionar el problema de que desaparezca el valor en la cabecera al tener elementos que crean quiebres de pagina.

 

 

 

Publicado May 31 2007, 10:00 AM por cramtor
Archivado en:

Comentarios

 

evinces dijo:

me parce muy interesante tu post y bastante útil por cierto, muchas gracias por compartir con todos nosotros tu experiencia...

May 31, 2007 5:40 PM
 

cramtor dijo:

Disculpa por demorarme en responder gracias por tu comentario; si a mi me funciono, aunque no tengo mucha experiencia con reporting services, pero me pareció interesante compartir ese problema y una posible solución, espero poder publicar otros post sobre problemas que se me han planteado en el desarrollo de aplicaciones.

June 7, 2007 1:48 PM
 

Maya dijo:

Hola amigo tengo exactamente el mismo problema con el que te encontraste,  estoy tratando de seguir tus pasos pero al momento de declarar mi expresión donde mando a llamar la función no me reconoce el Code me lo marca como un error y no se a que se deba, quizá sea por la versión o no se me ocurre porque, si puedas darme una respuesta o alguien más te lo agradecería mucho!

                              Hasta pronto, saludos!!

September 5, 2007 3:09 PM
 

Maya dijo:

oye no me contestas !! y enserio que necesito solicionar esto, he hecho lo que indicas y sin embargo solo me sigue apareciendo el dato en la primea página no en todas!!! please ayuda!

gracias!!

September 12, 2007 12:15 PM
 

ales dijo:

donde se supone que quieres que ponga esto: Code!FncCampoCabecera(campoCabecera.Value)

en un parametro de informe, en un item de la cabecera por favor dime donde ponerlo no te entiendo nada y lo poco que te entiendo no funciona

September 12, 2008 5:37 AM

Deja tu Comentario

(requerido)  
(opcional)
(requerido)  

Ingresa los números de la imagen:
© 2007 MSGuayaquil. Todos los derechos reservados.
Powered By IIS 6 Powered By ASP.NET 2.0 Ofrecido por Community Server (Commercial Edition) Powered By SQL Server 2005
Creado y Administrado por Julio Casal