Função para tirar Acento

20/12/2003

1

Pessoal boa tarde

preciso fazer uma consulta sql no banco e a consulta tem que ser Case sensitive a acento ou seja vou passar como parâmetro ´João e o sistema que me retornar todos os joão tendo acento ou não , pois bem construi uma DLL com esta função fiz uma mini aplicação chamando esta DLL e funciona perfeitamente, registrei esta função no banco e ao dar um select passando como parametro a função o banco esta caindo isso provavelmente deve se ao fato de ter registrado a função de forma errada no banco, segue abaixo o Fonte da DLL e como declarei no banco se alguém puder me ajudar agradeço.

Declaração no Banco
DECLARE EXTERNAL FUNCTION ANSITOASCII
CSTRING(256) CHARACTER SET NONE
RETURNS VARCHAR(256) CHARACTER SET NONE FREE_IT
ENTRY_POINT ´AnsiToAscii´ MODULE_NAME ´Acento´;

Fonte da DLL
:oops: Library Acento;
uses
ShareMem,
SysUtils,
Forms,
dialogs,
Classes;

{$R *.RES}

function AnsiToAscii( str: String ): String; Export;Stdcall;
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´;
´ñ´: 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´;
´Ñ´: str[i] := ´N´;
´Ç´: str[i] := ´C´;
end;
Result := str;

End;
Exports
AnsiToAscii index 1;

begin
end.


Responder

Posts

20/12/2003

Maicongabriel

Esqueça a função externa...
Defina o ´CHARACTER SET´ para ´WIN1252´ e o ´COLLATE´ para ´PXW_INTL850´ na sua conexão!

:: [url]http://www.firebase.com.br/cgi-bin/firebase.cgi/dica?ID=1[/url]


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira