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]Intervalo entre datas

    avatar
    abronhero
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Localização : Anónimo
    Mensagens : 7
    Registrado : 24/11/2009

    [Resolvido]Intervalo entre datas Empty [Resolvido]Intervalo entre datas

    Mensagem  abronhero Ter 29 Mar 2016, 10:00 am

    Senhores;


    Como fazer com que a função DataDif, retorne dias, meses e anos em consultas separadas.

    Para melhor entendimento:

    DtInicial: 15/02/2015
    DtFinal : 29/03/2016

    Assim temos: 1 ano, 1 mês e 14 dias

    sendo que pretendo um campo para o ano, outro para o mês e outro para os dias.
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Intervalo entre datas Empty Re: [Resolvido]Intervalo entre datas

    Mensagem  FabioPaes Ter 29 Mar 2016, 10:18 am

    Veja a Mensagem Nº 05 veja o exemplo que postei la...
    https://www.maximoaccess.com/t25469-resolvidocalcular-idade-com-data-final-distinta-do-sistema
    [Resolvido]Intervalo entre datas Vo5ook

    No seu Caso tera que Juntar as datas, ja que tem separadas... Faça assim:
    No evento apos atualizar da data final, faça assim:
    Me.txtIdade.Value = AnoMesDia(Me.txtdia & "/" & Me.txtmes & "/" & Me.txtano, Me.txtDataFinal) aqui eu juntei apenas o dia/mes/ano, que juntos faram o papel da data INICIAL. Faça o Mesmo para a Data Final caso ela também seja separada.

    Agora se você quer informar apenas uma Data (a Inicial) e que seja feito o Calculo pela Data atual, substitua o Conteúdo do Modulo por este:

    Código:

    Option Compare Database

    Public Function AnoMesDia(dtData1 As Date) As String
    On Error GoTo AnoMesDia_Err

      Dim sTmp As String
      Dim nDMA As Long
      Dim NewDate As Date
      Dim sSngPlural As String
      Dim dtData2 As Date
      
    'Aqui ele assume a Data atual como sendo a Segunda Data.
      dtData2 = Now
      
      ' Bloco Ano ---------------------
      ' Calcula número inteiro de anos
      nDMA = DateDiff("yyyy", dtData1, dtData2)
      ' Se Data1+nDMA>Data2, subtrai 1 ano
      If DateAdd("yyyy", nDMA, dtData1) > dtData2 Then
        nDMA = nDMA - 1
      End If
      sSngPlural = " ano, "
      If nDMA > 1 Then sSngPlural = " anos, "
      sTmp = nDMA & sSngPlural
      
      ' Bloco Mês ---------------------
      ' Nova data de referência
      NewDate = DateAdd("yyyy", nDMA, dtData1)
      nDMA = DateDiff("m", NewDate, dtData2)
      ' Se Data1+nDMA>Data2, subtrai 1 mês
      If DateAdd("m", nDMA, NewDate) > dtData2 Then
        nDMA = nDMA - 1
      End If
      sSngPlural = " mês e "
      If nDMA > 1 Then sSngPlural = " meses e "
      sTmp = sTmp & nDMA & sSngPlural
      
      ' Bloco Dia ---------------------
      NewDate = DateAdd("m", nDMA, NewDate)
      nDMA = DateDiff("d", NewDate, dtData2)
      sSngPlural = " dia"
      If nDMA > 1 Then sSngPlural = " dias"
      sTmp = sTmp & nDMA & sSngPlural
      
      ' Valor final da função
      AnoMesDia = sTmp
      
    AnoMesDia_Fim:
      Exit Function
    AnoMesDia_Err:
      MsgBox Err.Description
      Resume AnoMesDia_Fim
    End Function
    avatar
    abronhero
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Localização : Anónimo
    Mensagens : 7
    Registrado : 24/11/2009

    [Resolvido]Intervalo entre datas Empty Intervalo entre datas

    Mensagem  abronhero Ter 29 Mar 2016, 11:06 am

    Fabio, fico muito agradecido. Mas, acho que não me fiz entender corretamente.

    Na verdade eu gostaria de ter essa mesma resposta em campos separados, ou seja um campo em que retorne apenas os anos (25), em outro campo apenas os meses (10) e noutro campo os dias (17).

    Muito agradecido.
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Intervalo entre datas Empty Re: [Resolvido]Intervalo entre datas

    Mensagem  FabioPaes Ter 29 Mar 2016, 1:08 pm

    Meu amigo, infelizmente não tenho muito conhecimento em VBA a ponto de alterar esse Modulo... Vamos aguardar e ver se Alguem tem algo do tipo!

    Porém Da pra desmembrar os dados com uma Função muito boa criada pelo JPaulo... Veja se dessa forma da pro seu Uso!
    Anexos
    [Resolvido]Intervalo entre datas AttachmentCalculaDataCompleta.zip
    Idade Completa + Separa Frases/Palavras
    Você não tem permissão para fazer download dos arquivos anexados.
    (43 Kb) Baixado 65 vez(es)
    avatar
    abronhero
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Localização : Anónimo
    Mensagens : 7
    Registrado : 24/11/2009

    [Resolvido]Intervalo entre datas Empty Intervalo entre datas

    Mensagem  abronhero Ter 29 Mar 2016, 3:04 pm

    Perfeito. Resolve tudo.

    Grato.
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3914
    Registrado : 14/08/2013

    [Resolvido]Intervalo entre datas Empty Re: [Resolvido]Intervalo entre datas

    Mensagem  FabioPaes Ter 29 Mar 2016, 3:59 pm

    Bacana, ate a próxima!

    Conteúdo patrocinado


    [Resolvido]Intervalo entre datas Empty Re: [Resolvido]Intervalo entre datas

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Dom 24 Nov 2024, 8:12 am