Amigos,
Estou tentando modificar um pouco esta função, para só pedir o campo para indexação se for realmente necessário (já que o que eu preciso mesmo não é a indexação, e sim o filtro; poderia até suprimi-la, se fosse possível), mas estou tendo dificuldade.
Fiz assim:
Código: Selecionar todos
@ maxrow()-10,0 clear to maxrow(),maxcol()
@ maxrow()-8,1 say "Procurar no campo:"
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=45
endif
enddo
menu to opfs
cp=field(opfs)
@ maxrow()-10,0 clear to maxrow(),maxcol()
@ maxrow()-8,0 say "Procurar por:"get exp pict "@!"
read
col=1
do while .t.
if field(col)="DATA" .or. "DT"$field(col)
cpf=field(col)
exit
else
col++
if fieldsize(col)=0
@ maxrow(),43 say "Indexando por:"get cpf
read
exit
endif
endif
enddo
if lastkey()#27
exp=alltrim(exp)
opfs=0
@ maxrow(),0 clear to maxrow(),maxcol()
@ maxrow(),1 prompt "Filtrar todas as correspondências"
@ maxrow(),41 prompt "Selecionar a primeira correspondência"
menu to opfs
keyb " "
cFiltro:="exp$upper("+cp+")"
do case
case opfs=1
INDEX ON &cpf TAG TEMPBOL TO TEMPBOL FOR &cFiltro.
case opfs=2
go top
locate for &cFiltro. //exp$(cp)
endcase
endif
@ maxrow()-5,0 clear to maxrow(),maxcol()
Estranhamente, está dando o erro:
Na seguinte linha:
Não sei de onde ele está tirando essa variável DATA, que eu não estou usando. Já conferi que a variável cpf, no exemplo que estou usando, é DTCAMYLLA, correspondente a um campo da base em edição. Também conferi que cFiltro corresponde ao objeto de pesquisa digitado pelo usuário.
Só não sei o conteúdo de TEMPBOL, pois copiei esse exemplo de um post deste fórum, sem entender muito bem. Mas também já conferi que TEMPBOL não está anteriormente definido.
Alguém saberia me dizer a razão desse erro?