Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2005
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
Thumbs up

Cita:
Empezado por nidia
yo manejo QReport y Query para las consultas y la consulta solo me regresa la información de un solo campo; supongamos que me regresa 10 registros, quisiera imprimir esa informacion en el detalle de la sigueinte forma (formato horizontal):

valor1 valor2 valor3 valor4 valor5
valor6 valor7 valor8 valor9 valor10..

en ves de la forma tradicional de imprimir (formato vertical):

valor1
valor2
valor3
...
Sin campos memos es también sencillo.

Colocas en la banda de detalle tantos TQRDBText como te quepan por linea. ( En tu ejemplo 5). Rellenas la propiedad Dataset y DataFields ( que siempre será el mismo campo)

Luego en el inspector de objetos y para los 4 primeros TQRDBText, colocas en el evento OnPrint la orden de avanzar un registro. ( Si fuese un dataset sería: MiTabla.Next

Para el último campo de la linea, no debes poner ese evento ya que al terminar de llenar el renglón la tabla se desplaza un registro hacia abajo).

Después de hacer esto te saldrá lo que deseas:

valor1 valor2 valor3 valor4 valor5
valor6 valor7 valor8 valor9 valor10..

Un problema es si el último registro no coincide con el final de la linea. Por ejemplo, si tu tabla tuviese 7 registros. te saldrá algo parecido a esto:

valor1 valor2 valor3 valor4 valor5
valor6 valor7 valor7 valor7 valor7.

¿ Como lo evitas ? Confío en ti, estoy seguro que lo lograras
Responder Con Cita
  #2  
Antiguo 15-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Un detalle a tener en cuenta:

Con la solución de jmelida si una cadena de texto es muy grande, pisará al QRDBText que tiene a su derecha.

Con un Memo, se verá todo el texto, pero desajusta el alineamiento a la izquierda de las columnas que vienen detrás.

En el ejemplo he usado:

Código Delphi [-]
 memo.lines[2] := memo.lines[2] + 'valor 10';

Se puede construir la linea en un String, y despues usar Memo.Lines.Add(linea). Con esto, la linea que tenga un texto grande se desplazará, pero la siguiente linea ya saldrá alineada a la izquierda con las demás columnas.

Para que quede correctamente alineado, es mejor usar la fuente Courier New.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 15-11-2005
nidia nidia is offline
Miembro
 
Registrado: nov 2005
Posts: 26
Poder: 0
nidia Va por buen camino
hola, muchas gracias por sus ideas, las dos son muy buenas, por el momento probe la idea de jlmelida es muy rápida esa solución, pero como dice, hay un detalle y aun ese no he podido quitarselo, si le hago cambios al qrdbtext, me modifica todo lo que haya puesto ese qrdbtext, lo otro que se me habia ocurrido para los qrdbtext fue que si no es fin de consulta, entonces que avance (query.next), si no terminar la ejecución del query con el query.close; pero no pasa nada pues seguire intentando otras cosas,

ha! y para lepe, la información que imprimo son puros valores de longitud pequeña y también tu idea es muy buena, al menos ya tengo dos posibles soluciones cosa que les agradesco...
Responder Con Cita
  #4  
Antiguo 15-11-2005
jlmelida jlmelida is offline
Miembro
 
Registrado: ene 2005
Ubicación: Alicante, España
Posts: 42
Poder: 0
jlmelida Va por buen camino
Cita:
Empezado por jlmelida
Un problema es si el último registro no coincide con el final de la linea. Por ejemplo, si tu tabla tuviese 7 registros. te saldrá algo parecido a esto:

valor1 valor2 valor3 valor4 valor5
valor6 valor7 valor7 valor7 valor7.

¿ Como lo evitas ? Confío en ti, estoy seguro que lo lograras
Para que todo salga bien, en el evento on print debes preguntar si es o no el final de la tabla. Si no lo es, avanzas un registro. Si lo es, pones la variable con un string vacio:

if (not loquesea.eof) then
loquesea.next
else
Value := ''; // Asi no se escribe nada

En el evento onPrint del ultimo qrdbText de la linea ( que no usa el next) solo pones la segunda parte:

If (loquesea.eof ) then
Value := '';

Saludos
Responder Con Cita
  #5  
Antiguo 16-11-2005
nidia nidia is offline
Miembro
 
Registrado: nov 2005
Posts: 26
Poder: 0
nidia Va por buen camino
gracias, mil gracias

como se noto, tengo como 2 mese usando delphi, y lo poco que lo conozco si me ha gustado crei que iba a estar más dificil el hacer este reporte, pero ya vi que no, para nada.
para lo de los valores que se repetian yo lo estaba haciendo asi:

if not query1.eof then
begin query1.next; end
else
begin
(quise cerrar la consulta y no funciono)
(hasta cambiarle a color blanco la fuente jajajaaj pero tampoco funcionaba)
end;

aun no conocia le instruccion value jeje. ya lo hice, y quedo muy bien yo me estaba complicando la vida.

pues muchas gracias por su ayuda a todos los que me asesorarón

bye...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 12:14:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi