Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Reporte Crystal report desde componente Crpe (https://www.clubdelphi.com/foros/showthread.php?t=40881)

Osorio 01-03-2007 01:11:47

Reporte Crystal report desde componente Crpe
 
Compañeros.

Tengo un reporte hecho en Crystal report el cual lo llamo desde mi aplicacion delphi con este codigo.

Código Delphi [-]
    Crpe1.ReportName := 'INF_Admisionesfacturadas.rpt';
    Crpe1.Tables[0].DataPointer := @(ADOQuery1.recordset);
    Crpe1.Execute;

La cosa me funciona bien la primera vez. a partir de la segunda vez, el query se ejecuta y trae datos nuevos, pero el reporte me sigue mostrando los mismos datos que obtuvo en la primera ejecución.

Alguien conoce un procedimiento o truco para solucionarlo?

Mil gracias.

radaalvaro 01-03-2007 04:03:46

Aclarando la pregunta.
 
Osorio.

entendí solo la mitad de lo que preguntaste, la LAGUNAS que hay son:

1.- que es "Crpe1"??? ... es un instancia de la clase .......... ????
2.- Que versión de Crystal estas usando.

con eso ya quedaria un poco mas claro el panorama.

Saludos.

Osorio 01-03-2007 14:21:11

Informando
 
Hola nuevamente,

Crpe es un componente de una VCL que ofrece gratuitamente la casa desarrolladora de Crystal Report, precisamente para ejecutar reportes hechos en Crystal report desde delphi.

Estoy usando la version 11 de la VCL y Crystal report XI.

Osorio 01-03-2007 14:32:22

Solucionado
 
Listo, solucionado.


Código Delphi [-]
    Crpe1.ReportName := 'INF_Admisionesfacturadas.rpt';
    Crpe1.DiscardSavedData;//Esta linea libera los datos cargados en memoria
    Crpe1.Tables[0].DataPointer := @(ADOQuery1.recordset);
    Crpe1.Execute;

:cool:

Kenobi 25-04-2007 23:59:41

que tal osorio
 
este procedimiento lo hacia con crystal 8.5 y funcionaba veo que tu lo haces con crystal 11 y todo bien yo no puedo me sale error 171 no puede cargar datos de la tabla(o algo asi)

sera que tu sabes porque, porque a mi me tiene contra el suelo este problema, no le encuentro solucion...

por cierto ese arroba @(consulta.recordset) es nuevo para mi .....


Gracias de antemano....

Osorio 26-04-2007 15:31:25

Hola,

La verdad no entiendo tu error. Cuando estaba buscando informacion de esto creo haber leido que no funcionaba muy bien cuando el componente que contiene el conjunto de datos es diferente de ADO pero no se que tan cierto sea.

Verifica que estas utilizando componentes ADO para conectarte a tu base de datos, si utilizas otros componentes no se que decirte, no he probado con otros.

en cuanto al @ es por que en realidad lo que pasa es un puntero a una direccion de memoria.

Si tienes la VCL 11 tambien encontraras un componente DSCrpe que se comporta como un TDataSource, asi puedes hacer:

Código Delphi [-]
Crpe1.Tables[0].DataPointer:= DSCrpe1;

Saludos,

Kenobi 26-04-2007 18:42:32

lo hice con ado y si funciona
 
Pues bien lo hice como dijiste y funciona bien pero con los componentes de corelab nada que ver por otro lado tengo el problema de la distribucion de la aplicacion no me coinciden las dll en todo caso son dos problemas ya... como mucho diria yo estoy pensando en volver a la version 8.5 de crystal que con esta funcionaba todo bien, en todo caso estoy luchando por no hacerlo ya que la version 11 es a todas luces mejor al menos en el diseño de los reportes y lo peor de todo si vuelvo a 8.5 se perderian los reportes migrados a 11 porque el 8.5 no los reconoce....

la verdad este problema se me esta convirtiendo en un delay de tiempo largo ya ....

Muchas gracias por tus respuestas amigo mio....y saludos de Vzla...

Jovana Macias 27-04-2007 20:30:41

Gracias
 
De Antemano Muchas Gracias Por Este Temaaaa

Si Me Sirvio Y Si Funciona

Gracias Club Delphi

richy08 15-08-2007 19:09:05

Cita:

Empezado por Osorio (Mensaje 185577)
Listo, solucionado.



Código Delphi [-]
Crpe1.ReportName := 'INF_Admisionesfacturadas.rpt';
Crpe1.DiscardSavedData;//Esta linea libera los datos cargados en memoria
Crpe1.Tables[0].DataPointer := @(ADOQuery1.recordset);
Crpe1.Execute;





:cool:


hola osorio tengo un problema con el crystal a pesar de que le paso los valores que quiero que me imprima me los repite y n oentiendo por que me podrias explicar que e llo que hace esta linea Crpe1.Tables[0].DataPointer := @(ADOQuery1.recordset); y que contiene @(ADOQuery1.recordset); muchisimas gracias

Osorio 17-08-2007 15:03:27

Hola,


El ADOQuery1 es un componente de tipo TADOQuery en el cual contiene una consulta SQL sobre una o varias tablas. El resultado de esta consulta es el contenido del reporte.

En ese orden de ideas: @(ADOQuery1.recordset) es un apuntador a la direccion de memoria donde se encuentra el conjunto de datos que dio como resultado la ejecución de la consulta.

Espero que te sirva la informacion.

Saludos.


La franja horaria es GMT +2. Ahora son las 20:59:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi