Recebi uma solicitação de um cliente da empresa manifestando problemas com o recurso de recuperar senha do site. Quando os usuários entravam com as informações pessoais para cadastrar uma nova senha, todos os nomes que apresentavam acentuação apresentavam problemas. A solução foi fazer uma função que acertava as informações alterando os caracteres com acentos para que ficassem sem acentos. Mas ainda foi preciso usar a função Translate do Oracle (banco de dados usado na aplicação em questão) para evitar problemas caso alguma informação estivesse com acentuação no banco de dados. Desta forma a validação acontecerá nos dois lados, na entrada de dados do usuário no formulário e no banco de dados.
A função para a validação no formulário de entrada de dados do cliente foi a seguinte:
function LimparString(txt)
Dim xc, xs, saida, posicao, caract, X
xc = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ'"
xs = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"
saida = ""
If txt <> "" then
For X = 1 To Len(txt)
caract = Mid(txt,X,1)
posicao = InStr(xc,caract)
If posicao > 0 Then
caract = mid(xs,posicao,1)
end if
saida = saida & caract
Next
LimparString = saida
End If
end function
...
E a string sql com o Translate ficou assim:
strSQL = "select CodProfissional from prof where NumCartao = '"&numeroCartao&"' and translate(NomeCliente,'ãáéêíóõúçÃÁÉÍÓÕÚÇãáéêíóõúçÃÁÉÍÓÕÚÇ','aaeeiooucAAEIOOUC') = '"&nomeCompleto&"' and Cpf = "&cpf&" and DataNascimento = to_date('"&sortDate(dataNascimento)&"') and translate(NomeMae,'ãáéêíóõúçÃÁÉÍÓÕÚÇãáéêíóõúçÃÁÉÍÓÕÚÇ','aaeeiooucAAEIOOUC') = '"&nomeMae&"'"
O funcionamento do Translate substitui cada caracter do segundo parametro, pelos respectivos caracteres do terceiro parametro, na string do campo do primeiro parametro.
Nenhum comentário:
Postar um comentário