Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Pasar SQL como parametro (https://www.clubdelphi.com/foros/showthread.php?t=42414)

veloki 13-04-2007 14:13:49

Pasar SQL como parametro
 
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:
Código Delphi [-]
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

en ese caso....
 
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

asi es la cosa....
 
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

Para servirte....
 
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......


La franja horaria es GMT +2. Ahora son las 05:28:18.

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