BUSCA DINAMICA

IRENKO 13/11/2009 14:29:26
#327675
Pessoal, em um campo da tabela eu tenho gravado u texto que pode estar assim:

0679-02-275-1

ou assim:

0679.02.275-1

ou ainda assim:

0679022751

A pergunta é, em um textbox eu digito qualquer uma dessas opções e o codigo de busca faz a comparação com o que esta gravado no campo, se o numero que digitei é igual ao do campo sem os outros caracteres ele me da o resultado. Como montar essa rotina para comparar os dados?
RCMRO 13/11/2009 14:44:45
#327683
Em SQLServer....

SELECT <<CAMPOS>>
FROM <<TABELA>>
WHERE REPLACE(REPLACE(campo, [ô].[ô],[ô][ô]),[ô]-[ô],[ô][ô]) = REPLACE(REPLACE(campo_input, [ô].[ô],[ô][ô]),[ô]-[ô],[ô][ô])
IRENKO 13/11/2009 14:53:50
#327686
Desculpe-me o banco é access.
RCMRO 13/11/2009 16:15:50
#327699
Desculpa... No access é igual.
IRENKO 13/11/2009 16:41:04
#327705
Tentei assim:

.Source = [Ô]SELECT Desenho,LM_2 AS Lista FROM DadosCab WHERE REPLACE(REPLACE(Desenho, [ô].[ô],[ô][ô]),[ô]-[ô],[ô][ô]) = REPLACE(REPLACE(TxtBusca.text, [ô].[ô],[ô][ô]),[ô]-[ô],[ô][ô])ORDER BY LM_2[Ô]

deu erro:

(Função replace indefinida na expressão)
PH1959 13/11/2009 18:13:08
#327710
é....como consulta fica dificil...
tem duas opções....
uma é consultar os primeiros 4 elementos (isso se sempre suas pontuações estiverem apos o 4o digito)
depois joga em uma variavel e compara...

o cód seria +- isso
result= resultado de sua busca
result=format(result,[Ô]@@@@@@@@@@[Ô]) [ô]pega só os numeros
if result = textbusca then [ô]textbusca ==> somente numeros
msgbox [Ô]CONSULTA Finalizada[Ô]
else
Busca_proximo_registro
endif


AGORA
a melhor solução é vc criar uma consulta em seu BD e converter todos estes textos em NUMERO




MARCELO.TREZE 13/11/2009 19:37:20
#327714
Eu acredito que o maior problema está na entrada dos dados isto deve ser formatado, para ser igual em todas situações se não vc poderá ter problema de desenpenho se tiver que ficar alterando tudo toda vez que for consultar.

mude a forma como salva os dados coloque uma formatação unica


quanto a query tente isto

.Source = [Ô]SELECT REPLACE(REPLACE(Desenho, [ô].[ô],[ô][ô]),[ô]-[ô],[ô][ô]) As NumDesenho ,LM_2 FROM DadosCab WHERE  NumDesenho = [ô][Ô] & txtNumero.Text & [Ô][ô] ORDER BY LM_2[Ô]


tente desta forma

no txtNumero nào coloque os sinais nem pontos apenas numeros

RCMRO 14/11/2009 00:33:02
#327726
Resposta escolhida
Corrige ai pois vc mandou o nome do campo como instrução e não o valor dele.....

Corrigi o código. Copia e cola para ver se funciona

Source = [Ô]SELECT Desenho,LM_2 AS Lista FROM DadosCab WHERE REPLACE(REPLACE(Desenho, [ô].[ô],[ô][ô]),[ô]-[ô],[ô][ô]) = REPLACE(REPLACE([Ô] & TxtBusca.text & [Ô], [ô].[ô],[ô][ô]),[ô]-[ô],[ô][ô])ORDER BY LM_2[Ô]
RCMRO 17/11/2009 11:21:03
#327923
E ai??? Funcionou???
Se já teve a sua dúvida solucionada, fecha o tópico e pontua quem te ajudou.

Vlw
EDERMIR 17/11/2009 11:33:02
#327924
Primeiramente eu acredito que a resposta do MARCELO_TREZE deve resolver.

Outra coisa que deve ser feita é a retirada da formatação no banco.
RCMRO 17/11/2009 13:35:36
#327942
[Ô]Segundamente[Ô], se for SQLServer, a Solução do Marcelo não funciona...
[Ô]Terceiramente[Ô], o dado pode estar gravado e pode ser digitado de qualquer forma, por isso o tratamento do dado deve ser sempre no WHERE...
E por [Ô]últimamente[Ô], a retirada da formatação no Banco de Dados vai depender de todos os acessos a esse dado. Se existem mais sistemas que acessam, com certeza contam com algum tipo de formatação (ou a falta dela) assim, retirar a formatação requeriria uma série de perguntas anteriores à mudança. Sem dúvida, a padronização seria o ideal mas....

E finalmente, acabei [Ô]acabadamente[Ô]
Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas