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
Responder
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Intentando filtrar una impresión

Mensaje por 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
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9246
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: Intentando filtrar una impresión

Mensaje por ignacio »

Opción 1:

Código: Seleccionar todo

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

Código: Seleccionar todo

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]
https://www.xailer.com
ddupre
Mensajes: 329
Registrado: Lun Nov 12, 2007 3:53 pm

Re: Intentando filtrar una impresión

Mensaje por ddupre »

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

Un saludo
Daniel
Responder