Array
(
)

Problemas com acentos no Firebird

Joule
   - 29 nov 2005

Olá pessoal, tenho uma aplicação no delphi 7 e com firebird (dbexpress), criei um cadastro e tava funcionando tudo bem, em um dia desse quando tentei cadastrar uma pessoa que tinha um acento no nome acorreu um erro e não deixava eu salvar o registro... alguém já possou por isso ou alguém teria alguma dica?


Jairroberto
   - 29 nov 2005

Olá, joule!

Você deve utilizar o Charset adequado no componente de conexão com o banco de dados Firebird. Para o Brasil o ideal é ´WIN1252´. O problema também pode estar relacionado ao tamanho do nome que você está informando. Se ele for maior do que o tamanho do campo correspondente no banco de dados ele não será aceito por ´string truncation´.


Um abraço,
Jair


Joule
   - 30 nov 2005

olá blz, pessoal... eu já estou usando o WIN1252, e o tipo do meu campo é varchar(30), se eu for digitar uma palavra como ´joão´ que tenha acento ai aparece esse erro:

Project Teste.exe raised exception class EDatabaseError with message
´arithmetic exception, numeric overflow, or string truncation
Cannot transliterate character between character sets
´. Process stopped.

[/img][/url]


Edilcimar
   - 30 nov 2005

charset win1252 e collate iso8859_1


Joule
   - 30 nov 2005

Não o collate também era WIN1252... estou usando o IBExpert e nele só tem essas opções para collate: ´PXW_INTL, PXW_INTL850, PXW_NORDAN4, PXW_SPAN, PXW_SWEDFIN, WIN1252´. Qual seria a alternativa?


Jairroberto
   - 30 nov 2005

Olá, joule!

O CharSet precisa estar definido no campo do banco de dados que receberá caracteres acentuados, incluindo o ´CHARSET WIN1252´ na cláusula de criação da tabela/campo, ou usando ´SET NAMES WIN1252;´ no início do script de criação da tabela/campo, E TAMBÉM nos parâmetros (propriedade Params) do SQLConnection utilizado para fazer a conexão com o banco. O item é ´ServerCharSet=WIN1252´.

Quanto ao COLLATE, tanto faz. Ele só influencia na ordenação dos registros retornados por um SELECT com ORDER BY pelo campo que possui COLLATE. O melhor, na minha opinião, para o nosso idioma é o ´PXW_INTL850´.


Um abraço,
Jair