CONSULTA SQL COM E SEM ACENTOS NO ACESS VIA ADO

DELLAMARE 03/12/2010 10:42:59
#358707
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.

LLAIA 03/12/2010 12:20:05
#358723
Cara, no access eu nunca vi busca case insensitive com relação a acentos (mas pode existir). A gente consegue isso nos SGBDs ao atribuir collates específicos se não me engano.

No Access vc pode fazer uma função que substitua vogais com acento por ?, e usar o operador Like no lugar de =. A sua consulta ficaria assim:

 Tag = SQL([Ô]Select Nome From Cliente where nome LIKE [ô]Jo?o[ô][Ô])


Claro que nessa situação só são retornados apenas registros que tenham uma palavra no campo nome. Se João estiver de várias formas em vários registros em várias posições dentro do campo, utilize asterisco antes e depois.

 Tag = SQL([Ô]Select Nome From Cliente where nome LIKE [ô]*Jo?o*[ô][Ô])

Tópico encerrado , respostas não são mais permitidas