PEGAR QUANTIDADE DE MESES

IRENKO 26/11/2015 09:53:07
#454417
Bom dia! Pessoal, preciso de uma função que me retorne a diferenca de meses entre uma data, exemplo:

15/03/15 - 15/04/15 = 1
16/05/15 - 16/09/15 = 4

Bom a função deve seguir alguns criterios:

se data final igual a 0 então 0
se data final menor ou igual a data inicial então 0

ou seja, só vai pegar a quantidade de meses se existir essa diferença.

já dentei o DateDiff mas não consegui adapta-lo para a questão.

grato.
SINCLAIR 26/11/2015 10:24:37
#454419
Bom dia, Colega...

Faz uns 9 ou 10 anos, não lembro ao certo. Na época eu usava muito o VB6. Fiz uma função para transformar datas em diversos formatos e uma outra pra calcular diferença em anos, meses e dias entre duas datas.

Acredita que ainda tem clientes lá das antigas (duas imobiliárias e uma oficina mecânica) que ainda usam aquele sistema? Funciona, ao menos.

Seguem os códigos em anexo.

A função que calcula a diferença entre datas (anos, meses e dias) considera período matemático e período comercial.

Exemplo:

de 05/07/2015 à 05/08/2015

Comercial é 1 mês (30 dias, pelas regras de mercado e código civil)
Matemático é 1 mês e 1 dia (porque julho tem 31 dias e para cálculo de juros este dia não pode ser ignorado)

é coisa antiga. Faz tempo que não mexo. Mas funciona bem até hoje. Poderá adaptar para suas necessidades.

Tudo de bom.

ELUCIMAR 26/11/2015 10:34:59
#454420
IRENKO

Veja se é isso serve:

Dim dataInicio As Date
Dim dataFinal As Date
Dim diferencaMes As Integer

dataInicio = [Ô]16/05/15[Ô]
dataFinal = [Ô]16/09/15[Ô]
diferencaMes = IIf((dataFinal < dataInicial), 0, DateDiff([Ô]m[Ô], dataInicio, dataFinal))
IRENKO 26/11/2015 10:44:31
#454421
ZEUZEBIO3, O ARQUIVO ESTA CORROMPIDO! dÁ PARA MANDAR OUTRO?
SINCLAIR 26/11/2015 11:24:42
#454422
Colega Irenko...

Eu baixei o arquivo aqui para testar e funcionou certinho.

Mas vou mandar em formato .txt os dois arquivos então, quem sabe vai (é só copiar e colar em um .BAS)

Tudo de bom.
IRENKO 26/11/2015 12:58:58
#454423
Faltou a função TransformaEmData.
SINCLAIR 26/11/2015 14:24:16
#454424
Segue.
IRENKO 26/11/2015 14:55:35
#454425
Sua função é muito bacana, só que não estou sabendo usa-la!

coloquei uma data inicial e uma final:

dataInicio = [Ô]16/05/15[Ô]
dataFinal = [Ô]16/09/15[Ô]

MsgBox CalculaPeriodosComercialMatematico(dataInicio, dataFinal)

resultado é vazio.
SINCLAIR 26/11/2015 15:57:38
#454428
Irenko...

A função exige ano no formato AAAA

ao invés de
Citação:


dataInicio = [Ô]16/05/15[Ô]
dataFinal = [Ô]16/09/15[Ô]



Utilize assim:

Citação:

dataInicio = [Ô]16/05/2015[Ô]
dataFinal = [Ô]16/09/2015[Ô]



o resultado será

Citação:

Vencida a 4 Meses em período comercial (123 dias matemáticos)^&HFF&^0^4^0^123



Para você interessa apenas o primeiro piece (piece é algo que vem dos meus tempos de banco de dados da InterSystems Caché, ótimo banco de dados não SQL)

O segundo piece vem uma cor, que eu usava quando a conta estava vencida, a vencer ou quitada, o terceiro piece é a quantidade de anos, o quarto piece é a quantidade de meses, o quinto piece é a quantidade de dias e o sexto piece é a quantidade de dias corridos entre as datas.

Tudo de bom.

IRENKO 26/11/2015 16:37:39
#454431
Desculpe ai cara, achei essa função muito interessante, mas acho q esta faltando é parte do codigo, por exemplo:

AnoBissexto

é uma variavel ou função? Essa esta faltando.

e tambem:
MesPorExtenso

Essa sua função resolveria algums problemas meus com data pois é um pequeno sistema de imobiliaria e como vc mesmo salientou no inicio, ainda esta rodando e se esta rodando é pq atende.

SINCLAIR 26/11/2015 17:01:46
#454432
Certo...

Vou te passar as demais funções.

é que é um sistema antigo, para imobiliárias, umas funções chamam outras... enfim.

MesPorExtenso é só uma variável global, colocada em um módulo, da mesma forma que as demais funções (incluindo a função AnoBissexto)

Segue em anexo.
Página 1 de 2 [11 registro(s)]
Faça seu login para responder