- Andreia -
25/07/2006 - 20:43
Boa Noite
alguém poderia me ajudar...eu não entendo por que uma consulta no Banco de Dados não aceita acento.
select * from Especialidade where Upper(especialidade) like Upper('téste')
da o seguinte erro:
Arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets
Statement: select * from Especialidade where Upper(especialidade) like Upper('téste')
o campo é Varchar
Agradeço MUITO
Eder Moraes
28/07/2006 - 13:28
Evitando caracteres com acento
A função abaixo pega um string informada como parâmetro e retira todas as letras acentuadas substituindo-as por letras correspondentes sem acento.
function AnsiToAscii ( str: String ): String;
var
i: Integer;
begin
for i := 1 to Length ( str ) do
case str[i] of
'á': str[i] := 'a';
'é': str[i] := 'e';
'í': str[i] := 'i';
'ó': str[i] := 'o';
'ú': str[i] := 'u';
'à': str[i] := 'a';
'è': str[i] := 'e';
'ì': str[i] := 'i';
'ò': str[i] := 'o';
'ù': str[i] := 'u';
'â': str[i] := 'a';
'ê': str[i] := 'e';
'î': str[i] := 'i';
'ô': str[i] := 'o';
'û': str[i] := 'u';
'ä': str[i] := 'a';
'ë': str[i] := 'e';
'ï': str[i] := 'i';
'ö': str[i] := 'o';
'ü': str[i] := 'u';
'ã': str[i] := 'a';
'õ': str[i] := 'o';
'não': str[i] := 'n';
'ç': str[i] := 'c';
'Á': str[i] := 'A';
'É': str[i] := 'E';
'Í': str[i] := 'I';
'Ó': str[i] := 'O';
'Ú': str[i] := 'U';
'À': str[i] := 'A';
'È': str[i] := 'E';
'Ì': str[i] := 'I';
'Ò': str[i] := 'O';
'Ù': str[i] := 'U';
'Â': str[i] := 'A';
'Ê': str[i] := 'E';
'Î': str[i] := 'I';
'Ô': str[i] := 'O';
'Û': str[i] := 'U';
'Ä': str[i] := 'A';
'Ë': str[i] := 'E';
'Ï': str[i] := 'I';
'Ö': str[i] := 'O';
'Ü': str[i] := 'U';
'Ã': str[i] := 'A';
'Õ': str[i] := 'O';
'não': str[i] := 'N';
'Ç': str[i] := 'C';
end;
Result := str;
end;
Dessa forma voce evita acentos ou outro caracter em uma inclusao ou consulta. isso é só uma dica se não quiser usar não é obrigada.