[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