[ATENÇÃO]
Este post foi atualizado e eu criei um novo mais bem explicado, por favor, acesse-o neste link.
https://www.maximoaccess.com/t25595-funcao-soma-nao-funciona
Grato.
__________________________________________________________
Olá Gente,
Bom carnaval a todos \o/
Bom, estou em uma roça, e aqui não tem internet, tenho que subir um morro para postar, então vou demorar um pouco a responder ok?
Estou recebendo um erro ao tentar somar as parcelas em atraso em um bd access.
Se alguém puder dar uma olhada e dizer o que pode estar dando este erro eu agradeço muito.
Alguma considerações:
Podem baixar o sistema neste link:
https://mega.nz/#!5RMV0aRZ!9UnMcpwWBokIpxjVG4a95KKkKuIWBA-bt7fglcXooVE
A Função deve ser colada dentro do campo "+Atrasadas"
Eu estava usando este código abaixo:
http://pastebin.com/agH3YHN4
¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
=Soma(
SeImed( Data() > [Prox_pagamento];
[Valor_parcela];
0
)
*
SeImed( DifData("m";[Prox_pagamento];Data() ) <= 0;
1;
SeImed( Format(Data();"dd") <= Format([Prox_pagamento];"dd");
DifData("m";[Prox_pagamento];Data());
(DifData("m";[Prox_pagamento];Data())+1)
)
)
)
¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
Porém ele continuava calculando os meses mesmo após ultrapassar a data do ultimo pagamento, pois ele usava a diferença ente a ultima parcela a pagar e a data a data atual.
Para corrigir, adicionei algumas linhas para verificar também se a data atual é superior a data definida para o ultimo pagamento, se for, o calculo será feito usando a diferença entre a ultima parcela sem pagar e a data para o ultimo pagamento.
Mas não dá certo, o calculo não funciona.
Quando eu pego as funções isoladamente e coloco no campo "atrasadas" é exibido e calculado normalmente, porém quando jogo todo o código dá erro.
Vejam abaixo o código que está apresentando o erro:
http://pastebin.com/qxd4N9pu
¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
Soma(
// Verifica se a data atual ja passou da data do proximo pagamento.
// Se sim retorna o valor da parcela para ser multiplicado pela quantidade de meses em atraso.
// Se não retorna 0 e a parcela não é calculada.
SeImed( Data() > [Prox_pagamento]; [Valor_parcela]; 0 ) *
// Novamente Verifica se a data atual ja passou da data do proximo pagamento.
SeImed( Data() > [Prox_pagamento];
// SE SIM Verifica se a data atual ja passou da data do ultimo pagamento.
SeImed( Data() > [Data_ultimo_pagamento];
// SE SIM Verifica se o dia atual ja passou do dia do ultimo pagamento
SeImed( Format( Data();"dd" ) > Format( [Data_ultimo_pagamento];"dd" );
// SE SIM Calcula diferença de meses entre a data do proximo pagamento até a data do ULTIMO PAGAMENTO INCLUINDO o mes atual.
DifData("m";[Prox_pagamento];[Data_ultimo_pagamento]+1);
// SE NÃO Calcula diferença de meses entre a data do proximo pagamento até a data do ULTIMO PAGAMENTO EXCLUINDO o mes atual.
DifData("m";[Prox_pagamento];[Data_ultimo_pagamento])
);
// SE NÃO Verifica se o dia atual ja passou do dia do proximo pagamento.
SeImed( Format( Data();"dd" ) > Format( [Prox_pagamento];"dd" );
// SE SIM Calcula diferença de meses entre a data do proximo pagamento até a data ATUAL INCLUINDO o mes atual.
DifData("m";[Prox_pagamento];Data()+1);
//SE NÃO Calcula diferença de meses entre a data do proximo pagamento até a data ATUAL EXCLUINDO o mes atual.
DifData("m";[Prox_pagamento];Data())
)
);
// SE NÃO Retorna ZERO
0
)
)
---------------------------------------
Obrigado a quem puder ajudar
Este post foi atualizado e eu criei um novo mais bem explicado, por favor, acesse-o neste link.
https://www.maximoaccess.com/t25595-funcao-soma-nao-funciona
Grato.
__________________________________________________________
Olá Gente,
Bom carnaval a todos \o/
Bom, estou em uma roça, e aqui não tem internet, tenho que subir um morro para postar, então vou demorar um pouco a responder ok?
Estou recebendo um erro ao tentar somar as parcelas em atraso em um bd access.
Se alguém puder dar uma olhada e dizer o que pode estar dando este erro eu agradeço muito.
Alguma considerações:
Podem baixar o sistema neste link:
https://mega.nz/#!5RMV0aRZ!9UnMcpwWBokIpxjVG4a95KKkKuIWBA-bt7fglcXooVE
A Função deve ser colada dentro do campo "+Atrasadas"
Eu estava usando este código abaixo:
http://pastebin.com/agH3YHN4
¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
=Soma(
SeImed( Data() > [Prox_pagamento];
[Valor_parcela];
0
)
*
SeImed( DifData("m";[Prox_pagamento];Data() ) <= 0;
1;
SeImed( Format(Data();"dd") <= Format([Prox_pagamento];"dd");
DifData("m";[Prox_pagamento];Data());
(DifData("m";[Prox_pagamento];Data())+1)
)
)
)
¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
Porém ele continuava calculando os meses mesmo após ultrapassar a data do ultimo pagamento, pois ele usava a diferença ente a ultima parcela a pagar e a data a data atual.
Para corrigir, adicionei algumas linhas para verificar também se a data atual é superior a data definida para o ultimo pagamento, se for, o calculo será feito usando a diferença entre a ultima parcela sem pagar e a data para o ultimo pagamento.
Mas não dá certo, o calculo não funciona.
Quando eu pego as funções isoladamente e coloco no campo "atrasadas" é exibido e calculado normalmente, porém quando jogo todo o código dá erro.
Vejam abaixo o código que está apresentando o erro:
http://pastebin.com/qxd4N9pu
¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬¬
Soma(
// Verifica se a data atual ja passou da data do proximo pagamento.
// Se sim retorna o valor da parcela para ser multiplicado pela quantidade de meses em atraso.
// Se não retorna 0 e a parcela não é calculada.
SeImed( Data() > [Prox_pagamento]; [Valor_parcela]; 0 ) *
// Novamente Verifica se a data atual ja passou da data do proximo pagamento.
SeImed( Data() > [Prox_pagamento];
// SE SIM Verifica se a data atual ja passou da data do ultimo pagamento.
SeImed( Data() > [Data_ultimo_pagamento];
// SE SIM Verifica se o dia atual ja passou do dia do ultimo pagamento
SeImed( Format( Data();"dd" ) > Format( [Data_ultimo_pagamento];"dd" );
// SE SIM Calcula diferença de meses entre a data do proximo pagamento até a data do ULTIMO PAGAMENTO INCLUINDO o mes atual.
DifData("m";[Prox_pagamento];[Data_ultimo_pagamento]+1);
// SE NÃO Calcula diferença de meses entre a data do proximo pagamento até a data do ULTIMO PAGAMENTO EXCLUINDO o mes atual.
DifData("m";[Prox_pagamento];[Data_ultimo_pagamento])
);
// SE NÃO Verifica se o dia atual ja passou do dia do proximo pagamento.
SeImed( Format( Data();"dd" ) > Format( [Prox_pagamento];"dd" );
// SE SIM Calcula diferença de meses entre a data do proximo pagamento até a data ATUAL INCLUINDO o mes atual.
DifData("m";[Prox_pagamento];Data()+1);
//SE NÃO Calcula diferença de meses entre a data do proximo pagamento até a data ATUAL EXCLUINDO o mes atual.
DifData("m";[Prox_pagamento];Data())
)
);
// SE NÃO Retorna ZERO
0
)
)
---------------------------------------
Obrigado a quem puder ajudar
Última edição por lgdelai em 15/2/2016, 00:44, editado 3 vez(es)