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 08-11-2005
nidia nidia is offline
Miembro
 
Registrado: nov 2005
Posts: 26
Poder: 0
nidia Va por buen camino
Unhappy reportes horizontales????

hola, espero que alguien pueda ayudarme, tengo un problema a la hora de hacer un reporte en delphi 5, tengo k imprimir el valor de un campo en forma horizontal y que al finalizar la linea, se pase a la siguieinte linea y asi sucesivamente por ejemplo: 1 2 3 4 5 6 (find e linea)
7 8 9 10 11 12 y asi hasta que se acaben el num. de registros.

la manera que habia pensado es creando un componente qrtext en tiempo de ejecución y a ese posicionarlo, darle los valores de datasourse y data field, e incremetar posiciones... hasta que fuera fin de la consulta, (los registros a imprimir son el resultao de una consulta con tquery.
mi pregunta es el saber si hay una manera mas sencilla de poder hacer eso???? espero haberme dado a entender.. y gracias por adelantado
Responder Con Cita
  #2  
Antiguo 08-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Se me ocurren algunas preguntas, lee la guía de estilo.

Así, sin más, con lo poquito que explicas, usa un campo memo en lugar de un edit.
Responder Con Cita
  #3  
Antiguo 09-11-2005
nidia nidia is offline
Miembro
 
Registrado: nov 2005
Posts: 26
Poder: 0
nidia Va por buen camino
esto es una prueba: esque he querido responder a lo tu dijiste y se me han regresado los mensajes
Responder Con Cita
  #4  
Antiguo 09-11-2005
nidia nidia is offline
Miembro
 
Registrado: nov 2005
Posts: 26
Poder: 0
nidia Va por buen camino
haa ya pude ... bueno vi que no fui muy explicita; 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
...
ya que solo es la información de un solo campo y como en realidad la consulta me arrojaría mas de 100 registros, el imprimirlo en vertical, me desperdiciaria muchas hojas, yo he estado leyendo al respecto para saber si hay esa posibilidad con la ayuda de algun componente o instrucción de delphi, pero no he encontrado nada.
yo pensaba por lo mismo hacerlo de manera dinamica, hasta que no fuera fin de consulta, crear el componente qrtext, asignarle sus propiedades y posicionarlo.

o si alguien tiene una mejor idea, agradecería mucho sus opiniones
Responder Con Cita
  #5  
Antiguo 09-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No conozco el qreport, pero por si te sirve de algo, con report builder, en la configuración de la página le dices que tienes x columnas y listo.

Luego puedes decidir si imprimir de arriba->abajo o de izquierda->derecha, etc...
Responder Con Cita
  #6  
Antiguo 10-11-2005
nidia nidia is offline
Miembro
 
Registrado: nov 2005
Posts: 26
Poder: 0
nidia Va por buen camino
gracias por tu ayuda, haa, menejo quickrep de la pestaña de Qreport de Delphi 5, hice lo de dividir en 8 columnas, aun no encuentro la opción para imprimir de arriba a abajo, de izq. a der. o viceversa...
pero lo que vi es que una consulta que hago me regresa 3 registros y esos tres registros me los imprime 8 veces, 4 veces por columna así:

valor1 valor1
valor2 valor2
valor3 valor3
valor1 valor1
valor2 valor2
valor3 valor3
... ....
gracias, seguire bucando como arreglar eso
Responder Con Cita
  #7  
Antiguo 10-11-2005
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿No existen manuales, tutoriales y ejemplos para ese qreport?
Responder Con Cita
  #8  
Antiguo 11-11-2005
nidia nidia is offline
Miembro
 
Registrado: nov 2005
Posts: 26
Poder: 0
nidia Va por buen camino
si, pero no vienen ejemplos para el tipo de reporte que necesito, la única persona que también necesitaba hacer reportes como el mio en qreport, dice que lo hizo de manera dinamica, porque el tampoco habia encontrado algo para poderlo hacer como el lo necesitaba.

ya estoy tratando de conseguir el report builder lo malo que ese reporteador no lo conozco, espero que sea facil de usar jaja y muchas gracias por tu ayuda y tiempo.
Responder Con Cita
  #9  
Antiguo 11-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Por la lógica que usa Quick Report, me parece que no es posible hacerlo facilmente. Lo digo porque el ancho de una banda detalle es el mismo para un solo registro, así que siempre imprimirá, verticalmente y despues horizontalmente.

La solución dinámica es la que me parece más adecuada para este caso, es decir, alimentar manualmente el report e ir cambiando la cadena. Para esto usaría un MEMO colocado a todo el ancho del folio, que cambie de tamaño cuando se exceda el alto; se le va añadiendo el texto manualmente y listo.

Puede que no sea tan facil, si puedo hago un ejemplo.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #10  
Antiguo 11-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Me retracto de lo dicho, es muy facil hacerlo

Al abrir el proyecto te dará un error, pasa del tema, he quitado el .res para que ocupe menos.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 10-10-2007 a las 20:56:21.
Responder Con Cita
  #11  
Antiguo 14-11-2005
nidia nidia is offline
Miembro
 
Registrado: nov 2005
Posts: 26
Poder: 0
nidia Va por buen camino
mil gracias por tu ayuda, ya lo cheque y si me va a servir esa logica, ya que es más sencillo usar el memo y a ese agregarle la cadena que el estar creando los componentes en tiempo de ejecución; ya que haga el reporte les contaré como me fue
hasta pronto
Responder Con Cita
  #12  
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
  #13  
Antiguo 15-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
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
  #14  
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
  #15  
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
  #16  
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



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 08:44:56.


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