[firebase-br] funcoes
Junior
junior em conectcor.com.br
Ter Jan 3 14:35:08 -03 2006
fiz uma pra calcular o digito do ean13
DECLARE VARIABLE CODIGO VARCHAR(12);
DECLARE VARIABLE NUMPAR INTEGER;
DECLARE VARIABLE NUMIMPAR INTEGER;
DECLARE VARIABLE CONT INTEGER;
DECLARE VARIABLE MULT INTEGER;
BEGIN
IF (NEW.PRO_BARRAS IS NULL) THEN
BEGIN
IF (NEW.PRO_CODIGO < 10) THEN
CODIGO = '00000000000'||NEW.PRO_CODIGO;
ELSE
IF (NEW.PRO_CODIGO < 100) THEN
CODIGO = '0000000000'||NEW.PRO_CODIGO;
ELSE
IF (NEW.PRO_CODIGO < 1000) THEN
CODIGO = '000000000'||NEW.PRO_CODIGO;
ELSE
IF (NEW.PRO_CODIGO < 10000) THEN
CODIGO = '00000000'||NEW.PRO_CODIGO;
ELSE
CODIGO = '0000000'||NEW.PRO_CODIGO;
NUMIMPAR=0;
NUMPAR=0;
NUMIMPAR=(CAST(SUBSTRING(:CODIGO FROM 1 FOR 1) AS INTEGER)*1) +
(CAST(SUBSTRING(:CODIGO FROM 3 FOR 1) AS
INTEGER)*1)+
(CAST(SUBSTRING(:CODIGO FROM 5 FOR 1) AS
INTEGER)*1)+
(CAST(SUBSTRING(:CODIGO FROM 7 FOR 1) AS
INTEGER)*1)+
(CAST(SUBSTRING(:CODIGO FROM 9 FOR 1) AS
INTEGER)*1)+
(CAST(SUBSTRING(:CODIGO FROM 11 FOR 1) AS
INTEGER)*1);
NUMPAR=(CAST(SUBSTRING(CODIGO FROM 2 FOR 1) AS INTEGER)*3)+
(CAST(SUBSTRING(CODIGO FROM 4 FOR 1) AS INTEGER)*3)+
(CAST(SUBSTRING(CODIGO FROM 6 FOR 1) AS INTEGER)*3)+
(CAST(SUBSTRING(CODIGO FROM 8 FOR 1) AS INTEGER)*3)+
(CAST(SUBSTRING(CODIGO FROM 10 FOR 1) AS INTEGER)*3)+
(CAST(SUBSTRING(CODIGO FROM 12 FOR 1) AS INTEGER)*3);
MULT=0;
WHILE (MULT < (NUMPAR+NUMIMPAR)) DO
MULT=MULT+10;
CONT = MULT-(NUMPAR+NUMIMPAR);
NEW.PRO_BARRAS=:CODIGO||:CONT;
END
END;
----- Original Message -----
From: "samuel ferreira" <samuel.peres.ferreira em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, January 03, 2006 2:26 PM
Subject: Re: [firebase-br] funcoes
blz
quanto ao case, é tranquilo. mas acho q na realidade, eu deveria ter falado
o q eu queria, q talvez tivesse uma forma mais simples. eu preciso calcular
um digito verifcador. existe uma formula propria e tenho q pegar o numero,
transformar em 9 posicoes, calcular as 8 primeiras, cada digito multiplicado
por uma constante, pegar o total, dividir por um outro numero e comparar com
a nona posicao.
depois tenho q agrupar esse numero de 8 posicoes sem o digito e montar com
outro pra gerar outro digito. (isso nao e ideia minha), simplesmente to
fazendo. so q agora nao to conseguindo usar o substring, com uma variavel
depois do from.
se alguem tiver alguma ideia, to aceitando
obrigado.
obs: junior, obrigado pela forca
samuel
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista