In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Intentando filtrar una impresión

Foro de Xailer profesional en español
ddupre
Posts: 306
Joined: Mon Nov 12, 2007 3:53 pm

Intentando filtrar una impresión

Postby ddupre » Tue Aug 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
User avatar
ignacio
Site Admin
Posts: 8681
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: Intentando filtrar una impresión

Postby ignacio » Fri Aug 21, 2020 11:47 am

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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
ddupre
Posts: 306
Joined: Mon Nov 12, 2007 3:53 pm

Re: Intentando filtrar una impresión

Postby ddupre » Fri Aug 21, 2020 3:36 pm

Ignacio.
Mil gracias por su ayuda. Hoy he aprendido algo más.:)

Un saludo
Daniel

Return to “Spanish”