erro no set filter
Enviado: 07 Jul 2014 02:34
Meus amigos, estou enfrentando uma situação com uma função que tenho faz tempo, que estava funcionando perfeitamente até há pouco, mas agora parou de funcionar. Não lembro de ter mudado nada na função.
O problema é no set filter, que não está mais filtrando. E só está dando problema quando o campo a ser pesquisado é caractere. Nos demais casos ele filtra corretamente.
Alguém saberia me dizer o que está errado?
A função é a seguinte:
O problema é no set filter, que não está mais filtrando. E só está dando problema quando o campo a ser pesquisado é caractere. Nos demais casos ele filtra corretamente.
Alguém saberia me dizer o que está errado?
A função é a seguinte:
Código: Selecionar todos
dbedit(2,1,maxrow()-2,maxcol(),,"altbase")
function altbase(modo,coluna)
local exp :=space(15)
local cp :=""
local opfs :=0
local bsuso :=alias()
set cursor on
setcancel(.f.)
@ 0,31 clear to 0,maxcol()
@ 0,45 say alltrim(str(recno()))+"/"+alltrim(str(reccount()))+" registros; campo tipo "+fieldtype(coluna)+", com "+alltrim(str(fieldsize(coluna)))+" caracteres "
do case
case lastkey()=27
set filter to
set index to
if us="I"
setcancel(.t.)
endif
return(0)
…
case lastkey()=281 //ALT-P
set index to
set filter to
erase tembol.ntx
usebase(bsuso,"S")
@ maxrow()-10,0 clear to maxrow(),maxcol()
@ maxrow()-6,1 say "Procurar no campo:" //get cp
linha=maxrow()-8
do while .t.
@ linha,colb prompt field(col)
linha++
col++
if fieldsize(col)=0
exit
endif
if linha>maxrow()
linha=maxrow()-8
colb=colb+14
endif
enddo
menu to opfs
cp=field(opfs)
@ maxrow()-10,0 clear to maxrow(),maxcol()
do case
case fieldtype(cp)="C"
@ maxrow()-8,0 say "Procurar por:"get exp pict "@!"
read
cFiltro:="exp$upper("+cp+")"
case fieldtype(cp)="N"
@ maxrow()-7,10 say "(valor menor) (valor maior)"
@ maxrow()-8,0 say "Procurar valores entre:"get v1 pict "9999999.99"
@ maxrow()-8,37 say "e:"get v2 pict "9999999.99"
read
cFiltro:=cp+">="+str(v1)+" .and. "+cp+"<="+str(v2)
case fieldtype(cp)="D"
@ maxrow()-8,0 say "Data:"get dt
read
cFiltro:=cp+"=dt"
endcase
if lastkey()#27
exp=alltrim(exp)
opfs=0
@ maxrow(),0 clear to maxrow(),maxcol()
@ maxrow()-1,1 prompt "Filtrar todas as correspondências"
@ maxrow()-1,41 prompt "Selecionar a primeira correspondência"
menu to opfs
keyb " "
do case
case opfs=1
INDEX ON recno() TAG TEMPB TO TEMPBOL FOR &cFiltro.
case opfs=2
go top
locate for &cFiltro. //exp$(cp)
endcase
endif
@ maxrow()-5,0 clear to maxrow(),maxcol()
@ maxrow(),1 say "Alt-P - procura/filtra base; Alt-M - mostra estrutura da base; F2 - acresce registros"
return(1)