Página 1 de 1
Pesquisa Com SEEK
Enviado: 11 Dez 2009 21:12
por Rosangelo
Preciso de ajuda, não estou conseguindo fazer uma pesquisa com tres dados ao mesmo tempo
exemplo, tenho um programa que precisa pesquisar, Matricula do fornecedor, NF e a SF, se a pesquisa for encontrada
traz os dados para tela, caso não tenha encontrado nota no banco mensagem na detal NF nao encontrada
exemplo
Código: Selecionar todos
MATRICU = 0
NF = 0
SERNF =0
@ 06,05 SAY "FORNECEDOR.:" GET MATRICU PICTURE "9999999"
@ 06,31 SAY "NUMERO NF.:" GET NF PICTURE "999999"
@ 06,55 SAY "SERIE.:" GET SERNF PICTURE "99"
READ
SELECT ENTEST1
SEEK (MATRICU,NF,SERNF )
IF FOUND()
@ 09,18 SAY DATANF
@ 09,46 SAY DATAENT
@ 13,05 SAY CODIGO
@ 13,25 SAY UNIDADES
@ 13,45 SAY VALORUNI
@ 17,57 SAY VALTOTAL
@ 18,11 SAY OBSERV
ELSE
ALERT ("NOTA FISCAL NAO ENCOTRADA")
LOOP
ENDIF
Re: Pesquisa Com SEEK
Enviado: 11 Dez 2009 22:24
por Vander
Olá Rosangelo;
Como você esta criando os indices ?
Vander
Re: Pesquisa Com SEEK
Enviado: 11 Dez 2009 22:41
por alaminojunior
Rosangelo escreveu:SEEK (MATRICU,NF,SERNF )
IF FOUND()
Pois é !
1º passo é indexar usando os três campos em questão:
Assumindo que os três campos são de tipos iguais.
Daí sim, emitir o Seek, que aliás pode ser usado a maneira funcional que já devolve o resultado:
Re: Pesquisa Com SEEK
Enviado: 12 Dez 2009 17:10
por alxsts
Olá Rosangelo, seja bem-vindo ao Fórum!
alaminojunior escreveu:index on matricu+nf+sernf to arquivo
Analisando o código postado, percebe-se, pelas
Pictures dos
Gets, que os 3 campos são numéricos. Assim, se os campos do DBF também forem numéricos, o índice deve ser:
Código: Selecionar todos
index on Str( matricu, 7 ) + Str( nf, 6 ) + Str( sernf, 2 ) to arquivo
Após a criação deste índice, será possível faser o SEEK ou DbSeek() mostrado pelo Alamino, fazendo-se as conversões:
Código: Selecionar todos
If ! DbSeek( Str( matricu, 7 ) + Str( nf, 6 ) + Str( sernf, 2 )
alert("não achei")
Endif
Achei estranho o campo serie da NF ser numérico. Geralmente é alfanumérico. Ex: "U ", "B1 ", etc...
Pesquisa Com SEEK
Enviado: 13 Dez 2009 00:04
por Rosangelo
ok muito obrigado
entedi, fiz desta maneira "index on matricu+nf+sernf to arquivo" e deu certo, porque os tres campos são numericos certo,
e quando o um campo é Character dai como faço, pois normalmente o campo da serie da NF é 1S, F,G,1E??????????
Re: Pesquisa Com SEEK
Enviado: 13 Dez 2009 00:44
por Maligno
fiz desta maneira "index on matricu+nf+sernf to arquivo" e deu certo, porque os tres campos são numericos
Se os campos são numéricos e você fez desse jeito, com toda certeza está errado. Os números se somam e deixam de representar as informações.
Aliás, NF, série e matrícula são dados que deveriam ser sempre
char. Qualquer dado que não necessite de
cálculo (incluindo números de ID em seqüência) sempre deveria ser
char. Isso facilita muito em várias situações. Inclusive na composição de chaves de índice. Se esses dados fossem
char aí sim, sua chave estaria certa.
Pesquisa Com SEEK
Enviado: 15 Dez 2009 16:05
por Rosangelo

) Então fiz da maneira que sugeriu, matricula, nf e serie do tipo char,
Porem não me satisfaz, pois eu tenho um código que utilizando o dbbuttom gera um matricula automática, somando na ultima gravada no banco +1. Por isso minha matricula e do tipo numérico, e nf também pois posso precisar selecionar (tipo relatório) das NF de Uma numeração ate Outra etc, o único campo Char seria a serie, preciso de um índice que pesquise Matric, NF , do tipo numeric, e serie do tipo char, isso e possivel???? Preciso de um exemplo
Ex:
Matric = 0
NF = 0
Serie = Space(2)
Seek Matric,NF,Serie
If found ()
? “mostra os dados na tela “
else
? “NF não encontrada”
Re: Pesquisa Com SEEK
Enviado: 15 Dez 2009 16:46
por Maligno
Eu também às vezes preciso de um número em seqüência. Ainda assim, mantenho tudo
char e faço a conversão/conta quando necessário. Exemplo:
NF := StrZero(Val(NF)+1,6)
Prefiro isso (faço só de vez em quando) do que fazer a conversão de tipos dentro da chave de índice, o que consome muito tempo de processamento. É a regra de ouro: "Dos males, o menor".

Re: Pesquisa Com SEEK
Enviado: 16 Dez 2009 13:37
por alaminojunior
Veja o que lhe dá menos trabalho e dor de cabeça futura: converter os campos no dbf, ou então faça como sugeriu o Alex: converta na indexação e no seek.