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 03-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
FastReport: imprimir listados de campos variables

Tengo un dbgrid con los resultados de búsqueda según el criterio del usuario, obviamente el sql es variable, tanto de campos, tablas, order by, etc.

¿FastReport tiene alguna forma de hacer ese Report en tiempo de ejecución de forma automática?

¿y FreeReport?

QuickReports tiene el qrCreateList (ya se ha hablado mucho en el foro), pasando los nombres de los campos y el query/tabla, hace el listado automático.

Actualmente estoy probando FreeReport 2.2 y no he encontrado nada, pero igual existe .

El hecho de preguntar por FastReport, es que de tener esa característica, compraría los componentes.

Agradezco vuestro tiempo y sobre todo, vuestros comentarios

Edito: He visto los "hilos relacionados" pero no están relacionados con mi pregunta.

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: 03-02-2008 a las 14:59:17.
Responder Con Cita
  #2  
Antiguo 03-02-2008
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
Talking

Hola,

Puedo confirmate que la versión 4 de fastreport tienes esa opción.
Pongo un ejemplo que viene con las demos.

Código Delphi [-]
procedure TForm1.frxReport1BeforePrint(c: TfrxReportComponent);
var
  Cross: TfrxCrossView;
  i, j: Integer;
begin
  if c is TfrxCrossView then
  begin
    Cross := TfrxCrossView(c);
    Table1.First;
    i := 0;
    while not Table1.Eof do
    begin
      for j := 0 to Table1.Fields.Count - 1 do
        Cross.AddValue([i], [Table1.Fields[j].DisplayLabel], [Table1.Fields[j].AsString]);
      Table1.Next;
      Inc(i);
    end;
  end;
end;

Un saludo.
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras

Última edición por dec fecha: 03-02-2008 a las 17:28:59.
Responder Con Cita
  #3  
Antiguo 03-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Muchas gracias, ni se me hubiese ocurrido mirar por esa vía.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 03-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿Por qué siempre empezamos por lo más difícil?

En la carpeta Demos de FreeReport 2.34 viene una subcarpeta "runtime" y el código es este:
Código Delphi [-]
//  FastReport 2.3 demo.
//
//  Demonstrates how to create reports with no designer.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DB, DBTables, FR_DSet, FR_DBSet, FR_Class, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    frReport1: TfrReport;
    frDBDataSet1: TfrDBDataSet;
    Table1: TTable;
    DataSource1: TDataSource;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  v: TfrView;
  b: TfrBandView;
  Page: TfrPage;
begin
  frReport1.Pages.Clear;
  frReport1.Pages.Add;              // create page
  Page := frReport1.Pages[0];

  b := TfrBandView(frCreateObject(gtBand, ''));  // create MasterData band
  b.SetBounds(0, 20, 0, 20);
  b.BandType := btMasterData;
  b.Dataset := 'frDBDataSet1';
  Page.Objects.Add(b);

  v := frCreateObject(gtMemo, '');  // create data field
  v.SetBounds(20, 20, 200, 16);
  v.Memo.Add('[Table1."Company"]');
  Page.Objects.Add(v);

  frReport1.ShowReport;
end;

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 04-02-2008
FerCastro FerCastro is offline
Miembro
 
Registrado: abr 2006
Posts: 97
Poder: 19
FerCastro Va por buen camino
Hola, gracias por la respuesta.

Tratando de hacer algo que indicas obtengo un error. Te adjunto la imágen y te pongo el código de cómo lo realizo.

Código Delphi [-]
  DM.Letras1.Numero:=DM.QEditaMovs.Fields[5].AsInteger;
  DM.reporte.Variables['cCadenaLetra'] := DM.Letras1.AsString;




Agradezco cualquier comentario.

FCG

Última edición por FerCastro fecha: 04-02-2008 a las 06:20:25.
Responder Con Cita
  #6  
Antiguo 04-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Yo todavía no he llegado a las variables, espero que alguien responda.

