ATS
|
OURINHOS SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 05/12/2006 08:24 hs
Tenho um sistema feito em Visual Basic 6 e banco de dados Access 97. Quando efetuo uma pesquisa através dos comandos SQL ele faz distinção entre palavras com ou sem acento. Como faço para a pesquisa me trazer as palavras com acento e tambem as sem acento?
|
|
|
|
kerplunk
|
SÃO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 05/12/2006 08:34 hs
Isso não vai ser possível usando a engine SQL do access. Claro que tem solução, mas complexa e lenta. Você teria que pegar a tabela registro por registro e transferir tudo para uma tabela temporária, trocando MANUALMENTE os "À","Â","Ã","Á" por "A" e tb com todos os "O" acentuados...
|
|
|
|
Postada em 05/12/2006 10:35 hs
Postei um tempo atrás sobre isso... realmente o q o Kerplunk disse é verdade mas se quiser mesmo assim está aqui o post: Nele está uma função q retorna uma string para pesquisar as palavras acentuadas. Provavelmente vc vai ter q alterá-la um pouco mas a base é esta. at+
|
|
|
CSRocha
|
BRASILIA DF - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 06/12/2006 15:12 hs
Uso esta função há tempos:
------------------------------- Function SemAcento(texto) Dim Carac_esp, C_especial, C_subst As String Dim F_tam As Integer, F_pos As Integer Dim conta_letra As Integer, conta_pos As Integer Dim Fonte As String Fonte = texto C_especial = "áàãâäÁÀÃÂÄóòõôöÓÒÕÔÖÉÈÊËéèêëíìïÍÌÏúùûüÚÙÛÜçÇñ" C_subst = "aaaaaAAAAAoooooOOOOOEEEEeeeeiiiIIIuuuuUUUUcCn" F_tam = Len(Fonte) For conta_letra = 1 To F_tam Carac_esp = Mid(Fonte, conta_letra, 1) F_pos = InStr(C_especial, Carac_esp) If F_pos > 0 Then Mid(Fonte, conta_letra, 1) = Mid(C_subst, F_pos, 1) End If Next conta_letra SemAcento = Fonte End Function -----------------------------------------
É só pesquisar: ...Where SemAcento(rs!Nome) = '" & SemAcento(strNome) & "'"... ou coisa parecida.
|
|
|
ATS
|
OURINHOS SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 07/12/2006 16:25 hs
Estou tetntando colocar a função "SemAcento" passado no topico acima mas esta dando erro da a seguinte mensagem: Função 'SemAcento' indefinida na expressão Veja o comando SQL onde estou tentado incluir a função: Set rstRegistro = cnnPesquisa.Execute("SELECT tblCadProd.CodigoProduto, tblCadProd.Grupo, " _ & "tblCadProd.CodigoBarras, tblCadProd.DescricaoProduto, " _ & "tblCadProd.Autor, tblCadProd.Editora, tblCadProd.Assunto, " _ & "tblCadProd.Setor, tblCadProd.ISBN, tblCadProd.QuantidadeEstoque, " _ & "tblCadProd.EstoqueMinimo, tblCadProd.PrecoCusto, " _ & "tblCadProd.PrecoVenda, tblCadProd.DataAquisicao, tblCadProd.Observacao, " _ & "tblCadProd.MargemLucro, tblCadProd.CodigoInterno, tblCadProd.Edicao, " _ & "tblCadProd.Pagina, tblCadProd.Ano, tblCadProd.Idioma, tblCadProd.foto, " _ & "tblCadProd.PrecoCustoNovo, tblCadProd.PrecoVendaNovo, " _ & "tblCadProd.MargemLucroNovo, tblCadProd.QuantidadeEstoqueNovo, tblCadProd.Peso, " _ & "tblCadProd.Classe, tblCadProd.Classificacao, tblCadProd.DataUltimoReajustePreco, " _ & "tblCadProd.ProdutoInativo, tblCadProd.NaoImpProdTabPreco from tblCadProd " _ & "WHERE tblCadProd.Grupo LIKE 'Livros' " _ & "AND SemAcento(tblCadProd.DescricaoProduto) LIKE '%" & SemAcento(txtPesquisa) & "%' " _ & "ORDER BY tblCadProd.DescricaoProduto;")
|
TÓPICO EDITADO
|
|
|
|
CSRocha
|
BRASILIA DF - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 07/12/2006 17:46 hs
Na realidade eu utilizo essa função fora de query SQL, daí não sei se funciona, ou seja, não sei se se pode utilizar uma função como esse em uma SQL.
Testou = em vez de LIKE? Ou vc está pesquisando parte de strings?
Outro detalhe: acredito que a função tem que estar em um módulo.
|
|
|
|