Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Numerar registros con QR o Rave (https://www.clubdelphi.com/foros/showthread.php?t=75914)

cubanbaker 27-09-2011 08:14:18

Numerar registros con QR o Rave
 
Hola
Tengo un listado de deportistas que por un consulta SQL ordeno según el ranking.
Necesito que en QReport o Rave, poner delante de cada fila de deportista números consecutivos comenzando por el 1 hasta el final segun el lugar q ocupe en el ranking.
No se como hacer eso en Rave, cualquier ayuda la agradezco.

rgstuamigo 27-09-2011 15:13:45

Aunque no nos estás comentando con que servidor especifico de base de datos estas trabajando, pues lo que pretendes hacer se lo puede hacer directamente en la consulta SQL;;) por ejmplo en MySql se puede hacer algo como esto:
Código SQL [-]
SELECT @fila:=@fila+1 as Fila,MyTabla.* FROM MyTabla,(select @fila:=0)t;
;)
Saludos...:)

cubanbaker 27-09-2011 16:03:03

Estoy usando tablas locales, ADO Tables. Y mi pregunta es si existe en Rave algun label que me permita numerar los registros, una columna donde enumere los registros empezando por el numero 1, sin necesidad de hacer alguna consulta, solo numerar los registros que se van mostrando con un label incrementando su numero. No se si en Rave existe una etiqueta como tal para hacer eso, si existe no la encuentro!
Gracias

rgstuamigo 27-09-2011 16:23:27

Cita:

Empezado por cubanbaker (Mensaje 413607)
Estoy usando tablas locales, ADO Tables.

ADO Tables?:confused: Disculpa pero no te entiendo?:confused:
"ActiveX Data Objects (ADO) es uno de los mecanismos que usan los programas de computadoras para comunicarse con las bases de datos, darles órdenes y obtener resultados de ellas."
Por eso digo que no entiendo a que te refieres con el término "ADO Tables", talves será un nuevo tipo de servidor de base de datos que desconosco?:rolleyes:
Pero para entendernos mejor, supongo que tus tablas estan en algun servidor de base de dato ¿verdad? y no importa si es local o remoto, la pregunta es:¿Que servidor de base de datos estas usando? (MySQL,MS SQL Server, Oracle,Firebird,PostGree,etc.) ¿Cuál?
Y no estoy diciendo que tambien no se puede hacer directamente en Rave report, si no que para evitar hacer más código, segun mi criterio lo veo más adecuado hacerlo directamente en la consulta SQL que trae los datos desde la base de datos y sencilamente podemos enganchar un componente en Rave report para muestre esa columna en el reporte.;)
Saludos...:)

rgstuamigo 27-09-2011 18:17:19

Bueno aunque como he comentado anteriormente que mejor sería traer la "numeracion" desde la base de dato como una columna calculada, pues logicamente en el propio Diseñador de Rave Report se lo puede tambien implementar.
Cita:

Para tomar en cuenta:
* Primero aclarar que no suelo usar Rave report muy a menudo, por lo tanto no lo conozco muy a fondo que digamos.;)

* Al implementar los evento de cada componente y/o bandas de rave report tenemos que utilizar un lenguaje propio que solo el Editor de Rave report entiende, es decir debemos aprender a usar el lenguaje de Rave Report, pero no se asusten es muy similar a Object Pascal con algunas cositas diferentes segun se ve.;)

Bueno para lograr poner numeración a cada fila del reporte podemos utilizar dos componentes Text de la paleta "Standard" de Rave Report; el primer componente text lo ponemos en la banda que hace de Encabezado,pues precisamente para eso, pues sera el que indique el encabezado de nuestra numeracion; el otro componente Text lo ponemos en la banda de detalle donde se muestras los registros; a este ultimo componente Text le vamos a cambiar su nombre a "Numeracion" para poder recordar mejor su nombre.
El truco está en que vamos a utilizar la propiedad "Tag" de nuestro componente Text llamado "Numeración" para lograr mostrar una numeracion en el reporte.Dicha propiedad Tag la vamos ir incrementado cada vez que la Banda de detalle vaya ser imprimida.
...Ok... Entonces pues seleccionamos la banda de detalle y nos vamos a la pestaña de eventos (Events Editor).
Estando ya en la pestaña de eventos selecionamos el evento que queremos implementar, esto se hace en el ComboBox que tiene como Caption "Available event", en nuestro caso vamos a seleccionar el evento OnBeforePrint (antes de imprimir);)
Ahora vamos a poner código para que el "Tag" de nuestro componente vaya incrementando y se muestre en el Texto del componente Text de nombre "Numeracion".
En editor de código ponemos el siguiente código:
Código Delphi [-]
function ClientesDataBand_OnBeforePrint(Self: TRaveDataBand);

begin
Numeracion.Tag:=Numeracion.Tag+1;//incrementamos el tag
Numeracion.Text:=IntToStr(Numeracion.Tag);//mostramos el tag en el texto
end OnBeforePrint;
Y compilamos con el boton "Compile", si todo esta bien pues eso es todo.;)
Sino nos va salir los errores que tenemos y hay que corregirlos.;)
Guardamos el reporte y si queremos podemos darle una vista previa desde el propio rave report para ver como quedó.
Espero le sea de gran utilidad.
Saludos...:)

cubanbaker 30-09-2011 05:34:32

Funcionó perfecto! Muchas gracias por tu gran ayuda.

toko 30-08-2012 20:29:28

Buenas tardes

Oye tengo el mismo problema de querer visualizar un numero progresido en un reporte
hago lo que explicas pero me marca error
y rave ya no rresponde

Me podrias ayudar ...
Gracias

Casimiro Notevi 30-08-2012 21:09:29

Cita:

Empezado por toko (Mensaje 441276)
Buenas tardes
Oye tengo el mismo problema de querer visualizar un numero progresido en un reporte
hago lo que explicas pero me marca error
y rave ya no rresponde
Me podrias ayudar ...
Gracias

Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

hoyosfelix 06-09-2012 16:02:41

Respuesta a "Numerar registros con QR o Rave"
 
Buen día,
Para numerar filas en Rave Report de la sgte. manera:

--
1
2
3
.
.
N

1º) Se debe insertar en el DataBand el elemento CalcText desde la pestaña Report, en la posición deseada, en este caso la 1º columna.
2) Luego en la propiedad de ese componente cambiar las sgtes:
CalcType -> ctCount
DataView -> Seleccionar el DataView del DataBand actual.
RunningTotal -> True
Con esto inserta el contador de líneas en el reporte, sin necesidad de crear los contadores en las consultas de SQL.

Saludos.

toko 06-09-2012 23:21:54

Muchas gracias...
Tu ayuda me sirvio de muchooo, pude resolver mi problema.
Buen dia...


La franja horaria es GMT +2. Ahora son las 01:18:41.

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