Un detalle: en este hilo no se ha hablado de "variables" propiamente dichas. Mi idea es algo así:
Código Delphi [-]
  CreaInforme(table1, 'idcliente, cliente, dirección'); 
  MuestraPresentacionPreliminar;
Aunque la tabla tenga más campos, el informe solo mostraría los campos especificados.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 04-02-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola Lepe, no manejo FastReport... y apenas conozco los QReport.
¿Por casualidad lo que buscas es más o menos hacer lo que pretende david_uh en este hilo?

Yo he visto esa demo que envió y parece ser interesante y prometedora. Como para ampliarla...
Si es algo parecido a eso lo que buscas, tal vez se podría "migrar" lo que propone David a FasReport.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #8  
Antiguo 05-02-2008
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
Hola amigos,
hace tiempo colgé el código de una utilidad para generar reportes cuyo origen es una query ( cualquier query ). A pesar de estar hecho para ADO, es fácil cambiarlo para otros componentes.
Os paso la referencia por si alguien lo considra interesante. Es para QuickReport estandard.

http://www.clubdelphi.com/foros/show...jcg02+informes

Este mismo código está incluido ( seguramente mejorado ) en el hilo que abrió Caral del programa de facturación paso a paso, como parte de una apliacción que colgué para que la pudieran destripar los foristas.

Espero haber aportado algo útil.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #9  
Antiguo 08-02-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Perdonad por no responder antes, he perdido el hilo de vista, aunque he progresado bastante. Anoche a las 2 de la madrugada hice funcionar mi "TfrAutoReport".

Exacto Delphius, es eso lo que quiero conseguir, pero con FreeReport (versión con código fuente de los FastReports, aunque algo antiguos).

fjcg02: Estoy migrando una aplicación desde QuickReports a FreeReports. Existe un fallo conocido por QuSoft y sin solución: Cuando le da la gana, no imprime la foto de un QRDBImage. Es un fallo aleatorio y sin excepciones.

Este código es provisional y tendré que añadir más cosas:
Código Delphi [-]
with AutoReport1 do
begin 
  PageOrientation := pgPortrait;
  PageHeader := 'Listado de Facturas del cliente ' + DescCliente;

  Dataset := query1;
  FieldNames.Add('cliente');
  FieldNmaes.Add('direccion');
  ...

  SummaryFields.Add('"Base Imponible"');
  SummaryFields.Add('Importe');

  ShowReport;
end;

Tengo creada una presentación preliminar para FastReport. Mi idea es colocar ese componente en dicha ventana, asignar las propiedades de página y márgenes en el inspector de objetos, y ya en tiempo de ejecución usarlo para generar cualquier informe. De momento funciona.

Reconozco que FreeReports tiene los eventos OnGetValue, algo así como el OnNeedData del QuickReports, pero no quiero usar ese método, implica muchos cambios.
__________________
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-02-2008
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
Talking

Cita:
Empezado por FerCastro Ver Mensaje
Código Delphi [-]
DM.Letras1.Numero:=DM.QEditaMovs.Fields[5].AsInteger;
DM.reporte.Variables['cCadenaLetra'] := DM.Letras1.AsString;


FCG
Hola, el código correcto es


Código Delphi [-]
DM.reporte.Variables['cCadenaLetra'] := QuotedStr(DM.Letras1.AsString);





Los valores se tienen que pasar en formato cadena, no como string.

un saludo.
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Para pasar variables de Delphi a FastReport David Impresión 3 11-05-2007 20:14:22
Fastreport - Campos Dínamicos isg Impresión 0 16-10-2006 09:39:15
DBGrid con campos variables mayte mtz SQL 9 15-11-2005 23:12:58
Consejo para imprimir ticket, facfuras y listados ctronx Impresión 3 06-09-2004 16:18:44
Evitar listados con Campos en blanco? kia Impresión 5 18-10-2003 13:00:31


La franja horaria es GMT +2. Ahora son las 05:17:16.


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