CONSULTA SQL COM E SEM ACENTOS NO ACESS VIA ADO
Bom Dia!!
Estou utilizando VB6 com Acess
Estou com um problema, quando vou consultar registros no Acess utilizando SQL via ADO.
O problema é com Acentos Ex:
Vou consultar o nome: João
No Banco esta como: João
o problema é que quando consulto: Joao , o registro não aparece...
tem como fazer esta consulta ignorando os acentos via SQL ADO..
Public Function SQL(strparsql As String) As Variant
On Error GoTo Err
Dim RS_TMP As ADODB.Recordset
Set RS_TMP = New ADODB.Recordset
RS_TMP.Open strparsql, VG_CNX [ô] VG_CNX está é minha variável de conexão global.
If Not RS_TMP.EOF Then
SQL = [Ô][Ô] & RS_TMP(0) [ô]SQL retorna a consulta
End If
If RS_TMP.state = adStateOpen Then
RS_TMP.Close
End If
Set RS_TMP = Nothing
Err:
If Err.Number = 0 Then
Exit Function
ElseIf Err.Number = 3704 Then
Resume Next
MsgBox [Ô]Erro de sistema favor entra em contato com o administrador de sistema - 85 8897-4769[Ô], vbCritical
ElseIf Err.Number = -2147217865 Then
Resume Next
End If
End Function
---------------------------------------------------------
Exemplo de consulta:
Tag = SQL([Ô]Select Nome From Cliente where nome=[ô]Joao[ô][Ô])
Na tabela tem: João
Mas não retorna nada por conta do acento.
Que puder me ajudar fica o meu agradecimento.
Estou utilizando VB6 com Acess
Estou com um problema, quando vou consultar registros no Acess utilizando SQL via ADO.
O problema é com Acentos Ex:
Vou consultar o nome: João
No Banco esta como: João
o problema é que quando consulto: Joao , o registro não aparece...
tem como fazer esta consulta ignorando os acentos via SQL ADO..
Public Function SQL(strparsql As String) As Variant
On Error GoTo Err
Dim RS_TMP As ADODB.Recordset
Set RS_TMP = New ADODB.Recordset
RS_TMP.Open strparsql, VG_CNX [ô] VG_CNX está é minha variável de conexão global.
If Not RS_TMP.EOF Then
SQL = [Ô][Ô] & RS_TMP(0) [ô]SQL retorna a consulta
End If
If RS_TMP.state = adStateOpen Then
RS_TMP.Close
End If
Set RS_TMP = Nothing
Err:
If Err.Number = 0 Then
Exit Function
ElseIf Err.Number = 3704 Then
Resume Next
MsgBox [Ô]Erro de sistema favor entra em contato com o administrador de sistema - 85 8897-4769[Ô], vbCritical
ElseIf Err.Number = -2147217865 Then
Resume Next
End If
End Function
---------------------------------------------------------
Exemplo de consulta:
Tag = SQL([Ô]Select Nome From Cliente where nome=[ô]Joao[ô][Ô])
Na tabela tem: João
Mas não retorna nada por conta do acento.
Que puder me ajudar fica o meu agradecimento.
da uma olhada
http://www.macoratti.net/sql_sdex.htm
http://www.macoratti.net/sql_sdex.htm
Tag = SQL([Ô]Select Nome From Cliente where nome like [ô]%Joao %[ô][Ô])
Na realidade a consulta tem que desconhecer o acento do texto.
Como por exemplo no banco do acess está com o nome: José João da silva
Se na consulta estiver com: Jose Joao da silva
O Sql não traz os registro.
Como por exemplo no banco do acess está com o nome: José João da silva
Se na consulta estiver com: Jose Joao da silva
O Sql não traz os registro.
você testou com o Like? igual no exemplo que eu passei?
Testei mas não funcionou..
Tag = SQL([Ô]Select Nome From Cliente where nome like [ô]Joao %[ô][Ô])
Tag = SQL([Ô]Select Nome From Cliente where nome like [ô]Jo%ao %[ô][Ô])
tente assim
Tag = SQL([Ô]Select Nome From Cliente where nome like [ô]Jo%ao %[ô][Ô])
tente assim
primeiro faça o seguinte abra o banco access e veja qual os caracteres que aparecem no lugar do acento.
eu faria o seguinte tiraria, o não permitiria a digitação de acentos, ou seja, não salvaria com acentos.
eu faria o seguinte tiraria, o não permitiria a digitação de acentos, ou seja, não salvaria com acentos.
o access não faz isso sozinho, se quiser mesmo usar o access como banco você tem que tratar na aplicação, fazer um replace algo assim
dim varSQL as string
dim query as string
varSQL = [Ô]João[Ô]
varSQL = Replace(varSQL, [Ô]ã[Ô], [Ô]a[Ô]) [ô]
query = [Ô]select * from tabela a where a.campo like [ô]%[Ô] & varSQL & [Ô][ô]%[Ô]
para o access o [ô]ã[ô] e diferente de [ô]a[ô] portanto o like mostra so o que este pedindo
mas o certo mesmo e fazer isso no banco... usando sondex no sql server
pesquisa por proximidade sonora... isso em algumas palavras ja pode contemplar os sons de [ô]s[ô] [ô]ç[ô] ão oes...
não precisa se preocupar...
dim varSQL as string
dim query as string
varSQL = [Ô]João[Ô]
varSQL = Replace(varSQL, [Ô]ã[Ô], [Ô]a[Ô]) [ô]
query = [Ô]select * from tabela a where a.campo like [ô]%[Ô] & varSQL & [Ô][ô]%[Ô]
para o access o [ô]ã[ô] e diferente de [ô]a[ô] portanto o like mostra so o que este pedindo
mas o certo mesmo e fazer isso no banco... usando sondex no sql server
pesquisa por proximidade sonora... isso em algumas palavras ja pode contemplar os sons de [ô]s[ô] [ô]ç[ô] ão oes...
não precisa se preocupar...
no link que te mandei ensina a fazer a metodo sondex no vb
http://www.macoratti.net/sql_sdex.htm
é a forma mais facil de fazer
ja que o access não pode fazer isso sozinho!
http://www.macoratti.net/sql_sdex.htm
é a forma mais facil de fazer
ja que o access não pode fazer isso sozinho!
ajudou?
Tópico encerrado , respostas não são mais permitidas