Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-11-2006
Avatar de sflexas
sflexas sflexas is offline
Miembro
 
Registrado: feb 2005
Posts: 19
Poder: 0
sflexas Va por buen camino
Post Query dinamico en rave Report, no es problema de parametros

Gente:
Necesito ayuda para Rave report. El problema es que tengo una componente TRVdatasetConection asociada a un AdoQuery en mi aplicacion. Lo que yo quiero es generar una secuencia SQL dinamica (diferentes tablas, diferentes campos, etc)y se la inserto al AdoQuery. El tema es que tengo distintos campos y varia la cantidad de los mismos tambien.
Para solucionar eso lo que hice es que en la sentencia sql pongo un alias a la tabla y le pongo un nombrefijo a los campos de la forma campo1, campo2, campo3, etc. De esta forma en tiempo de diseño puedo realizar el reporte
tranquilamente. El problema surge en ejecucion. Cuando genero la sentencia SQL y se la agrego al query, lo ejecuto y en el listado me quedan los valores viejos del query de tiempo de diseño. Imagino que nesesito un 'refresh' del TRVdatasetConection o algo por el estilo.
A quien pueda ayudarme, gracias. Saludos
Responder Con Cita
  #2  
Antiguo 07-11-2006
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Yo hice lo mismo... hasta el punto en que puedo crear el reporte tranquilamente. Luego, lo que hice fue cambiar el nombre de la conexión al componente DataView 'apuntando' a un TRvCustomConection. Este RvCustomConection se encarga de hacer todas las consultas pertinentes de tal forma que devuelve los valores de los campos: campo1, campo2, etc... En el RvCustomConection hay que manejar los eventos OnOpen, OnGetCols, OnGetRow, y OnEOF.

Obs: El TRvDataSetConection lo puedes borrar, y el query al que apuntaba se puede reutilizar precisamente en los eventos del RvCustomConection.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.
Responder Con Cita
  #3  
Antiguo 16-11-2006
Avatar de sflexas
sflexas sflexas is offline
Miembro
 
Registrado: feb 2005
Posts: 19
Poder: 0
sflexas Va por buen camino
Ok, ahora tengo un nuevo problema

Esta muy buena la respuesta pero estuve leyendo sobre como utilizar el TRvCustomConection y no puedo dar con la tecla
para saber donde lo conecto con el query. En el evento getCols le asigno asi Conexion.WriteField('Campo1',dtInteger,8,'Campo1','') (Esta bien?)
y en el evento get rows deberia asignarlo al query?. No se como se hace para ir identificando los campos. Te agredezco muchisimo tu respuesta. Saludos
Responder Con Cita
  #4  
Antiguo 18-11-2006
Avatar de mlara
[mlara] mlara is offline
Miembro Premium
 
Registrado: jun 2003
Ubicación: Colombia
Posts: 667
Poder: 21
mlara Va por buen camino
Veamos... estoy revisando, porque esto lo hice hace mucho tiempo.

1) En el Data View Dictionary en la interfaz Rave tengo un DataView cuyo nombre de conexión es un Rave Custom Connection creado en Delphi. Recordar que antes el nombre de la conexión era un Rave Query Connection o Rave DataSet Connection, y que se cambió por la cuestión esta de los campos.

2) Yo selecciono el reporte en tiempo de ejecución (SelectReport), y listo. Sin embargo habrá que haberse escrito el código en los eventos mencionados antes.

En el evento OnOpen yo defino el número de filas así

Código Delphi [-]
Connection.DataRows := AlgunQuery.FieldByName('NumeroRegistros').AsInteger;

Luego, en el evento OnGetCols escribo los nombres de las columnas (previamente no se ha indicado el número de columnas), así:

Código Delphi [-]
  Connection.WriteField('NombreCol1', TipoCol1, LongitudCol1, '', '');
  Connection.WriteField('NombreCol2', TipoCol2, LongitudCol2, '', '');
  ...

Luego, en el evento OnGetRow, se escriben los valores de cada campo (columna)...

Código Delphi [-]
  // Antes se harán las consultas pertinentes para determinar los valores de cada campo.
  ...
  Connection.WriteStrData('', ValorCampo1);
  Connection.WriteStrData('', ValorCampo2);
  ...

Eso es todo. Espero que te sirva.

PD1. Quizás encuentres útil usar la propiedad FieldAliasList del RvCustomConnection. Yo la verdad nunca la usé.
PD2. Recomiendo leer la ayuda de Rave, y la lista de Tips & Tricks de Rave (en el sitio Web de Nevrona).
PD3. Uso la versión 5.0.8 de Rave para Delphi 7.
__________________
...y mañana caminaré por las calles pasando inadvertido, como siempre.

Última edición por mlara fecha: 18-11-2006 a las 16:58:40.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Problema en Rave Report SaLvaGe Impresión 2 09-01-2008 18:45:24
Problema con Rave report (Se cuelga) ach_666 Impresión 1 18-11-2006 17:01:42
Problema De Impresion Con Rave Report Fcc08 Impresión 0 08-07-2006 02:56:47
Rave Report dinamico mcarazas Varios 1 26-06-2006 06:12:02
Pasar query a Rave Report [Delphi 2005] Ayabass Impresión 0 17-06-2005 12:38:01


La franja horaria es GMT +2. Ahora son las 21:03:37.


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
Copyright 1996-2007 Club Delphi