Page 1 of 1

Intentando filtrar una impresión

Posted: Tue Aug 18, 2020 8:07 pm
by ddupre
Hola foro.
Luego de mucho buscar en los ejemplos de Xailer cómo hacer informes impresos y con la ayuda de Xevi y Javier he avanzado un poco en el armado de listados, pero me he encontrado con una dificultad que no logro resolver y que tampoco encuentro ejemplos como para seguir.
Hasta ahora los listados que logro son de tablas completas, es decir desde BOF() hasta EOF(), pero quIero empezar a poner filtos y no logro hacerlo, seguramente porque me faltan conceptos básicos.

Dentro de mis intentos hago algo como esto, lo cual si bien compila sin error, al ejecutar obtengo:

TREPORT:RUN(481)
Error BASE/1066 Argument error: conditional
Argumentos: ( [ 1] = Tipo: B Valor: {|| ... })


METHOD FormInitialize( oSender ) CLASS TRamos

WITH OBJECT ::oRamos
:ODataSource:=AppData:oMventas
:cSelect := "SELECT * FROM ramos WHERE nroempresa = " +ValToStr(AppData:nNroempresa)+" order by nroramo"
if :lOpen
:Close()
endif
if !:lOpen
:lOpen:=.T.
if !:lOpen
msgstop('Error al Abrir Ramos','Error')
::Close()
endif
endif
END WITH

RETURN NIL

//---------------------------------------------------------------------------------------------------------------------------

METHOD ImprimirClick( oSender ) CLASS TRamos
Local oReport, oFont1, oFont2, bFor

bFor := {|| IF(5 < ::oRamos:nroramo .and. ::oRamos:nroramo < 11,.T.,.F.)} <<<<<<<<<< Este sería el filtro

WITH OBJECT oFont1 := TFont():New()
:cName := "Arial"
:nSize := 12
:lBold := .T.
END WITH

WITH OBJECT oFont2 := TFont():New()
:cName := "Arial"
:nSize := 10
:lBold := .F.
END WITH

REPORT oReport ;
HEADER AllTrim(Appdata:cNomEmpresa) ALIGN taLEFT FONT 1;
TITLE " Listado de Ramos ";
FONT oFont1, oFont2;
PREVIEW;
DATASET ::oRamos;

COLUMN OF oReport;
TITLE "Nro. " ;
DATA ::oRamos:nroramo;
ALIGN taRIGHT ;
FONT 2

COLUMN OF oReport;
TITLE "Descripción ";
DATA ::oRamos:detalle;
FONT 2

RUN REPORT oReport;
FOR bFor <<<<<<<<<<<<<<<<<<< Aquí aplico el filtro

oFont1:Destroy()
oFont2:Destroy()
RETURN Nil

Desde ya les agradezco por su ayuda.

Saludos
Daniel

Re: Intentando filtrar una impresión

Posted: Fri Aug 21, 2020 11:47 am
by ignacio
Opción 1:

Code: Select all

RUN REPORT oReport
  FOR ::oRamos:nroramo  > 5 .AND. ::oRamos:nroramo < 11


Opcion 2:

Code: Select all

bFor := {|| IF(5 < ::oRamos:nroramo .and. ::oRamos:nroramo < 11,.T.,.F.)}
oReport:bFor := bFor
oReport:Run()


Si utiliza comandos no es necesario que cree bloques de código, el pre-procesador lo hace por usted de forma completamente automática.

Un saludo

Re: Intentando filtrar una impresión

Posted: Fri Aug 21, 2020 3:36 pm
by ddupre
Ignacio.
Mil gracias por su ayuda. Hoy he aprendido algo más.:)

Un saludo
Daniel