PESQUISA IGNORANDO ACENTO
Entrada 1 >>> Forum ..... minha função retorna [Ô]Fórum[Ô]
Entrada 2 >>> Topico .... minha função retorna [Ô]Tópico[Ô]
e por ai vai ..... eu já tentei usar a função instr entre outras mas todas consideram o acento .... tem como resolver isso???
(Pseudocodigo)
Dim palavra as String
[ô]
palavra = [Ô]Fórum[Ô]
[ô]
palavra = Replace(palavra,[Ô]á[Ô],[Ô]a[Ô])
palavra = Replace(palavra,[Ô]é[Ô],[Ô]e[Ô])
palavra = Replace(palavra,[Ô]Ã[Ô],[Ô]i[Ô])
palavra = Replace(palavra,[Ô]ó[Ô],[Ô]o[Ô])
palavra = Replace(palavra,[Ô]ú[Ô],[Ô]u[Ô])
Eu so queria um atalho para fazer a procura ...... mas valeuuuuu
Dim Letras As String
Dim Conteudo As String
Dim Compara As String
Dim Busca As String
Dim Concatena As String
Dim i, x, count As Integer
Dim Troca As String
For i = 1 To Len(Texto)
Troca = [Ô][Ô]
Select Case Mid(Texto, i, 1)
Case [Ô]Ã[Ô]: Troca = [Ô]A[Ô]
Case [Ô]á[Ô]: Troca = [Ô]a[Ô]
Case [Ô]ã[Ô]: Troca = [Ô]a[Ô]
Case [Ô]Ã[Ô]: Troca = [Ô]A[Ô]
Case [Ô]â[Ô]: Troca = [Ô]a[Ô]
Case [Ô]Â[Ô]: Troca = [Ô]A[Ô]
Case [Ô]à [Ô]: Troca = [Ô]a[Ô]
Case [Ô]À[Ô]: Troca = [Ô]A[Ô]
Case [Ô]Ó[Ô]: Troca = [Ô]O[Ô]
Case [Ô]ó[Ô]: Troca = [Ô]o[Ô]
Case [Ô]õ[Ô]: Troca = [Ô]o[Ô]
Case [Ô]Õ[Ô]: Troca = [Ô]O[Ô]
Case [Ô]Ô[Ô]: Troca = [Ô]O[Ô]
Case [Ô]ô[Ô]: Troca = [Ô]o[Ô]
Case [Ô]é[Ô]: Troca = [Ô]E[Ô]
Case [Ô]é[Ô]: Troca = [Ô]e[Ô]
Case [Ô]Ê[Ô]: Troca = [Ô]E[Ô]
Case [Ô]ê[Ô]: Troca = [Ô]e[Ô]
Case [Ô]ç[Ô]: Troca = [Ô]c[Ô]
Case [Ô]Ç[Ô]: Troca = [Ô]C[Ô]
Case [Ô]Ã[Ô]: Troca = [Ô]I[Ô]
Case [Ô]Ã[Ô]: Troca = [Ô]i[Ô]
Case [Ô]ü[Ô]: Troca = [Ô]u[Ô]
Case [Ô]Ü[Ô]: Troca = [Ô]U[Ô]
Case [Ô]ú[Ô]: Troca = [Ô]u[Ô]
Case [Ô]|[Ô]: Troca = [Ô][Ô]
Case [Ô][Ô]: Troca = [Ô][Ô]
Case [Ô]|[Ô]: Troca = [Ô]e[Ô]
Case [Ô]º[Ô], [Ô]~[Ô], [Ô]'[Ô], [Ô]'[Ô], [Ô][Ô][Ô][Ô], [Ô] [Ô], [Ô]:[Ô], [Ô][ô][Ô]: Troca = [Ô] [Ô]
End Select
If Troca <> [Ô][Ô] Then Mid(Texto, i, 1) = Troca
Next
Letras = [Ô]QWERTYUIOPASDFGHJKLÇZXCVBNMqwertyuiopasdfghjklçzxcvbnm [Ô]
Conteudo = StrReverse(Texto)
For i = 1 To Len(Conteudo)
Busca = Mid(Conteudo, i, 1)
For x = 1 To Len(Letras)
Compara = Mid(Letras, x, 1)
If Compara = Busca Then
Concatena = Concatena + Compara
End If
Next
Next
Conteudo = StrReverse(Concatena)
Conteudo = Trim(Conteudo)
LimpaTextoBD = Conteudo
End Function
Citação:Public Function RemoveAcentos(vCampo As String) As String
Dim I As Integer
Dim vTem As String
Dim vRes As String
vCampo = UCase(vCampo)
vRes = [Ô][Ô]
If Len(I) > 0 Then
For I = 1 To Len(vCampo)
vTem = UCase(Mid$(vCampo, I, 1))
Select Case vTem
Case [Ô]Ã[Ô], [Ô]À[Ô], [Ô]Ã[Ô], [Ô]Â[Ô], [Ô]Ä[Ô]
vTem = [Ô]A[Ô]
Case [Ô]é[Ô], [Ô]È[Ô], [Ô]Ê[Ô], [Ô]Ë[Ô]
vTem = [Ô]E[Ô]
Case [Ô]Ã[Ô], [Ô]ÃŒ[Ô], [Ô]ÃŽ[Ô], [Ô]Ã[Ô]
vTem = [Ô]I[Ô]
Case [Ô]Ó[Ô], [Ô]Ò[Ô], [Ô]Õ[Ô], [Ô]Ô[Ô], [Ô]Ö[Ô]
vTem = [Ô]O[Ô]
Case [Ô]Ú[Ô], [Ô]Ù[Ô], [Ô]Û[Ô], [Ô]Ü[Ô]
vTem = [Ô]U[Ô]
Case [Ô]Ç[Ô]
vTem = [Ô]C[Ô]
Case [Ô]@[Ô]
vTem = [Ô].[Ô]
Case [Ô]º[Ô]
vTem = [Ô]O[Ô]
Case [Ô]ª[Ô]
vTem = [Ô].[Ô]
Case [Ô][ô][Ô]
vTem = [Ô] [Ô]
End Select
vRes = vRes + vTem
Next
End If
RemoveAcentos = vRes
End Function
select * from tabela where nome like [ô]%função%[ô]
Você vai digitar a palavra FORUM e a função deve retornar a palavra FÓRUM?
Você vai digitar FÓRUM e a função vai retornar FORUM?
No primeiro caso, é difÃcil saber onde estará o acento na palavra desejada.
No segundo caso, o FIREBIRD permite a pesquisa no LIKE com a substituição apenas da letra desejada, então você pode procurar como [Ô]F_RUM[Ô]
select * from tabela where nome like [ô]%F_RUM%[ô]
é o seguinte, digamos que ao digitar a palavra [Ô]fórum[Ô] o usuário esquece do acento e digita [Ô]forum[Ô]
O resultado da pesquisa deverá ser [Ô]FÓRUM[Ô]
nao dá pra usar Like na função Open NomeDo Arquivo
...