set filter to &filtro no funciona.....

HMG en Español

Moderator: Rathinagiri

paimar
Posts: 64
Joined: Wed May 23, 2012 8:52 pm

set filter to &filtro no funciona.....

Post by paimar »

Buenas.

Intento hacer algo que en clipper siempre me funciono...

filtro:="clientes->codigo=ncodigo"
set filter to &filtro


No se supone que es totalmente compatible con clipper?

un saludo
Gipuzkoa - ESPAÑA
User avatar
IMATECH
Posts: 188
Joined: Sun May 27, 2012 9:33 pm
Location: Brazil: Goiânia-GO.

Re: set filter to &filtro no funciona.....

Post by IMATECH »

Then... Just try again

filtro:="clientes->codigo=ncodigo"

set filter to ( filtro )
or
set filter to &( filtro )
or
set filter to "&filtro"
M., Ronaldo

By: IMATECH

Imation Tecnologia
paimar
Posts: 64
Joined: Wed May 23, 2012 8:52 pm

Re: set filter to &filtro no funciona.....

Post by paimar »

Pues ninguna de las 3...... :(

Seguire probando.


Gracias

Un saludo
Gipuzkoa - ESPAÑA
User avatar
IMATECH
Posts: 188
Joined: Sun May 27, 2012 9:33 pm
Location: Brazil: Goiânia-GO.

Re: set filter to &filtro no funciona.....

Post by IMATECH »

Or just use a better way of code

bFiltro := { || clientes->codigo == ( ncodigo ) }

clientes->( DBSETFILTER( bFiltro ) )

or


Dont use filter (Better practice for code)

IF Clientes->( DBSeek( ncodigo ) )

While clientes->codigo == ( ncodigo )
clientes->( DBSkip() )
End

End
M., Ronaldo

By: IMATECH

Imation Tecnologia
User avatar
mol
Posts: 3720
Joined: Thu Sep 11, 2008 5:31 am
Location: Myszków, Poland
Contact:

Re: set filter to &filtro no funciona.....

Post by mol »

I'm using such a solution for speed up filtering data:

Code: Select all

cIndexkey := IndexKey(0)
index on &cIndexKey to (cIndexFile) for &cCondition
Marek
PS. When setting filter, you must remember to activate it by DBGoTop() or DbSkip()
arroya2
Posts: 172
Joined: Thu Aug 06, 2009 7:16 am

Re: set filter to &filtro no funciona.....

Post by arroya2 »

Yo estoy usando un índice provisional, al que llamo 'MiIndice' y que posteriormente elimino. Es instantáneo con 70.000 registros. El RDD que utilizo es CDX.

Code: Select all

	INDEX ON &(cCampo) TAG MiOrden TO &(cBase) FOR &(cCondFiltro)
	OrdSetFocus('MiOrden')
	(cBase)->(DbGoTop())
Saludos
Rafael Pérez

I am using a provisional rate, which I call 'MiIndice' and subsequently eliminated. Is instantaneous with 70,000 records. The RDD I use is CDX.

Code: Select all

	INDEX ON &(cCampo) TAG MiOrden TO &(cBase) FOR &(cCondFiltro)
	OrdSetFocus('MiOrden')
	(cBase)->(DbGoTop())
Regards
Rafael Pérez
gvaronas
Posts: 109
Joined: Wed Aug 06, 2008 5:21 pm

Re: set filter to &filtro no funciona.....

Post by gvaronas »

paimar wrote:Buenas.

Intento hacer algo que en clipper siempre me funciono...

filtro:="clientes->codigo=ncodigo"
set filter to &filtro

No se supone que es totalmente compatible con clipper?
Hola, la variable filtro, ¿de que tipo es?
La Macrosustitución no funciona con variables locales. Asi que si es de tipo LOCAL podrías probar haciéndola PRIVATE.

Salu2,
GVS
paimar
Posts: 64
Joined: Wed May 23, 2012 8:52 pm

Re: set filter to &filtro no funciona.....

Post by paimar »

Gracias a todos por los comentarios.

He probado varias de sus opciones , unas no funcionan y otras no las se adaptar :)

El codigo de clipper actual es el siguiente: (perdon por el desorden)

READ
IF LASTKEY()=27
SET COLO TO W
@ 3,1 clea to maxrow()-4,78
IMPRIME()
RETU NIL
ENDI
filtro:=""
if xfecha1<>ctod(" - - ")
anio=0
endif
IF Xfactura1>0 .AND. Xfactura2>=Xfactura1
filtro=filtro+" .and. FACTURA>=Xfactura1 .and. factura<=xfactura2"
ENDIF
IF Xfecha1>CTOD(" - - ") .AND. Xfecha2>Xfecha1
filtro=FILTRO+" .AND. fecha>=xFECHA1 .AND. fecha<=xFECHA2"
ENDI
IF Xfecha_P1>CTOD(" - - ") .AND. Xfecha_p2>Xfecha_p1
filtro=FILTRO+" .AND. fechaPAGO>=xFECHA_p1 .AND. fechaPAGO<=xFECHA_p2"
ENDI
IF Xfecha_P1>CTOD(" - - ") .AND. Xfecha_p2=CTOD(" - - ")
filtro=FILTRO+" .AND. fechaPAGO>=xFECHA_p1"
ENDI
IF xsimbol<>" "
filtro=filtro+" .and. suma&xsimbol nbase"
ENDIF
do case
case xrecibo="R"
FILTRO=FILTRO+[ .AND. RECIBO="R"]
case xrecibo="F"
FILTRO=FILTRO+[ .AND. RECIBO=" "]

