[firebase-br] Acentuação dentro de triggers

Sandro Souza escovadordebits em gmail.com
Ter Jul 25 02:03:11 -03 2017


Bom dia/tarde/noite Reginaldo.

Com todo o prazer, meu amigo.

Vou usar, como exemplo, o próprio utilitário isql.exe que já vem no próprio
Firebird, só lembrando que no Linux esse mesmo utilitário é o isql-fb (sem
extensão).

1 - Primeiro, vamos executar esse utilitário, em modo iterativo:

isql.exe -u usuário-do-firebird -p senha-do-usuário -s 3

O parâmetro "-u" informa o login do usuário do Firebird (sysdba ou qualquer
outro que você tenha criado no Firebird).
O parâmetro "-p" informa a senha de acesso desse usuário do Firebird (se o
usuário for o sysdba, provavelmente a senha será a masterkey).
O parâmetro "-s" informa o dialeto a ser utilizado, que nesse caso, é o 3
(o mais novo).

Ex: isql.exe -u sysdba -p masterkey -s 3
Ex: isql.exe -u fulano -p minhasenhamaluca -s 3

Uma vez dentro do isql, vamos criar a nova base de dados usando a seguinte
sintaxe:

create database "caminho-completo-da-nova-base-de-dados" page_size
tamanho-de-cada-página-de-dados default character set iso8859_1;

O parâmetro "caminho-completo-da-nova-base-de-dados" é o caminho completo
da sua nova base de dados, como por exemplo "C:\Dados\NovaBase.fdb".
Eu recomendo digitá-lo entre aspas duplas se houver algum caracter
especial, como por exemplo, um ou mais espaços em branco e/ou letras
acentuadas no caminho da nova base de dados.
O parâmetro tamanho-de-cada-página-de-dados é o tamanho, em bytes, de cada
página (bloco de dados) que comporá a nova base de dados.
Geralmente eu informo 16 Kbytes, ou seja, 16384 bytes.
Veja que o final do comando informa que o conjunto padrão de caracteres
(default character set) a ser utilizado será o iso8859-1 (iso8859_1);

Ex: create database "C:\Dados\NovaBase.fdb" page_size 16384 default
character set iso8859_1;

Para que as comparações de texto sejam caso insensitivo (ignorando se as
letras estão em maiúsculas ou em minúsculas) ou se as letras estão ou não
acentuadas, utilizamos a colação (collate) pt_br (português brasileiro).

Infelizmente, a colação deve ser informado em cada campo/coluna
alfanumérico (char, varchar e blobs do subtipo 1 (texto)).

Por exemplo, se criarmos uma tabela apenas com um código e uma descrição,
poderíamos criá-la dessa forma:

create table teste ( codigo integer not null, descricao varchar(200) not
null collate pt_br );

Note que logo após definir o campo/coluna "descricao", acrescentei "collate
pt_br" para informar como deve ser comparado o texto contido nessa coluna.

Agora inclua alguns registros alterando acentuações e com letras maiúsculas
e minúsculas.

Teste um "select * from teste order by descricao" e você verá o resultado
do uso da colação pt_br. É fantástico!

Qualquer dúvida pode perguntar. Estamos aqui para ajudar.

Espero ter ajudado mais que atrapalhado. :D


Em 22 de julho de 2017 14:00, Reginaldo Martins Costa <rmc1701e em gmail.com>
escreveu:

> Olá Sandro,
>
> Desculpe-me me intrometer no assunto, mas resolvi pegar carona, pois sou
> novo no Firebird (Criação do banco)...
>
> Você teria como postar um exemplo de como criar a base usando dialeto
> 3, charset
> iso8859_1 e collate pt_br? Qual é a sintaxe correta?
>
> Obrigado!
>
> Em 20 de julho de 2017 20:51, Sandro Souza <escovadordebits em gmail.com>
> escreveu:
>
> > Bom dia/tarde/noite Renato.
> >
> > O ideal é que você crie a base de dados no dialeto 3 (por motivos de
> > precisão numérica), com o charset iso8859_1 e use sempre o collate pt_br
> > (nos campos char, varchar e blob do subtipo 1 (memo)).
> >
> > Espero ter ajudado mais que atrapalhado.
> >
> > Em 20 de julho de 2017 16:14, centriscorps em gmail.com <
> > centriscorps em gmail.com
> > > escreveu:
> >
> > > Olá!
> > >
> > > Tenho um banco que foi migrado da versão 1.5 para a 3.0 e está com o
> > > seguinte comportamento:
> > >
> > > Ele permite que seja usado palavras com acentuação e no momento da
> > criação
> > > ele exibe normalmente, mas ao salvar e abrir mais tarde os caracteres
> > > acentuados são trocados pelo sinal de interrogação. E isto ocorre nos
> > > comentários e até campos.
> > >
> > > O que é pra ser ação, por exemplo vira a??o, confirmação, vira
> > confirma??o.
> > >
> > > O banco foi criado usando Dialeto 1, Page Size 8K, charset NONE.
> > >
> > >
> > > Renato
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://www.firebase.com.br/pes
> > > quisa_lista.html
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://www.firebase.com.br/
> > pesquisa_lista.html
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://www.firebase.com.br/
> pesquisa_lista.html
>



Mais detalhes sobre a lista de discussão lista