Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom Pessoal estou quebrando a cabeça e não consigo a solução para calcular o digito de
cobrança do Banco Real. Uso o sql server express 2005.
Ele é composto por 24 numeros
13 do nosso numero + agencia(4) e conta(7)
Se colocar assim:
dbo.modulo10('000000001567601401736863')
Ele me retorna o correto que é 2
Se colocar
dbo.Modulo10(SUBSTRING(BaseCobranca, 0, 24)) AS DvCobranca
retorna 8
O campo BaseCobranca é a união dos 3 campos que são alfanuméricos.
Se alguém puder me auxiliar fico imensamente grato.
Junior, agradeço a atenção
Segue a consulta. Um abraço.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].Modulo10)
RETURNS CHAR(1)
AS
BEGIN
declare
@max smallint,
@contador smallint,
@peso varchar(24),
@resto smallint,
@valor smallint,
@soma int,
@retorno int
select @peso = '121212121212121212121212'
select @max = datalength(@numero)
select @peso = right(@peso, @max)
set @contador = @max+1
set @soma = 0
loop:
set @contador = @contador-1
set @valor = isnull((ascii(substring(@peso, @contador, 1))-48) * select @resto= sum(@soma)%10
select @retorno = case @resto when 0 then 0 else 10-@resto end
return(Convert(char(1), @retorno))alberto, passe alguns resultados deste select
SUBSTRING(BaseCobranca, 0, 24)
Abçs
Junior, o pessoal do ScriptBrasil me ajudou a resolver.
Bem como voce também indicou para ver o select do substring
Criei uma nova função ModuloCob colocando 24 como base. Fico imensamente grato a você pela ajuda.
Amanhã deve vir a resposta da analise de 3 boletos.
Acredito que o DV Geral se der problemas, será da mesma forma e farei as devidas adaptações.
Segue o select completo:
SELECT associado, baseseq, BaseCobranca, dbo.ModuloCob(SUBSTRING(BaseCobranca, 0, 25)) AS DvCobranca, DVGeral, CodigoDebarras,
'3569' + SUBSTRING(CodigoDebarras, 20, 5) AS BCampo1, dbo.Modulo10('3569' + SUBSTRING(CodigoDebarras, 20, 5)) AS DVCampo1,
SUBSTRING(CodigoDebarras, 25, 10) AS BCampo2, dbo.Modulo10(SUBSTRING(CodigoDebarras, 25, 10)) AS DVCampo2, SUBSTRING(CodigoDebarras,
35, 10) AS BCampo3, dbo.Modulo10(SUBSTRING(CodigoDebarras, 35, 10)) AS DVCampo3, exercicio, dtvcto, dtproc, vr, seq, Codigo, Carteira, Agencia,
Cedente, DvCedente
FROM dbo.QryBoletosMovR3
Um abraço.
Fico feliz em saber que resolveu o seu problema e obrigado pelo feedback....
eu imaginei que o problema poderia ser no subselect....
Abçs e boa sorte
Alberto, kal eh a regra desta funcao? tem como passar?
Abçs