OrdWildSeek

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: OrdWildSeek

Mensagem por sygecom »

viewtopic.php?f=4&t=8543
Agora entendi seu post, favor continuar no link acima !!!
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
sambomb
Usuário Nível 3
Usuário Nível 3
Mensagens: 250
Registrado em: 24 Out 2008 17:02
Localização: Itaocara - RJ - Brasil

Re: OrdWildSeek

Mensagem 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.
Imagem

Rca Sistemas - Itaocara - RJ
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: OrdWildSeek

Mensagem 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
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
sambomb
Usuário Nível 3
Usuário Nível 3
Mensagens: 250
Registrado em: 24 Out 2008 17:02
Localização: Itaocara - RJ - Brasil

Re: OrdWildSeek

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

Rca Sistemas - Itaocara - RJ
Responder