Estou desenvolvendo uma aplicação com Delphi 7, ClientDataSet e DBExpress com Firebird 1.5 e, de um momento para o outro, começaram a aparecer as seguintes mensagens de erro:
1) Project Teste.exe raised exception class EDatabaseError with message 'arithmetic exception, numeric overflow, or string truncation Cannot transliterate character between character sets '. Process stoped. - Esta mensagem aparece quando digíto alguma palavra com acento, mesmo estando utilizando WIN1252 na criação do banco de dados e no SQLConnection. Na tentativa de isolar o problema, fiz uma nova aplicação utilizando o mesmo banco de dados e o erro não ocorreu.
2) Nesta mesma aplicação, incialmente eu utilizava em SQLQuery.SQL=SELECT * FROM <TABELA>. Como esta tabela possui muitos registros, mudei para SELECT * FROM <TABELA> WHERE NUMERO = :NUMERO, ajustei SQLQuery.PARAMS e, no evento OnCreate do formulario fiz assim:
Pergunta
coisvaes
Olá, Pessoal,
Estou desenvolvendo uma aplicação com Delphi 7, ClientDataSet e DBExpress com Firebird 1.5 e, de um momento para o outro, começaram a aparecer as seguintes mensagens de erro:
1) Project Teste.exe raised exception class EDatabaseError with message 'arithmetic exception, numeric overflow, or string truncation Cannot transliterate character between character sets '. Process stoped. - Esta mensagem aparece quando digíto alguma palavra com acento, mesmo estando utilizando WIN1252 na criação do banco de dados e no SQLConnection. Na tentativa de isolar o problema, fiz uma nova aplicação utilizando o mesmo banco de dados e o erro não ocorreu.
2) Nesta mesma aplicação, incialmente eu utilizava em SQLQuery.SQL=SELECT * FROM <TABELA>. Como esta tabela possui muitos registros, mudei para SELECT * FROM <TABELA> WHERE NUMERO = :NUMERO, ajustei SQLQuery.PARAMS e, no evento OnCreate do formulario fiz assim:
procedure TfrmTeste.FormCreate(Sender: TObject);
begin
dmTeste := TdmTeste.Create(Self);
dmTeste.ClientDataSetTeste.FetchParams;
dmTeste.ClientDataSetTeste.Params.ParamByName('NUMERO').Value := NULL;
{
ou dmTeste.SQLQuery.Params.ParamByName('NUMERO').Value := NULL;
}
dmTeste.ClientDataSetTeste.Open;
end;
Mas, depois desta alteração, aparece a mensagem de erro ‘(…) raised exception class EAccessViolation with message
'Access violation at address 004023D2 in module… ' em:
dmTeste.ClientDataSetTeste.Open;
Fiz o mesmo procedimento em outra aplicação e, também não deu erro!
Alguém sabe como resolver isso sem que seja necessário refazer a aplicação e, principalmente, como evitar que estes erros aconteçam?
Desde já, muitíssimo obrigado.
Francisco Rodrigues
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.