[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