Alberto Mota Postado Novembro 3, 2009 Denunciar Share Postado Novembro 3, 2009 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 numeros13 do nosso numero + agencia(4) e conta(7)Se colocar assim: dbo.modulo10('000000001567601401736863')Ele me retorna o correto que é 2Se colocardbo.Modulo10(SUBSTRING(BaseCobranca, 0, 24)) AS DvCobrancaretorna 8O campo BaseCobranca é a união dos 3 campos que são alfanuméricos.Se alguém puder me auxiliar fico imensamente grato. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 3, 2009 Denunciar Share Postado Novembro 3, 2009 a contagem do substring comeca no 1 não??não seria isso??dbo.Modulo10(SUBSTRING(BaseCobranca, 1, 24)) AS DvCobranca Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Novembro 4, 2009 Autor Denunciar Share Postado Novembro 4, 2009 Não, Kuroi, não alterou em nada. Continua retornando 8.Obrigado pela atenção.Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Novembro 4, 2009 Denunciar Share Postado Novembro 4, 2009 Bom dia Alberto, O que identifiquei de errado seria o mesmo postado pelo Kuroi. Ou você colocado no substring de 0 a 25 ou de 1 a 24. O que pode estar dando problema é quando você passa o valor para a varíavel que utiliza (BaseCobranca). Pode estar passando um valor diferente do número... Dá uma olhada no exemplo abaixo:create proc dbo.Modulo10 @base varchar(24) as if @base='000000001567601401736863' select 'OK' + ' - ' + @base Else select 'Erro' + ' - ' + @base dbo.modulo10 '000000001567601401736863' declare @BaseCobranca varchar(24) set @BaseCobranca = '000000001567601401736863' set @BaseCobranca = SUBSTRING(@BaseCobranca, 0, 25) exec dbo.Modulo10 @BaseCobranca Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Novembro 4, 2009 Autor Denunciar Share Postado Novembro 4, 2009 Fulvio, voce tem razão. O retorno foi o esperado (2). Agradeço ao Kuroi também voces estavam certos.Criei uma nova função ModuloCob colocando 24 como base. Fico imensamente grato a ambos.Amanhã deve vir a resposta da analise de 3 boletos.Acredito que o DV Geral se der problemas, farei as devidas adptaçõ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, DvCedenteFROM dbo.QryBoletosMovR3Um abraço. Sucesso! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Alberto Mota
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.
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.