case xrecibo="A"
FILTRO=FILTRO+[ .AND. RECIBO="A"]
case xrecibo=" "
FILTRO=FILTRO+[ .AND. RECIBO<>"A"]
ENdcase
IF Xfecha1>CTOD(" - - ") .AND. Xfecha2=CTOD(" - - ")
FILTRO=FILTRO+" .AND. XFECHA1=FECHA"
ENDIF
IF ncliente>0
filtro=filtro+" .AND. CODCLIENTE=ncliente"
ENDIF
IF xmes>0
filtro=filtro+" .and. month(fecha)=xmes"
endif
IF ntrimestre>0
FILTRO=FILTRO+" .AND. QUARTER(FECHA)=NTRIMESTRE"
ENDIF
IF anio>0
FILTRO=FILTRO+" .AND. anio=year(fecha)"
ENDIF
IF Xcobrada="S"

filtro=filtro+[ .AND. fechapago!=ctod(" - - ")]
endif
if xcobrada="N"

filtro=filtro+[ .AND. fechapago=ctod(" - - ")]
endif
if nformcobro>0

filtro=filtro+" .AND. numforpago=nformcobro"
ENDIF

IF Xcolabora<>" "
filtro=filtro+" .AND. colaborado=xcolabora"
ENDIF
if Xnotas<>SPAC(15)
filtro=filtro+" .and. upper(xnotas)$upper(notas)"
endif
IF xc<>spac(20)
xc=alltrim(xc)
filtro=filtro+" .and. (xc$upper(concepto1) .or. xc$upper(concepto2) .or. xc$upper(concepto3) .or. xc$upper(concepto4) .or. xc$upper(concepto5) .or. xc$upper(concepto6) .or. xc$upper(concepto7) .or. xc$upper(concepto8) .or. xc$upper(concepto9) .or. xc$upper(concepto10) .or. xc$upper(concepto11) .or. xc$upper(concepto12) .or. xc$upper(concepto13))"
endif
IF Xiva<>spac(2)
xiva:=alltrim(upper(xiva))
xfiltro=spac(20)
do case
case xiva="7"
xfiltro="iva=7"
case xiva="16"
xfiltro="iva=16"
case xiva="8"
xfiltro="iva=8"
case xiva="18"
xfiltro="iva=18"
case xiva="M"
xfiltro=[tipofact="M"]

endcase
filtro=filtro+" .and. "+xfiltro
endif

IF UPPER(left(alltrim(filtro),5))=".AND."
FILTRO=RIGHT(FILTRO,LEN(FILTRO)-6)
ENDIF

SELE 1
IF LASTKEY()=27
set colo to w
@ 3,1 clea to 21,78
FILTRO:=SPAC(500)
PARTE:=SPAC(90)
IMPRIME()
RETU NIL
ENDI
SET CURS ON
SET COLOR TO
COIN:=0
DBGOTOP()
IF empty(filtro)
SET FILTER TO
SETCOLOR("w+/n")
@ 7,72 SAY RECC() PICT "@E #,###"
COIN:=RECC()
IF coin>0
DBGOTOP()
SUM sumaexenta,suma,sumaiva,total TO vtotalexen,vsuma,viva,vtotal
ENDIF
ELSE
FILTRO:=allTRIM(FILTRO)
SET FILTER TO &filtro
GO TOP
COUNT FOR &filtro TO COIN
DBGOTOP()
SUM sumaexenta,suma,sumaiva,total TO vtotalexen,vsuma,viva,vtotal FOR &FILTRO
ENDIF
IF COIN=0
SET COLO TO W/N
mensatext("No coincide ninguna factura.",2)
set filter to
LOOP

ENDIF
Gipuzkoa - ESPAÑA
paimar
Posts: 64
Joined: Wed May 23, 2012 8:52 pm

filtro:="test->codigo>3" y set filter to &filtro /si funcio

Post by paimar »

Hola

Afinando un poco mas :

filtro:="test->codigo>3"
set filter to &filtro

/si funciona


pero si hago

filtro:="test->codigo>form_1.text_3.value"
set filtro to &filtro


da error Error BASE/1449 Sintax error:&

Que puede pasar ?

gracias
Gipuzkoa - ESPAÑA
User avatar
danielmaximiliano
Posts: 2612
Joined: Fri Apr 09, 2010 4:53 pm
Location: Argentina
Contact:

Re: filtro:="test->codigo>3" y set filter to &filtro /si fu

Post by danielmaximiliano »

paimar wrote:Hola

Afinando un poco mas :

filtro:="test->codigo>3"
set filter to &filtro

/si funciona


pero si hago
filtro:="test->codigo>form_1.text_3.value"
set filtro to &filtro


da error Error BASE/1449 Sintax error:&

Que puede pasar ?

gracias
Hola Paimar: filtro:="test->codigo>form_1.text_3.value"
estas sumando la palabra "form_1.text_3.value" en vez del valor
intenta

Code: Select all

filtro:="test->codigo>"+Str(form_1.text_3.value)
espero no equivocarme
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Post Reply