none
Reporting en Visual Studio 2010 SIN Dataset RRS feed

  • Pregunta

  • Hola, tengo un proyecto web en C#, y necesito mostrar un reporte, el cual debe ser REPORTING desde Visual Studio 2010 y no un Crystal.

    Este Reporting es solo una consulta a una tabla, pero NO debo conectarlo por el "conjunto de datos" el cual me entrega el Dataset por medio de un asistente. Sino que debe ser ligado desde mi proyecto web, en donde le pasare los campos a mostrar.

    Es posible de hacer esto...? y como debo hacerlo...?

    De ante mano gracias.

    miércoles, 8 de junio de 2011 17:08

Respuestas

  • ok. pero como le paso los datos al reporting no al Report View...??

    Y como relaciono el Reporting (.Rdlc) con una dll o una clase que contiene los metodos de consulta a mi base.....?

    Pes no hay ninguna forma sencilla. Yo estaba pensando en que en la base de datos hubiera ya una tabla con el mismo esquema que tienen los datos devueltos por los métodos de tu dll, con lo que el informe se podría desarrollar a partir de dicha tabla, aunque luego en ejecución lo utilizases en modo cliente con tus propios datos.

    Como poderse, se podría instalar una dll de .Net en el servidor SQL (habilitando la integración con CLR), pero habría que modificarla para que devuolviese un conjunto de resultados que luego puedas procesar en una Select. Va a ser más complicado que si creases manualmente una tabla con las mismas columnas para hacer contra ella el diseño del informe (aunque luego la tabla se borre y nunca se cargue de datos). Pero ya puestos a hacer eso, puedes crear igualmente el dataset en lado cliente, que te va a costar el mismo trabajo que crear la tabla en el servidor.

    Por cierto, releyendo todo lo anterior me doy cuenta de que puede surgir una confusión al hablar de DataSet, ya que este término se usa con dos significados distintos: Por una parte se refiere al conjunto de datos que maneja internamente la definición de un informe, y por otro lado se usa para referirse a la clase System.Data.DataSet que se usa en .Net para alimentar de información al ReportViewer cuando vas a emitir el informe. Cuando se usa el asistente para dfinir los informes en Visual Studio, es habitual usar un DataSet de .Net para definir el DataSet del Report, por lo que ambos acaban teniendo las mismas colunas y se produce la confusión que lleva a hablar de ellos indistintamente. En mi respuesta anterior, cuando ponía el ejemplo de cómo generar dinámicamente un DataSet, me refería al segundo tipo, el de .Net; pero ese tipo de dataset no valdría para que el asistente genere a partir de él el dataset interno del informe en tiempo de diseño, sólo valdría para cargarlo de datos en tiempo de ejecución.

    jueves, 9 de junio de 2011 5:12
    Moderador

Todas las respuestas

  • A ver, no se ha entendido nada. ¿De dónde sacas los datos para el informe? ¿Te los devuelve un WebService? ¿En qué formato? No hay problema en que el webservice te devuelva un dataset. Puede ser perfectamente un dataset no tipado, no hay ninguna necesidad de que sea tipado mediante el asistente.

     

    miércoles, 8 de junio de 2011 19:54
    Moderador
  • Mira lo que necesito hacer es crear un reporting, pero necesito que los datos o campos a mostrar sean originados desde un metodo de mi proyecto y no crear un Dataset desde el asistente de reporting...

    Eso.......!

     

    miércoles, 8 de junio de 2011 21:15
  • ¿Pero por qué va a tener que estar creado el DataSet con el asistente? Puedes perfectamente usar un DataSet anónimo (o un DataTable) creado directamente desde tu método:

    DataTable dt = new DataTable();
    dt.Columns.Add("Columna1", typeof(string));
    dt.Columns.Add("Columna2", typeof(string));
    dt.Rows.Add("valor1", "valor2");
    dt.Rows.Add("valor3", "valor4");
     return dt;
    

    Como ves, no hay ningún asistente por ningún sitio, todo el dataset se crea por código con los datos que te dé la gana. Por supuesto, para que el report funcione, en el diseño tiene que contener unas columnas que coincidan con las que luego le pasas mediante el dataset. Para poder realizar ese diseño de una forma más o menos cómoda, tendrás que crear momentáneamente un dataset con el diseñador, pero luego cuando el report ya esté dibujado, puedes borrar ese dataset y pasarle los datos que quieras desde otro dataset generado sobre la marcha con tu código. O si no quieres hacer esto, puedes crear el report con las herramientas de servidor y luego convertir el .rdl en .rdlc, con lo que no necesitas en ningún momento tener el dataset dentro de tu proyecto.

    Lo que no hace Reporting es generar diseños de informe dinámicos que infieran sus columnas a partir de los datos que le pasas. El diseño tiene que estar "fijo", aunque luego en tiempo de ejecución le pases datos distintos.

     

    miércoles, 8 de junio de 2011 21:59
    Moderador
  • ok. pero como le paso los datos al reporting no al Report View...??

    Y como relaciono el Reporting (.Rdlc) con una dll o una clase que contiene los metodos de consulta a mi base.....?

    Gracias.

     

     

    miércoles, 8 de junio de 2011 22:11
  • ok. pero como le paso los datos al reporting no al Report View...??

    Y como relaciono el Reporting (.Rdlc) con una dll o una clase que contiene los metodos de consulta a mi base.....?

    Pes no hay ninguna forma sencilla. Yo estaba pensando en que en la base de datos hubiera ya una tabla con el mismo esquema que tienen los datos devueltos por los métodos de tu dll, con lo que el informe se podría desarrollar a partir de dicha tabla, aunque luego en ejecución lo utilizases en modo cliente con tus propios datos.

    Como poderse, se podría instalar una dll de .Net en el servidor SQL (habilitando la integración con CLR), pero habría que modificarla para que devuolviese un conjunto de resultados que luego puedas procesar en una Select. Va a ser más complicado que si creases manualmente una tabla con las mismas columnas para hacer contra ella el diseño del informe (aunque luego la tabla se borre y nunca se cargue de datos). Pero ya puestos a hacer eso, puedes crear igualmente el dataset en lado cliente, que te va a costar el mismo trabajo que crear la tabla en el servidor.

    Por cierto, releyendo todo lo anterior me doy cuenta de que puede surgir una confusión al hablar de DataSet, ya que este término se usa con dos significados distintos: Por una parte se refiere al conjunto de datos que maneja internamente la definición de un informe, y por otro lado se usa para referirse a la clase System.Data.DataSet que se usa en .Net para alimentar de información al ReportViewer cuando vas a emitir el informe. Cuando se usa el asistente para dfinir los informes en Visual Studio, es habitual usar un DataSet de .Net para definir el DataSet del Report, por lo que ambos acaban teniendo las mismas colunas y se produce la confusión que lleva a hablar de ellos indistintamente. En mi respuesta anterior, cuando ponía el ejemplo de cómo generar dinámicamente un DataSet, me refería al segundo tipo, el de .Net; pero ese tipo de dataset no valdría para que el asistente genere a partir de él el dataset interno del informe en tiempo de diseño, sólo valdría para cargarlo de datos en tiempo de ejecución.

    jueves, 9 de junio de 2011 5:12
    Moderador
  • Habiendo trascurrido más de dos semanas sin tener nuevas noticias, marco como respondido este hilo. Si es necesario, por favor abre un nuevo hilo con tus nuevas dudas.
    miércoles, 29 de junio de 2011 7:16
    Moderador