none
crystal reports desde tabla temporal RRS feed

  • Pregunta

  • Buenas tardes , una consulta , tengo un procedure en el cual creo una tabla temporal y la lleno , como podria hacer para luego mostrar esa tabla en un crytal reports,ya que es temporal como podría jalar los campos al reporte o de que otra manera lo puedo realizar.

    Todo es en asp.net.

    Saludos

    lunes, 3 de enero de 2011 18:00

Respuestas

  • Hola Alberto Poblacon en ves de llenr una tabla temporal odria llenar una vista y digamos crearla y destruirla cuando la necesite,tendrias un ejemplo de eso??

    Mi variable de tabla es algo así

    select * from @tabla

    Saludos


    Puedes copiarlo provisionalmente a una tabla fija asi:

    SELECT * INTO MiTabla FROM @tabla

    siendo @tabla una variable de tipo TABLE.

    Esto te permite usar el diseñador de Crystal Reports contra esa tabla. Una vez hecho el diseño, puedes borrar MiTabla de la base de datos. Como los campos no cambian, el diseño del informe sigue valiendo aunque el contenido de @tabla cambie en el futuro.

    A la hora de emitir el informe, puedes hacer pasar los datos a un DataSet y conectar ese DataSet con el Crystal Report (en lugar de ejecutar el Report por las buenas, cosa que intentaría sacar los datos de MiTabla (la que usaste en diseño) y por supuesto fallará, puesto que MiTabla ya no existe).

     

    • Marcado como respuesta Augusto1982 martes, 22 de febrero de 2011 21:07
    miércoles, 5 de enero de 2011 6:23

Todas las respuestas

  • Sugerencia:

    Para hacer el diseño del Report, copia momentáneamente la tabla temporal a una tabla fija:

    EXEC Procedimiento
    SELECT * INTO miTabla FROM #TablaTemporal
    

    Usa "miTabla" para diseñar el Report. Una vez diseñado, en tiempo de ejecución simplemente llama al procedimiento para que cree la tabla y luego leela con un SELECT (todo dentro de la misma conexión, para que no se borre entre medias la tabla temporal). A continuación, usa los datos devueltos por la Select para cargar un DataSet y usa ese DataSet pata alimentar al Report.

     

    lunes, 3 de enero de 2011 21:03
  • buenas tardes , en realidad tengo la variable tabla temoral @tablatemporal, y además es una vista dinamica que cambia segun los parametrso quese ingresen por eso pensaba mas que la solucion podia ser una vista dinamica .

    martes, 4 de enero de 2011 1:27
  • hola

    pero que la tabla sea temporal, no quiere decir que los campos varien ni sean dinamicos

    o sea los nombres de los campos no cambian, o si ?

    podrias ejecutar el Stored Procedure y con este cargar un dataset tipado, para luego asignar este uktimo como origen de datos del reporte

     

    Informes Crystal Reports

    Creación de Reportes con Crystal Reports en Visual Studio 2005/2008

    por supuesto la ultima instruccion del Stored deberia ser un SELECT a la tabla temporal para devolver los registros

    pero el datatable tipado deberia tener definido los campos que esta tabla temporal devuelve, por ahi no puedas usar el diseñador del .xsd para arrastear la tabla desde el "Server Explorer" y se cree la estructura porque al ser una tabla temporal no tendras de donde hacerlo, pero si podrias armar el datatable manualmente con los mismos campos que defines en esta tabla temporal

    y cargar desde codigo usando un DataAdapter que ejecute el SP

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    martes, 4 de enero de 2011 2:27
  • Hola , los nombres de los campos no varian.

    Tienes algu ejemplo de como hacerlo a tu manera, porque he trtado pero no me esta saliendo, para comenzar me pide contraseña y usuario de base de datos DsVisitreport es mi dataset en el que hice el datatable con los datos de la tabla

    <input name="CrystalReportViewer1:_ctl0" type="hidden" /> The report you requested requires further information.

     


      DsVisitReport
    Server name:  <input style="border-style: inset;" maxlength="255" name="ServerName-DsVisitReport" readonly="readonly" type="text" value="DsVisitReport" />
    Database name:  <input style="border-style: inset;" maxlength="255" name="DatabaseName-DsVisitReport" readonly="readonly" type="text" />
    User name:  <input id="User-DsVisitReport" style="border-style: inset;" maxlength="255" name="User-DsVisitReport" type="text" value="sa" />
    Password:  <input style="border-style: inset;" maxlength="255" name="Password-DsVisitReport" type="password" />
    <input style="border-style: none;" name="UseIntegratedSecurity-DsVisitReport" type="checkbox" value="on" /> Use Integrated Security 
      <input style="border-style: outset;" onclick="submitLogonValues()" type="button" value="Log On" />

    ademas he agregado este codigo

     

    protected void btnScreen_Click(object sender, EventArgs e)

    {

     

    ReportDocument rp= new ReportDocument();

    rp.Load(Server.MapPath(

    "VisitReport.rpt"));

    rp.SetDataSource(FillVisitReport());

    CrystalReportViewer1.ReportSource = rp;

    CrystalReportViewer1.DataBind();

    }

    martes, 4 de enero de 2011 16:19
  • Hola Alberto Poblacon en ves de llenr una tabla temporal odria llenar una vista y digamos crearla y destruirla cuando la necesite,tendrias un ejemplo de eso??

    Mi variable de tabla es algo así

    select * from @tabla

    Saludos

    martes, 4 de enero de 2011 21:45
  • Hola Alberto Poblacon en ves de llenr una tabla temporal odria llenar una vista y digamos crearla y destruirla cuando la necesite,tendrias un ejemplo de eso??

    Mi variable de tabla es algo así

    select * from @tabla

    Saludos


    Puedes copiarlo provisionalmente a una tabla fija asi:

    SELECT * INTO MiTabla FROM @tabla

    siendo @tabla una variable de tipo TABLE.

    Esto te permite usar el diseñador de Crystal Reports contra esa tabla. Una vez hecho el diseño, puedes borrar MiTabla de la base de datos. Como los campos no cambian, el diseño del informe sigue valiendo aunque el contenido de @tabla cambie en el futuro.

    A la hora de emitir el informe, puedes hacer pasar los datos a un DataSet y conectar ese DataSet con el Crystal Report (en lugar de ejecutar el Report por las buenas, cosa que intentaría sacar los datos de MiTabla (la que usaste en diseño) y por supuesto fallará, puesto que MiTabla ya no existe).

     

    • Marcado como respuesta Augusto1982 martes, 22 de febrero de 2011 21:07
    miércoles, 5 de enero de 2011 6:23