Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Quickreport q solo muestra el primer registro (https://www.clubdelphi.com/foros/showthread.php?t=51170)

fonx 07-12-2007 14:17:59

Quickreport q solo muestra el primer registro
 
Hola, tengo varios qr, y todos menos uno me muetran los registros bien. Los que van bien tienen banda title y banda detail, con un TQRDBRichText que muestra los memo correspondientes a los n registros. Y los datos los cojo mediante una conexion ADO y un TADOQuery.

El que funciona mal (solo muestra el primer registro, todos los campos del registro) es igual solo que en vez del TQRDBRichText tengo varios TQRDBText1 y las bandas Title, column header y detail. En el header tengo unas etiquetas normales.

Bueno pues no se que puede ser, si una propiedad mal puesta (yo creo q está todo bien), si tendría q usar los group....Es simplemente una lista de n registros, cada registro tiene un número determinado de campos ¿Alguna opinión? :confused:

enecumene 07-12-2007 14:23:19

Hola, verificate que la propiedad dataset del quickreport tiene el adoquery correspondiente de lo contrario solo te mostrara el primer registro.

Saludos.

megaredoxk 07-12-2007 16:04:56

saludos
 
saludos, compañero no creo que tu problema sea del Qreport tienes que verificar el trozo de còdigo que tienes para la base de datos, la cual se comunica con el Qreport, estas guardando un solo registro????


El que funciona mal (solo muestra el primer registro, todos los campos del registro) es igual solo que en vez del TQRDBRichText tengo varios TQRDBText1 y las bandas Title, column header y detail. En el header tengo unas etiquetas normales:confused:

es solo un registro o todos los campos de los registros??????

de todas maneras, lo que alcanzo a entender y opino es que verifiques el còdigo fuente que hace el guardado en la base de datos

fonx 10-12-2007 09:45:02

Todo lo que comentais:

- dataset y datafield
- que haya varios registros en la base de datos
- el código fuente...

está todo bién, como os dije, tengo otros informes q me muestran varios registros, cada registro en un QRDBRichText y un único campo por registro, sin embargo este informe q tiene varios campos por registro y q van cada uno a una TQRDBText no funciona bien.

Yo pienso q puede q sea un bug del delphi o del paquete QuickReport, estoy usando Delphi 5 (muy a mi pesar) y puede q tenga algún fallo.

Voy a seguir haciendo pruebas, y si finalmente no se corrige tendré q meterle un RichText al informe y confeccionar el informe desde fuera, es decir consultando a la base de datos fuera del informe y añadiendo líneas al RichText.

fonx 10-12-2007 10:23:52

vamos a rectificar...vamos a rectificar....:rolleyes:

Bueno, las QRDBText estaban con su dataset y datafield correcto, peeeeero el informe en si no tenía la propiedad dataset puesta.

Ahora muestra los registros, pero no me acaba de encajar porque si la propiedad dataset del informe no estaba puesta me mostraba el primer registro en lugar de no mostrar nada de nada.

Bueno ahora me falta mirar otros detalles. Necesitaba pasar el nombre de la tabla como parámetro pero no va. Tengo un parámetro en la parte WHERE que funciona bien, pero cuando pongo el nombre de la tabla como parámetro en la parte FROM me da error...a ver, esto es el cuento de nunca acabar...:(

fonx 10-12-2007 10:39:59

Bueno, sobre esto último q dije, paso de investigar si puedo o no pasarle el nombre de la tabla como parámetro. La SQL del ADOQuery la confecciono fuera del informe y se la paso ya entera, sin parámetros ni nada, luego solo hay q activar la query...no es una mala solución :)

Lepe 10-12-2007 12:42:56

Tienes razón, normalmente no se le puede pasar en la cláusula FROM un parámetro, es mejor usar constantes y formatear la sql.
Código Delphi [-]
const strSqlGeneral = 'select %s from %s where %s = %s';
...
query1.sql.text := Format(strSqlGeneral, [ '*', 'NombreTabla', 'NombreCampo', QuotedStr('valorDelCampo')]);
query1.sql.Add(' and fecha between :fini and :ffin');
query1.parameteres.parambyname('fini').Value := datetimepicker1.date;
query1.parameteres.parambyname('ffin').Value := datetimepicker2.date;

Edito: Aunque esto es totalmente compatible con parámetros si se quiere.

Saludos

Gabo 10-12-2007 16:25:08

Hola Lepe, al final me lié con tu edición.:confused:

¿Se puede o no pasar el nombre de la tabla como parámetro? Mera curiosidad.

Lepe 10-12-2007 21:10:59

con Parambyname no.

Usando otra técnica, como formatear constantes, si se puede.

Saludos

Gabo 11-12-2007 11:28:28

Gracias por la aclaración. :)

Esta frase me había liado:

Cita:

Edito: Aunque esto es totalmente compatible con parámetros si se quiere.


La franja horaria es GMT +2. Ahora son las 14:06:38.

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