Página 2 de 2
Re: OrdWildSeek
Enviado: 15 Set 2008 10:39
por sygecom
viewtopic.php?f=4&t=8543
Agora entendi seu post, favor continuar no link acima !!!
Re: OrdWildSeek
Enviado: 27 Out 2008 16:59
por sambomb
Código: Selecionar todos
DBGOTOP()
if OrdWildSeek("*A*")
AADD(aNomes,TESTE->Nome)
DO WHILE OrdWildSeek("*A*",.T.)
AADD(aNomes,TESTE->Nome)
ENDDO
else
Msg("Nenhum registro encontrado")
end
Isso não é o suficiente? faz o 1º sem o parâmetro testando se tem ou não e só depois entra para iniciar o loop...
OBS.: vai ser mais que 2x mais rápido que a outra solução proposta o que vai dar diferença para grandes bancos de dados...
mais que 2x porque faz apenas um loop com o ordwildseek e não precisa fazer aScan para teste de redundancia que por sinal pode gerar erro pois podem ter dois registros iguais e acabar só adicionando uma unica vez.
Ex.:
1º Alexandre
2º Alexandre
3º Maria
4º Sandro
Se for buscar por "*dr*" no módo que foi apresentado anteriormente vai encontrar apenas 2 registros uma vez que o loop invertido irá desconsiderar o 1º Alexandre por ele já ter sido adicionado no primeiro loop.
OBS 2.: só depois reparei que só modifiquei o que o toledo falou, mas fica aqui as obeservações sobre prq não usar 2 loops e um outro método que altera menos o código atual.
Re: OrdWildSeek
Enviado: 27 Out 2008 18:21
por alaminojunior
Caríssimo, no exemplo anterior foram colocados 2 laços, pois é o exemplo que vem no help do xharbour, e que aproveitei para simples conferencia dos resultados, no entanto o correto é apenas um mesmo, como já havia citado:
Código: Selecionar todos
use database
index on ......
GO TOP
aCust := {}
passada:= 1
DO WHILE OrdWildSeek( "*IO?", iif(passada=1,.F.,.T.) )
AAdd( aCust, FIELD->clinom )
passada++
ENDDO
AEval( aCust, {|c| QOut(c) } )
USE
Re: OrdWildSeek
Enviado: 29 Out 2008 08:53
por sambomb
Não sabia que era o exemplo que estava no help mas a explicação pelo menos vai servir para qualquer desavisado que chegue até aqui atras de respostas sobre isso....
