PDA

Ver la Versión Completa : Numerar registros con QR o Rave


cubanbaker
27-09-2011, 09:14:18
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, 16: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:
SELECT @fila:=@fila+1 as Fila,MyTabla.* FROM MyTabla,(select @fila:=0)t; ;)
Saludos...:)

cubanbaker
27-09-2011, 17: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, 17:23:27
Estoy usando tablas locales, ADO Tables.

ADO Tables?:confused: Disculpa pero no te entiendo?:confused:
"ActiveX Data Objects (ADO (http://es.wikipedia.org/wiki/ActiveX_Data_Objects)) 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, 19: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.
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:

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, 06:34:32
Funcionó perfecto! Muchas gracias por tu gran ayuda.

toko
30-08-2012, 21: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, 22:09:29
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 (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

hoyosfelix
06-09-2012, 17:02:41
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
07-09-2012, 00:21:54
Muchas gracias...
Tu ayuda me sirvio de muchooo, pude resolver mi problema.
Buen dia...