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.... ;)