problema con filtro urgente

Post Reply
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

problema con filtro urgente

Post by MOISES »

Hola:

Quiero filtrar todas las facturas desde una serie y un numero hasta otra serie y el número final de esa serie.

Por ejemplo, desde la a1 a la b10, de modo que tiene que imprimir toda la serie A entera y de la B sólo hasta la 5.


Hago:

local ccondicion := "FIELD->FSERIE >= " +CHR(34)+cFSERIE1+CHR(34)+ " .AND. FIELD->FNUMERO >= " AllTrim( Str( nCodigo1 ) ) + ".AND. +" ;
"FIELD->FSERIE <= " +CHR(34)+cFSERIE2+CHR(34)+ " .AND. FIELD->FNUMERO <= " AllTrim( Str( nCodigo2 ) )

set filter to & cCondicion


Sin emabrgo, sólo me imprime de la a1 a la a5 y de la b1 a la b5. Falta el resto de la serie A. ¿Qué hago mal?.

Muchas garcias!!!!.

Salu2,

Moisés
FiveWiDi
Posts: 910
Joined: Mon Oct 10, 2005 2:38 pm

Re: problema con filtro urgente

Post by FiveWiDi »

MOISES wrote:Hola:

Quiero filtrar todas las facturas desde una serie y un numero hasta otra serie y el número final de esa serie.

Por ejemplo, desde la a1 a la b10, de modo que tiene que imprimir toda la serie A entera y de la B sólo hasta la 5.


Hago:

local ccondicion := "FIELD->FSERIE >= " +CHR(34)+cFSERIE1+CHR(34)+ " .AND. FIELD->FNUMERO >= " AllTrim( Str( nCodigo1 ) ) + ".AND. +" ;
"FIELD->FSERIE <= " +CHR(34)+cFSERIE2+CHR(34)+ " .AND. FIELD->FNUMERO <= " AllTrim( Str( nCodigo2 ) )

set filter to & cCondicion


Sin emabrgo, sólo me imprime de la a1 a la a5 y de la b1 a la b5. Falta el resto de la serie A. ¿Qué hago mal?.

Muchas garcias!!!!.

Salu2,

Moisés
Prueba con:
Str( nCodigo2, 10, 0 ) en vez de Str( nCodigo2 )

estás comprobando cadenas y no es lo mismo '1' que '1.00' por ejemplo.

Saludos
Carlos G.
User avatar
Biel EA6DD
Posts: 680
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post by Biel EA6DD »

Lo primero seria recomendarte una solucion sin filtros, usando scope con un bucle While o similiar.

La sentencia para filtro debe ser del estilo

Code: Select all

local ccondicion := "      FIELD->FSERIE+Str(FIELD->FNUMERO,10) >= '"+cFSERIE1+ Str( nCodigo1,10 ) +;
                   "'.AND. FIELD->FSERIE+Str(FIELD->FNUMERO,10) <= '"+cFserie2+Str(nCodigo2,10)+"'"
Suponiendo fnumero un campo númerico, si es caracter quitar el Str(), y ajustar Str(nCodigo, longitud del campo de la tabla)
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
MOISES
Posts: 824
Joined: Wed Aug 22, 2007 10:09 am

Post by MOISES »

Muchas gracias, al final opté por SCOPES y funciona OK.
Post Reply