|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Funcoes Advpl |
|
Versão: |
12.1.25 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
WANDERSONW
em 17/12/2019, 09:23 h
Local: SP Registro: 01/07/2015 Postagens: 166 |
Bom dia Pessoal,
Estou precisando converter uma expressão em excel em funcao advpl, sera que alguém pode me ajudar.
Função Excel
=SE(OU((SOMA(C24:W24))-(TRUNCAR(SOMA(C24:W24)/11;0)*11)=0;(SOMA(C24:W24))-(TRUNCAR(SOMA(C24:W24)/11;0)*11)=1);0;(11-((SOMA(C24:W24))-(TRUNCAR(SOMA(C24:W24)/11;0)*11))))
Esta função é para calculo do digito verificador do banco Sicoob
A valor que a planilha esta gerando na soma do C24:W24 esta idêntica a uma função que fiz para somar os valores. cPriForm quem recebe esta somatório
Agradeço se alguém puder ajudar.
|
|
|
Mensagem do
EMERSON.EN
em 18/12/2019, 13:45 h
Local: SP Registro: 20/08/2010 Postagens: 669 |
se você passar as informações separadas:
user function SicDV( coop, cliente, numero )
local n, nI, nResultado
local nSoma := 0
local aNumNumero := array(21)
aFill(aNumNumero, 0)
// preenche a cooperativa
nI := 4
for n := len(coop) to 1 step -1
aNumNumero[nI] := val(substr(coop,n,1))
nI--
next
// preenche o cliente
nI := 14
for n := len(cliente) to 1 step -1
aNumNumero[nI] := val(substr(cliente,n,1))
nI--
next
// preenche o numero
nI := 21
for n := len(numero) to 1 step -1
aNumNumero[nI] := val(substr(numero,n,1))
nI--
next
// soma os dígitos passados
aEval(aNumNumero, {|x| nSoma += x})
// efetua o cálculo para obtenção do dígito verificador
nResultado := nSoma - (int(nSoma / 11) * 11)
return if(nResultado <= 1, 0, (11 - nResultado))
sintaxe:
u_SicDV(‘3249‘, ‘0000073415‘, ‘1000251‘)
se você passar as informações concatenadas:
user function SicDV2( numero )
local n, nI, nResultado
local nSoma := 0
local aNumNumero := array(21)
// preenche todos os elementos do array com zeros
aFill(aNumNumero, 0)
// preenche o array com o número passado no parâmetro
nI := 21
for n := len(numero) to 1 step -1
aNumNumero[nI] := val(substr(numero,n,1))
nI--
next
// soma os dígitos passados
aEval(aNumNumero, {|x| nSoma += x})
// efetua o cálculo para obtenção do dígito verificador
nResultado := nSoma - (int(nSoma / 11) * 11)
return if(nResultado <= 1, 0, (11 - nResultado))
sintaxe:
u_SicDV2(‘324900000734151000251‘) |
|
|
Mensagem do
WANDERSONW
em 08/01/2020, 10:18 h
Local: SP Registro: 01/07/2015 Postagens: 166 |
Bom Dia Emerson.
Muito Obrigado pela ajuda. |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|