PDA

Ver la Versión Completa : Reporte Crystal report desde componente Crpe


Osorio
01-03-2007, 01:11:47
Compañeros.

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


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
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
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
Listo, solucionado.



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
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:


Crpe1.Tables[0].DataPointer:= DSCrpe1;


Saludos,

Kenobi
26-04-2007, 18:42:32
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
De Antemano Muchas Gracias Por Este Temaaaa

Si Me Sirvio Y Si Funciona

Gracias Club Delphi

richy08
15-08-2007, 19:09:05
Listo, solucionado.



Código Delphi [-] (http://www.clubdelphi.com/foros/#)
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.