PDA

Ver la Versión Completa : Pasar SQL como parametro


veloki
13-04-2007, 14:13:49
Hola, estoy estancado con un problema que tengo, necesito pasar una consulta SQL de delphi a Crystal Report pero no se como hacerlo.

Las herramientas son Delphi 7 y Crystal Report 11

kuan-yiu
13-04-2007, 14:37:47
Yo no uso Crystal Report, pero en todo caso esto:
miQuery.SQL.Text
Te devuelve el string con la consulta y supongo que con eso podrás hacer algo.

veloki
13-04-2007, 14:57:10
a ver, el problema es que yo tengo una sql creada, y esa sql se la quiero enviar a crystal y que modifique la que tiene el crystal report pero no lo consigo, el problema es que no soy capaz de acceder a la SQL que tiene el Crystal

Kenobi
13-04-2007, 17:53:20
segun entiendo lo que quieres pasar es el resultado de una consulta viva (o sea en memoria)

pues para pasar seria algo asi....

debes tener el la aplicacion dos componentes
un crpe
un crpeDs // o sea un enlace para el data source.....
a este ultimo lo vas a vincular con el dataset en este caso tu consulta(ejemplo ConsultaSql)
CrpeDs.Dataset:=ConsultaSQl.


reporte.connect.reportname:='rutacompletadelreportemaselnombre' ; //ojo aca es donde la cosa mas falla......
//luego
Crpe.tables[0].datapointer:=CrpeDs.datapointer; // esta linea tantas veces como tablas en el reporte...es por eso que esto es mejor para reportes sencillos 1 o 2 tablas ....
crpe.show;


Espero haber ayudado....

veloki
13-04-2007, 18:42:55
Una vez hecho eso como hago el reporte en el crystal, porque asi lo que hago es enviarle los resultados pero como los llamo en crystal?

Kenobi
13-04-2007, 22:08:46
pues como ya te dije, el codigo anterior incluye todo(casi)

la linea final que dice Crpe.show muestra el reporte por pantalla desde la aplicacion.....
Crpe es el nombre que le das al reporte, que casualmente lo hago coincidir en este ejemplo con el nombre del componente..

Solo debes incluir(se me habia olvidado) la linea...

crpe.DiscardSavedData;

con esta antes del crpe.tables[0].datapointer:=CrpeDs.Datapointer te aseguras de que el reporte elimine los datos que tenia antes de la llamada (algo asi como refresh)....

Dale frente al computador, creeme que solo asi se aprende....

veloki
16-04-2007, 10:38:59
ya lo consegui, gracias por tu ayuda ;)

Kenobi
16-04-2007, 15:28:37
sin embargo yo te diria que con tiempo pruebes otros generadores de reportes como el caso de fastreport que permite de un modo "mas amigable" imprimir datos "vivos" y bastante rapido debo decir......