Função para tirar Acento

20/12/2003

0

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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar