[firebase-br] Dígito verificador

Fabio Cardoso fabio em alcanceweb.com.br
Sáb Jun 6 16:56:46 -03 2015


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





Mais detalhes sobre a lista de discussão lista