Intentando filtrar una impresión
Publicado: Mar Ago 18, 2020 8:07 pm
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
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