PDA

Ver la Versión Completa : Insertar Avance de Página en FastReport


jaimeh
12-02-2009, 10:21:05
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:

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;

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
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 (http://www.baseshop.co.za/downloads/manuals/fastreport46_usermanual_english.pdf) pagina 117

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.