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 07-10-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
Post Acomodo de Datos en Qreport

Hola!!!

Existe un problema (logicamente por eso les escribo) y tengo la idea de solucionarlo por medio de dos formas Veamos;

Tengo una tabla(paradox) con 20 campos, pero no quiero que se visualicen todos los campos, los campos que estan seleccionados(que son los que quiero mostrar) son llenados con o ò en su caso con un valor numerico, y los campos que no fueron seleccionados tienen una x(que esos no me importan, porque no se van a mostrar.

1. Vayamos directamente con qreport.

He tratado de hacerlo directamente con qreport, pero hay veces que se traslapan los valores de los campos, no se porque haga eso, en la propiedad de QRLabel le pongo que sea autoestrech, y aparte no se como hacerle para que solamente se muestren los que tienen 'o' (es una o) o un valor numerico, ya que como comentaba anteriormente no me interesan los que tengan la 'x'. ya que pueden ser variables el numero de campos seleccionados para cada Solicitud.
p.e. la solicitud 1 puede tener 2 campos seleccionados
la solicitud 2 puede tener 4 campos seleccionados. etc

y me deberian de aparecer de la manera siguiente:
si el valor del campo es 'o' me debe de aparecer en blanco o vacio, pero si tiene un valor numerico, me debe de aparecer el valor

En la solicitud me deberia de aparecer asi:

solicitud posicion campo3 campo4
1 1a 2.25 1.57
1 2b 1.25 3.25
1 . . .
1 . . .

me deben de aparecer solamente 2 campos en este caso del ejemplo me aparecen el campo 3 y 4 porque son los que el usuario selecciono anteriormente y se encuentran almacenados en la base de datos.

Veamos la solicitud 2

solicitud posicion campo1 campo2 campo3 campo4
2 1a 1.25 1.22 6.25 78.25
2 2a 1.55 8.25
2 . . . . .
2 . . . . .

En este caso el usuario selecciono los 4 campos y como se ve en la posicion 2a, en el campo 1 y 3 no aparecen valores porque no se ha capturado ningun valor, (en este caso no hay problem porque los valores se jalan de la base de datos y solamente hay que validar si tiene o no valor).

ya lo trate de hacer directamente en qreport, pero es un relajo y hay valores que no aparecen, se traslapan los nombres de los campos (QRLabel)
Ademas de que tengo que poner los 20 QRlabel, por si el usuario selecciono los 20, me aparezcan todos los labels.

Habia pensado otra forma, crear los QRLabel en tiempo de diseño, pero no se que convenga mas.


forma 2: pasarlos a un stringgrid y posteriormente a qreport(creo que seria mas facil) jejeje.

los datos ya los tengo en un stringgrid, solamente hace falta pasarlos directamente al qreport, pero no tengo la idea de como hacerlo, tengo que usar algun evento o como le hago para pasarle los datos desde el sgrid hacia el qreport???

Gracias por su tiempo y espero haberme explicado bien.

Cómo te sientes hoy?
Responder Con Cita
  #2  
Antiguo 08-10-2005
Avatar de droguerman
droguerman droguerman is offline
Miembro
 
Registrado: abr 2005
Ubicación: tierra
Posts: 999
Poder: 20
droguerman Va por buen camino
puedes usar el evento onPrint para asignar un valor al momento de imprimir el campo
Responder Con Cita
  #3  
Antiguo 08-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Mira el qrCreateList para listados personalizados.

Despues de llamar a esa rutina y antes de hacer el preview del informe, puedes recorrer los qrExpr de la banda detalle y mostrar / ocultar los datos que quieras.

saludos
Responder Con Cita
  #4  
Antiguo 10-10-2005
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Mira este hilo.
http://www.clubdelphi.com/foros/show...ht=quickreport

Creé en su día un generador de reportes automático. Vale para cualquier consulta que tengas creada en tu programa.
Aunque no es exactamente lo que pides, te puede dar una idea de lo que se puede hacer en tiempo de ejecución y lo que no.
Creo que el código que está es válido, aunque mejorable.

Se basa en una llamada a una función con una serie de parámetros, que presenta un formulario con la lista de campos de la consulta. Seleccionas los campos que quieres y 'monta' las bandas de titulos, datos y totales en un reporte. Los campos se crean en tiempo de ejecución.

Para que te hagas una idea, antes de leer ese hilo, yo no tenía ni idea de cómo hacerlo.

Espero que te sea de ayuda

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #5  
Antiguo 10-10-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
Muchas Gracias por tomarse el tiempo para responderme. Voy a revisarlo detalladamente y posteriormente les dire como solucione el problema.

Me han sacado de una gran problema!!!!

Cómo te sientes hoy?
Responder Con Cita
  #6  
Antiguo 10-10-2005
david duarte david duarte is offline
Miembro
 
Registrado: ago 2005
Posts: 217
Poder: 19
david duarte Va por buen camino
Oigan, ya se que esta pregunta no es de este hilo, pero me salio un EStackOverflor, y no se porque, les pongo mi codigo:
Código Delphi [-]
unit reporte_runtime;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  QuickRpt, ExtCtrls,QRCTRLS, db;

type
  TForm1 = class(TForm)
    QuickRep1: TQuickRep;
    QRBand1: TQRBand;
    QRBand2: TQRBand;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
var
  i : integer;
  c : TQRlabel;
begin
  c.Top := 10;
  c.Left := 10;
  c.Name := 'label';
  c.Caption := 'label1';
  c.parent := QRBand1;
  c := tQRlabel.Create(Self);
  c.Top := 10;
  c.Left := 50;
  c.Name := 'lll';
  c.Caption := 'prueba';
  c.parent := QRBand1;  <<------ aqui es donde me marca el desbordado de pila
  quickrep1.Preview;
  c.free;
end;

end.
Error : Project reporte.exe raised exception class EStackOverflow with message
"Stack overflow". Proccess stopped.

Gracias.

Si alguien tiene las ganas y el tiempo necesario para darle una revisadilla se los agradeceria.

Cómo te siente hoy?

Última edición por vtdeleon fecha: 10-10-2005 a las 20:18:36. Razón: Etiqueta Delphi
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 05:56:06.


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