PDA

Ver la Versión Completa : No mostrar página si consulta llega vacía. FastReport


santiago14
07-01-2016, 14:36:32
Buenas, feliz 2.016 y que todos estemos mejor en este nuevo año que comienza.
Mi consulta es la siguiente:

Tengo un FastReport con varias páginas, le envío la consulta sql a través del TFrxDBDataSet como siempre.
En algunos casos, la consulta llega vacía, y eso está bien, puesto que no se encontró el dato que se necesitaba imprimir. En ese caso, la segunda página de mi FastReport no debería imprimirse.
No estoy pudiendo hacer eso, actualmente me sale la segunda página vacía.
Espero haber sido claro.

Gracias.
Santiago.

nicolas77
08-01-2016, 13:24:47
no te sirve hace un recordcount?
si esta en cero, no abris el reporte.

santiago14
09-01-2016, 13:07:59
Me respondo a mí mismo. Esto decide si mostramos o no una página de FastReport según el DataSet.

Primero, unas funciones...

function ObtenerDataSet(nombre:string):TFrxDataSet;
var
q:TfrxDataset;
begin
q:=Report.GetDataSet(nombre);
q.first;
Result:=q;
end;

{Pone visible o no una página, según haya datos para ponerle desde la consulta SQL}
procedure InvisibilizarPagina(NombreDataSet:string; Pagina:TFrxReportPage);
begin
if not ObtenerDataSet(NombreDataSet).eof then
begin
Pagina.Visible:=True;
end
else
begin
Pagina.Visible:=False;
end;
end;

Ahora un ejemplo de como se llama esto dentro de PascalScript.

procedure AvisosSeccionJudicialOnBeforePrint(Sender: TfrxComponent);
begin
InvisibilizarPagina('SeccJudicialPaginado', TFrxReportPage(Sender));
end;

En este caso, la Sección Judicial se podría mostrar, o no, si viene la SQL (SeccJudicialPaginado) vacía.

Espero que le sirva de ayuda al foro.