Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Insertar Avance de Página en FastReport (https://www.clubdelphi.com/foros/showthread.php?t=63401)

jaimeh 12-02-2009 10:21:05

Insertar Avance de Página en FastReport
 
Hola a todo el mundo. A ver si alguien es tan amable de decirme como puedo insertar un avance de página en una banda del FastReport.
Muchas gracias a todos.

jaimeh 16-02-2009 14:40:48

Hola de nuevo. Lo del avance de página lo resolví poniendo un GroupHeader con las opciones KeepTogether y StartNewPage para que agrupara los registros con las mismas caracteristicas.

Ahoara tengo otro problema. Como puedo inicializar ó hacer que se apunte al primer registro de un frxdbDataset dentro de FastReport. Lo que desde delphi sería con frxdbDAtaset.First Necesito que un TEXT lea del primer registro.

Tengo esta funcion dentro de un objeto Text y en la situacion que se encuentra me está leyendo del último registro.

Denominacion es un campo.

[Copy(<frxDBDataset1."Denominacion">, 1, Pos('-', <frxDBDataset1."Denominacion">) -1)]

A ver si me podéis dar alguna idea. Muchas gracias a todos.

Chris 16-02-2009 16:25:43

Seguramente sabes que todos los componentes de informes, incluido Fast Report, trabajan por medio de un:
Código Delphi [-]
dataset.first;
while not dataset.eof do
begin
  ..
  dataset.next;
end;
Normalmente, el generador de informes coloca el curso en el primer registro cuando éste inicia con un nuevo informe y va recorriendo los datos mientras hace su cometido. Por lo anteriormente dicho, puedes obtener el valor que desea, por ejemplo en el evento "OnStartReport" y guarlo en una variable y luego asignarle imprimir ese valor en el objeto que seas.

Saludos.

jaimeh 16-02-2009 19:19:23

Muchas gracias por la respuesta. Pero a mi no me está funcionando así por lo menos con el campo memo que me interesa en cuestion.

Tengo una página

en la Page1 tengo

Pageheader1----- con el campo memo en cuestion que tiene lo siguiente
-------------[Copy(<frxDBDataset1."Denominacion">, 1, Pos('-', <frxDBDataset1."Denominacion">) -1)]
Este Memo del PageHeader1 lo hace bien porque en delphi Inicializo con
frxDBDataset1.First antes de hacer el ShowReport

GroupHeader1
MasterDAta1----con el dataset frxdbDataset1
GroupFooter1
Footer1--------[SUM(<frxDBDataset1."mayor">,MasterData1,0)]

Luego tengo otra pagina Page2

Pageheader2-----con el campo memo en cuestion que tiene lo siguiente
-------------[Copy(<frxDBDataset1."Denominacion">, 1, Pos('-', <frxDBDataset1."Denominacion">) -1)]
El Memo de este PageHeader2 tiene el problema me está leyendo al final del frxDBDataset, donde acabó el recorrido el MasterData1 o el SUM del footer1

GroupHeader2
MasterData2-----con el mismo dataset frxdbDataSet1
GroupFooter2
Footer2--------[SUM(<frxDBDataset1."mayor">,MasterData2,0)]

Lo de la variable en OnStartReport creo que no me vale pues el memo cambia en cada pagina del informe.

Esperando que me hayáis entendido. Daros un saludo y las gracias todos

Kipow 16-02-2009 19:49:24

En el evento BeforePrint coloca, esto dentro del pascalScript;

Código Delphi [-]
Engine.NewPage;

jaimeh 17-02-2009 00:34:00

Gracias Kipow, lo pongo en el evento beforeprint del memo en cuestion y me da desbordamiento de pila.
Sería en ese evento cuando habria que poner el puntero del frxDBDataset en el registro primero, o en el evento MasterData1 afterprint. Pero no se cual es la expresión para colocar el puntero al principio del dataset, con el pascalScript.

Muchas gracias a todos.

jaimeh 17-02-2009 19:37:45

Lo del avance de página lo resolví según puse en el segundo post, de todas formas gracias Kipow, hice las pruebas colocándolo en un evento afterprint de un memo y funciona perfectamente haciendo el salto de página.

Pero ahora lo que me interesaba era saber la instrucción para colocar el puntero del dataset en el primer registro dentro de fastReport. O que una funcion como la que puse en el 2º y 4º post lea del primer registro. En delphi para colocar el puntero al principio del dataset sería dataset.first pero en pascalScript no tengo ni idea.

Os agradezco vuestras contestaciones y espero a ver si alguien me puede orientar sobre esto último.

Gracias a todos. Saludos.

Kipow 18-02-2009 11:48:15

Código Delphi [-]
var
   Query : TfrxDataset;
begin
   Query := GetDataset('Midataset');
   Query.First;

No lo he probado pero creo que asi es como se hace.

jaimeh 18-02-2009 14:00:42

Hola a todos
Gracias Kipow por la molestia. Lo pongo en un evento FooterAfterPrint en la pestaña 'Code' del FastReport y me dice que no entiende TfrxDBDataset y el uses no me funcionan me dicen que no encuentran los archivos ni poniéndolos con path.

Muchas gracias.

Kipow 18-02-2009 19:31:37

Esto lo tengo en un reporte mio. uso la version 4.7.63 el ultimo update. pero esta en el manual del 4.6 aca pagina 117

Código Delphi [-]
procedure PHEncabezadoOnBeforePrint(Sender: TfrxComponent);
var
   Query : TFrxDataset;                                                                                             
begin
   Query := Report.GetDataSet('frxDBDet_Formato');
   Query.First;                               
end;

begin

end.

jaimeh 18-02-2009 22:42:41

Hola a todos. Fenomenal Kipow en principio me funciona. Es que había puesto query: TfrxDBDataset en lugar de query: TFrxDataset.

Te lo agradezco sinceramente Kipow había estado un par de días pensando en como solocionarlo.

Muchas gracias a todos amigos.


La franja horaria es GMT +2. Ahora son las 16:04:52.

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