[firebase-br] Dígito verificador

Sandro Marcelo Pascoal sandropascoal em gmail.com
Seg Jun 8 09:24:53 -03 2015


Fábio.
Vejo 2 saídas para isso.
1) Vc cria um trigger para executar o código que calcula do DV 
(recomendo essa).
2) Vc cria uma dll com a função de cálculo do DV e usar ela no BD.

Com relação a usar o generator dentro do trigger/procedure, é simples. 
Vc usaria CODIGO = GEN_ID(NOME_DO_GEN, 1) e depois faria o cálculo do DV 
usando a variável CODIGO.

Não tenho certeza se é isso que você precisa. Talvez não tenha entendido.

Sandro

On 06/06/2015 16:56, Fabio Cardoso wrote:
> Amigos,
>
> Estou criando uma tabela de clientes com o gerador automático de 
> código para o campo CLIENTE_ID. O meu caso é que, em vez de usar o 
> gerador padrão do firebird, onde ele gera o código sequencial (1, 2, 
> 3,.....), eu quero gerar esse código sequencial adicionando um dígito 
> verificador para ele.
>
> Assim, quando eu cadastrar três clientes, em vez de ficar assim
> CLIENTE_ID    -     CLIENTE_NOME
> 1    FABIO
> 2     JOÃO
> 3     CARLOS
>
> Ficaria assim:
> 19    FABIO
> 27    JOAO
> 35    CARLOS
>
> Onde, o código é composto do 1, que é o sequencial + 9, que é o dígito 
> verificador desse 1. Eu baixei um código que calcula esse dígito 
> verificador no Delphi, mas gostaria de fazer um generator do firebird 
> pra realizar essa tarefa:
>
> function DvModulo11 ( str: String ): Char;
> var soma, fator, i: Integer;
>
>   function chInt ( ch: Char ): ShortInt;
>   begin
>     Result := Ord ( ch ) - Ord ( '0' );
>   end;
>
>   function intCh ( int: ShortInt ): Char;
>   begin
>     Result := Chr ( int + Ord ( '0' ) );
>   end;
>
> begin
>   soma := 0;
>   fator := 2;
>   for i := Length ( str ) downto 1 do
>   begin
>     soma := soma + chInt ( str[i] ) * fator;
>     Inc ( fator );
>     if fator = 10 then
>     fator := 2;
>   end;
>   soma := 11 - ( soma mod 11 );
>   if soma >= 10 then
>     Result := '1'
>   else
>   Result := intCh ( soma );
> end;
>
>
> um abraço,
> Fabio.
>
> ---
> Este email foi escaneado pelo Avast antivírus.
> https://www.avast.com/antivirus
>
>
> ______________________________________________
> 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://firebase.com.br/pesquisa
>


-- 

*Sandro Marcelo Pascoal*





Mais detalhes sobre a lista de discussão lista