Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

João Fernandes dos Santos

[Resolvido] Calculo de dígito verificador

Recommended Posts

Pessoal, bom dia.

Estou tentando realizar esse cálculo no SQL:

 

*******************************************************

----CALCULO NA MATEMATICA -----

NUMERO DE ENTRADA: 1 2 3 4

SEQUÊNCIA DE MULTIPLICADORES: 5 4 3 2

RESULTADO: 5+8+9+8 = 30

*******************************************************

 

 

só que minha função abaixo esta me retornando 17, teria que me retornar 30, não estou conseguindo

achar onde estou errando, alguém poderia me dar uma luz?

 

 


--**** FUNÇÃO PARA REALIZAR O CÓDIGO ACIMA ****
 -- NUMERO DE ENTRADA --
DECLARE @NovoCodUsual NVARCHAR(50)
SET @NovoCodUsual = 1234

--- PEGO O TAMANHO DO NÚMERO DE ENTRADA---
DECLARE @TamanhoDoCodigoSemDigito INTEGER
SET @TamanhoDoCodigoSemDigito  = LEN(@NovoCodUsual)

-- CRIO UMA VARIÁVEL SOMATÓRIO ---
DECLARE @Soma INTEGER
SET @Soma = 0

--CRIO UM MULTIPLICADOR ---
DECLARE @Multiplicador INTEGER
SET @Multiplicador = 2

--CRIO UMA VARIÁVEL PARA FAZER O CALULO ATÉ O TAMANHO DO NUMERO DE ENTRADA --
DECLARE @i integer
SET @i = 1



--REALIZO O WHILE
WHILE @i < @TamanhoDoCodigoSemDigito 
  BEGIN
    SET @Soma = @Soma + (LEFT(RIGHT(@NovoCodUsual, @i),1) * @Multiplicador)
    SET @TamanhoDoCodigoSemDigito = @TamanhoDoCodigoSemDigito - 1
    SET @Multiplicador = @Multiplicador + 1
    SET @i = @i + 1
  END

  SELECT @Soma 

Compartilhar este post


Link para o post
Compartilhar em outros sites

vendo por cima, parece que o problema esta no seu loop, pois esta utilizado a variável @TamanhoDoCodigoSemDigito para controla-lo e dentro esta decrementando o valor dela em -1, crie uma variável auxiliar para utilizar dentro do loop

 

e tb. um erro de lógica no while, pois tem que acrescentar mais 1 para o loop ser executado 4 vezes

 WHILE @i < @TamanhoDoCodigoSemDigito + 1 

talvez seja só isso, ou talvez tenha outros ajustes, ou ainda pode ter outras soluções..

 

boa sorte!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, consegui resolver. O Erro estava na variável @TamanhoDoCodigoSemDigito como disse o eriva, mais também tive que mudar a condição do while acrescentando o <= vejam como ficou meu While:

 


WHILE @i <= @TamanhoDoCodigoSemDigito 
  BEGIN
    SET @Soma = @Soma + (LEFT(RIGHT(@NovoCodUsual, @i),1) * @Multiplicador)
    SET @Multiplicador = @Multiplicador + 1
    SET @i = @i + 1
  END

SELECT @Soma 

 

 

Valeu eriva.

 

Podem encerrar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.