MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Adequação calculo período

    avatar
    socgyn
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 118
    Registrado : 01/05/2013

    [Resolvido]Adequação calculo período Empty [Resolvido]Adequação calculo período

    Mensagem  socgyn 23/4/2014, 01:34

    Estou tentando efetuar um cálculo entre datas (Período Inicial, que está com o nome Dtini) e Período final, que está com o nome DtFin), já segui vários exemplos para calcular em ano, mês e dia e não obtive êxito. Há alguns exemplos que ao clicar em um botão aparece o resultado em uma caixa de texto, só que quero automaticamente, tipo ao colocar a data inicial e a final em uma terceira caixa apareça o resultado em anos, meses e dias.

    Vi um código seu que teria que criar um módulo e uma caixa de texto com o nome txtDataResult. Criei o módulo e adequei os nomes dos campos, criei a cx de texto citada, coloquei no load do formulário:

    Me.txtDataResult.SetFocus
    txtDataResult = CalculaPeriodo(Dtini, DtFin)

    na hora que carrego o formulário abre o vb com a crítica:

    erro de compilação
    Era esperada variável ou procedimento, não módulo

    Clicando em ok da mensagem é focado o campo calculaPeriodo no vb

    Private Sub Form_Load()
    Me.txtDataResult.SetFocus
    txtDataResult = CalculaPeriodo(Dtini, DtFin)
    End Sub

    o módulo está assim:

    Option Compare Database
    Option Explicit
    Private Function CalculaPeriodo(Dtini As Date, DtFin As Date)
    If Dtini > DtFin Then
    MsgBox "Data Inicial não pode ser maior que Data actual!", vbExclamation, "Erro"
    Exit Function
    End If

    Dim Anos, meses, dias
    Dim iAnos As Double, iMeses As Double, Intervalo As Double

    Intervalo = DtFin - Dtini

    ' Um ano tem exatamente 365,2425 dias, ou
    ' 365 dias, 5 horas, 49 minutos e 12 segundos.
    ' Ou aproximadamente 365,25 dias.
    iAnos = Intervalo / 365.2425
    Anos = Int(iAnos)
    iMeses = (iAnos - Anos) * 12
    meses = Int(iMeses)

    dias = DateDiff("d", DateSerial(DatePart("yyyy", Dtini) + Anos, DatePart("m", Dtini) + meses, Day(Dtini)), DtFin)

    Select Case dias
    Case -1
    dias = 30
    meses = meses - 1
    Case -2
    dias = 29
    meses = meses - 1
    Case 30 Or 31
    dias = 0
    meses = meses + 1
    End Select

    If meses = 12 Then
    meses = 0
    Anos = Anos + 1
    End If

    Fim:
    If Anos > 1 Then
    Anos = Anos & " anos "
    Else
    Anos = Anos & " ano "
    End If

    If meses > 1 Then
    meses = meses & " meses "
    Else
    meses = meses & " mês "
    End If

    If dias > 1 Then
    dias = dias & " dias"
    Else
    dias = dias & " dia"
    End If

    CalculaPeriodo = Anos & meses & dias
    End Function
    Fernando Bueno
    Fernando Bueno
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2115
    Registrado : 13/04/2012

    [Resolvido]Adequação calculo período Empty Re: [Resolvido]Adequação calculo período

    Mensagem  Fernando Bueno 23/4/2014, 04:06

    Boa noite Sandro, veja esse topico...

    http://maximoaccess.forumeiros.com/t17885-calculando-tempo-em-anos-meses-e-dias-entre-duas-datas


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Resolvido]Adequação calculo período 16rzeq
    avatar
    socgyn
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 118
    Registrado : 01/05/2013

    [Resolvido]Adequação calculo período Empty Adequação calculo período

    Mensagem  socgyn 23/4/2014, 23:25

    Grato pelo apoio, já havia visto esse código tentei adequar mas não consegui. Darei por encerrado consegui uma outra forma, apesar de puxar só os meses.
    Vou colocar abaixo caso alguém precise.

    ao receber foco na caixa de texto não acoplada coloquei

    Private Sub dbldiff_GotFocus()
    dbldiff = DateDiff("m", Dtini, DtFin)
    End Sub

    e no após atualizar do campo DtFin coloquei

    Private Sub DtFin_AfterUpdate()
    If Dtini > DtFin Then
    MsgBox "A data final não pode ser menor que a inicial, Digite novamente!.", vbInformation, "Guinchos Chaves"

    Cancel = True
    Me.DtFin.Undo
    Me.Dtini.SetFocus
    Else
    dbldiff = DateDiff("m", Dtini, DtFin)
    End If
    End Sub

    Até mais
    Sandro
    Goiânia
    Fernando Bueno
    Fernando Bueno
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2115
    Registrado : 13/04/2012

    [Resolvido]Adequação calculo período Empty Re: [Resolvido]Adequação calculo período

    Mensagem  Fernando Bueno 23/4/2014, 23:38

    Ok, agradeço o retorno em nome do forúm.


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Resolvido]Adequação calculo período 16rzeq

    Conteúdo patrocinado


    [Resolvido]Adequação calculo período Empty Re: [Resolvido]Adequação calculo período

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 01:45