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


4 participantes

    [Resolvido]Calculo entre datas direto no relatório

    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 18/6/2011, 15:52

    Olá pessoal,

    Gostaria de saber se é possivel realizar calculos entre datas em um relatorio direto (Access 2007).
    Meu problema é o seguinte:

    O relatorio consiste na relação de func. demitidos em um determinado periodo, até então funciona normalmente baseado na consulta que criei., mas preciso agora de um campo que me diga quanto tempo o funcionário tinha de casa (Mas não em dias).

    Ex.: Data de Admissão: 08.09.2010 / Data de Demissão: 03.01.2011 - tempo de casa: 117 dias - desta forma eu consegiu montar, o que gostaria é que ficasse desta forma:
    Data de Admissão: 08.09.2010 / Data de Demissão: 03.01.2011 - tempo de casa 03 meses e 26 dias.

    Será que tem como fazer isso em um caixa não acoplada direto no relatório???

    Se alguém puder me ajudar eu agradeço,

    Atenciosamente

    Pri
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  criquio 18/6/2011, 16:20

    Olá Priscila! Tem um tópico resolvido que trata desse assunto. Dê uma pesquisada por data. Se não encontrares, depois volto com mais tempo para ver isso, caso algum colega não se adiante a mim, ok?


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Convidado 18/6/2011, 16:48

    POde usar o DiffDate em um campo não acoplado na consulta... e ler esse campo no Relatorio


    DateDiff ("yyyy", #15/10/1998#, #22/11/2003#) Retorna Anos
    DateDiff ("m", #15/10/2003#, #22/11/2003#) Retorna Meses
    DateDiff ("d", #15/10/2003#, #22/11/2003#) Retorna Dias

    ou no Relatorio

    = DateDiff ("d", Now (), [Tabela]. [Campo]) -10
    Criterio que pode usar para aviso de tempo restante
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  criquio 18/6/2011, 18:44

    Uma forma de se fazer isso, supondo que o campo da data se chama txtData:

    =SeImed(Dia([txtData])>Dia(Data());DifData("m";[txtData];Data())-1 & " meses e " & 30-Dia([txtData])+Dia(Data()) & " dias.";SeImed(Dia([txtData])=Dia(Data());DifData("m";[txtData];Data()) & " meses.";DifData("m";[txtData];Data()) & " meses e " & Dia(Data())-Dia([txtData]) & " dias."))


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 20/6/2011, 12:57

    Pessoal, obrigada pela ajuda, só não entendi direito como fazer...

    O que tenho é o seguinte um relatório chamado funcionarios demitidos., os dados são de uma consulta criada chamada arquivo morto... e tem os seguintes campos

    Nome do Funcionários
    Cargo
    Salário
    Data de Admissão
    Data de Demissão.
    E um código VBA que me fornece os dados solicitados por periodos..


    No caso eu teria que criar um outro campo para realizar o calculo na consulta???, em especial no DateDiff seriam três campos a parte? (Anos, meses e dias)...., no exemplo que o Maximo me mandou tem periodos especificos pode ser utilizado qualquer data??

    Já em relação ao relatorio direto, não entendi a expressão:

    =datediff("d", Now, (), [tabela].[campo])-10
    "D" - dias
    Now - Agora
    () - ?
    [tabela].[campo] - são os da consulta Arquivo Morto - ou da tabela de funcionários...

    Desculpe-me por tantas perguntas é que estou começando a usar o Access agora.

    Obrigada

    avatar
    Convidado
    Convidado


    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Convidado 20/6/2011, 13:08

    Tente a solução do AMigo Criquio, creio ser a mais apropriada....Aplique a expressão em uma caixa não acoplada no relatório substituindo o txtData pela data de Admissão...

    =SeImed(Dia([txtData])>Dia(Data());DifData("m";[txtData];Data())-1 & " meses e " & 30-Dia([txtData])+Dia(Data()) & " dias.";SeImed(Dia([txtData])=Dia(Data());DifData("m";[txtData];Data()) & " meses.";DifData("m";[txtData];Data()) & " meses e " & Dia(Data())-Dia([txtData]) & " dias."))

    Creio que será assim correto amigo Criquio??

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  criquio 20/6/2011, 13:35

    Sim, acredito que assim funcione. Nesse critério, estamos fornecendo três condições para os cálculos: o primeiro é para o caso do dia atual ser menor que o dia de entrada, aonde deverá calcular o número de meses menos um, pois ainda não foi completado o mês todo. Nesse caso, será considerado o total de meses entre o mês de entrada e o mês corrente menos um, acrescentando os dias entre o dia que completou mês e o dia atual. A segunda condição, é para o caso do dia atual ser igual ao dia de entrada, quando temos um número de meses completo. A última condição é para o caso do dia atual ser maior que o dia de entrada, quando então temos um mês completo mais os dias que passou do dia de entrada.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  criquio 20/6/2011, 13:37

    Dividindo as três condições, fica assim:

    =SeImed(Dia([txtData])>Dia(Data());DifData("m";[txtData];Data())-1 & " meses e " & 30-Dia([txtData])+Dia(Data()) & " dias.";SeImed(Dia([txtData])=Dia(Data());DifData("m";[txtData];Data()) & " meses.";DifData("m";[txtData];Data()) & " meses e " & Dia(Data())-Dia([txtData]) & " dias."))


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Convidado 20/6/2011, 13:48

    Testei aqui...

    Perfect!
    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 20/6/2011, 15:44

    Pessoal, Muito obrigada pela ajuda

    Testei agora só que não está calculando corretamente:

    Ex.:
    Data de Admissão: 14.01.2008
    Data de Demissão: 14.01.2011
    Tempo de Casa: 02 anos 11 meses e 30 dias - calculo efetuado no Excel com a função SE e Data Dif

    O mesmo acima; o resultado no access foi de 41 meses e 5 dias; a função está usando o calculo a partir da Data de Admissão até a data atual 20.06.2011.

    Quando o que quero seria o tempo de casa do funcionário (Data de Admissão - Data de Demissã); em dias consegui fazer a conta é simples, mas para poder usar esse relatório, tenho que acrescentar o tempo de casa como Anos, Meses e Dias....

    Será que é possivel??
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  criquio 20/6/2011, 15:48

    Ah, então você quer o ano tambem? É que no seu primeiro post, você disse meses e dias:

    "Ex.: Data de Admissão: 08.09.2010 / Data de Demissão: 03.01.2011 - tempo de casa: 117 dias - desta forma eu consegiu montar, o que gostaria é que ficasse desta forma:
    Data de Admissão: 08.09.2010 / Data de Demissão: 03.01.2011 - tempo de casa 03 meses e 26 dias."


    Basta acrescentar o Ano(Data()). Vou ver se depois faço aqui.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 20/6/2011, 15:53

    Desculpe, deveria ter colocado melhor os exemplos,

    Tenho casos, somente com dias, Meses e Dias, e Anos, Meses e Dias...

    todos tendo como base de calculo a data de admissão e data de demissão


    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 20/6/2011, 20:08

    Pessoal,

    Tentei a sugestão para acrescentar o ano:

    =Selmed(dia([data de Admissão]-[data de demissão]);difdata("yyyy";[data de admissão];[data de demissão]) & " anos ")
    OK - o calculo foi feito a partir da data de demissão e não do relatório...

    Só que o problema é que ela está arrendondando todos os valores Ex.: 10 meses - 1 ano

    Tentei agrupar com as outras condições, mas dá erro...

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  criquio 22/6/2011, 00:49

    Priscila, você precisa disso em um relatório simples ou relatório contínuo?


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 22/6/2011, 11:42

    Bom estou tentando montar um BD de funcionários, todos os relatorios em que trabalho atualmente são no excel.., a intenção é criar um banco de dados que agilize o trabalho. Esse formulario irá ser continuo.

    Consegui montar parte dele com um curso que compramos sobre access...

    1º - TB- Funcionários (Contem todos os dados dos funcionários)
    2º - Consulta - Arquivo Morto - coloquei campos especificos; filtrando somente pela condição do funcionário "Inativo".
    3º - FrmDatas - um formulário para inserir as datas (Essa parte foi mais cópia das instruções da apostila)
    4º - Relatorio - Funcionários Demitidos - após inserir as datas no frm acima, ele apresenta uma lista com os funcionários demitidos no periodo solicitado.
    É nessa parte que não consegui terminar o trabalho....

    Além dos dados do funcionário que estão baseados na consulta (Arquivo Morto) preciso de um campo "tempo de Casa"....

    Onde apresente a formatação em anos, meses e dias... - 03 anos, 02 meses e 20 dias...

    No Excel consegui montar, observei que a função é a mesma, mas não entendi como aplicar no access
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  vieirasoft 22/6/2011, 11:56

    Teste por favor


    Private Function CalculaPeriodo(Date1 As Date, Date2 As Date)


    If DataEntrada > DataHoje 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 = Data2 - Data1

    ' 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", Date1) + Anos, DatePart("m", Date1) + meses, Day(Date1)), Date2)

    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
    ............................................................

    uma caixa de texto com o nome txtDataResult

    Me.txtDataResult.SetFocus
    txtDataResult = CalculaPeriodo(DataEntrada, DataHoje)
    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 22/6/2011, 12:31

    Insiro essa função em um modulo comum, ou insiro a caixa "TxtDataResult" e coloco como um procedimento?

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  vieirasoft 22/6/2011, 12:34

    Inserir a função no módulo VBA do form.

    No evento Load()

    Me.txtDataResult.SetFocus
    txtDataResult = CalculaPeriodo(DataEntrada, DataHoje)

    avatar
    Convidado
    Convidado


    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Convidado 22/6/2011, 12:58

    Vierão.. eu estou tentando tambem usar esta função, como no meu caso é um form Desvinculado

    coloquei ao atualizar a cbo quando popula os campos....

    Mas fala que era esperado variável e nao módulo


    coloquei assim:

    Me.txtDataResult.SetFocus
    txtDataResult = CalculaPeriodo(txtDataNascimento, dataHoje)


    o que faço?

    grato
    avatar
    Convidado
    Convidado


    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Convidado 22/6/2011, 13:02

    Bem.. no meu caso eu havia renomeado o modulo com o nome da função.. renomeei e deu certo

    Me.txtDataResult.SetFocus
    txtDataResult = CalculaPeriodo(txtDataNascimento

    Mas esta a aparecer assim:

    0 ano 0 mês 14366 dias
    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 22/6/2011, 13:19

    Não consegui fazer funcionar:

    Segue todos códigos VBA que tenho neste relatório....


    ______________________________________________________________________________________________
    Option Compare Database
    Private Sub Rport_noData(Cancel As Integer)
    'Se o periodo selecionado não contém dados, mostrar mensagem
    MssBox "Não há dados para esse formulário. Cancelando relatório...", _
    VblInformation
    'E cancelar aberura do relatório

    Cancel = -1

    End Sub

    Private Sub Report_Close()
    'Ao fechar o relatório, fechar o formulário também
    DoCmd.Close acForm, "FrmDatas"

    End Sub
    Substitui (Date1) (Date2)
    Private Function CalculaPeriodo(DatadeAdmissão As Date, DatadeDemissão As Date)

    If DataEntrada > DataHoje 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
    Data2 Data1
    Intervalo = DatadeDemissão - DatadeAdmissão

    ' 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", DatadeAdmissão) + Anos, DatePart("m", DatadeAdmissão) + meses, Day(DatadeAdmissão)), DatadeDemissão)

    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

    Private Sub Report_Load()
    Me.TxtDataResult.SetFocus
    TxtDataResult = CalculaPeriodo(DatadeAdmissão, DatadeDemissão)

    End Sub

    Private Sub Report_Open(Cancel As Integer)
    'Abre o formulário e determina o seu titulo, pois o mesmo
    'formulário pode ser usado para qualquer relatório
    'que necessite de filtro por datas.
    DoCmd.OpenForm "FrmDatas", , , , , _
    acDialog, "Transações por datas"

    ' Se o formulário estiver fechado, cancelar operação
    If Not EstáAberto("FrmDatas") Then
    Cancel = True
    End If
    End Sub


    No formulário, crei uma Cx texto não acoplada e nomei com TxtDataResult
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  vieirasoft 22/6/2011, 13:27

    Bom, isso tem que ser colocado num formulário e não num relatório.
    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 22/6/2011, 14:11

    Vieira, me desculpe por tantas perguntas é que preciso entender o que estou fazendo

    1º - Frm Datas - Objetivo - inserir uma data especifica e ao clicar o visualizar, ele apresenta um relatório com os funcionários demitidos no mesmo periodo.

    Private Sub CmdVisualizar_Click()
    'Verifica se os campos para data inicial e final
    'foram preenchidos antes de continuar. Caso ambos ou um esteja vazio, entao
    If IsNull([txtDataInicial]) Or IsNull([TxtDatafinal]) Then

    'Mostrar mensagem que ambos os campos devem ser preenchido
    MsgBox "Você deve inserir datas de inicio e de fim.", vbExclamation

    'Ir para o controle de data inicial
    DoCmd.GoToControl "TxtDataInicial"

    Else

    'Caso ambos campos tenha sido preenchidos, mas a data inicial
    'seja maior que a data final...
    If [txtDataInicial] > [TxtDatafinal] Then
    '...mostrar mensagem avisando do erro...
    MsgBox "Data Final dever ser maior do que a data incial.", vbExclamation
    '... e ir para o controle de Data Inicial
    DoCmd.GoToControl "TxtDataInicial"
    Else
    'Se condicao for falsa, entao ocultar o formulário.
    Me.Visible = False
    End If
    End If

    End Sub

    Relatorio - FuncDemitidos - em resposta ao frmDatas,,,,,


    Private Sub Rport_noData(Cancel As Integer)
    'Se o periodo selecionado não contém dados, mostrar mensagem
    MssBox "Não há dados para esse formulário. Cancelando relatório...", _
    VblInformation
    'E cancelar aberura do relatório

    Cancel = -1

    End Sub

    Private Sub Report_Close()
    'Ao fechar o relatório, fechar o formulário também
    DoCmd.Close acForm, "FrmDatas"

    End Sub

    Private Sub Report_Open(Cancel As Integer)
    'Abre o formulário e determina o seu titulo, pois o mesmo
    'formulário pode ser usado para qualquer relatório
    'que necessite de filtro por datas.
    DoCmd.OpenForm "FrmDatas", , , , , _
    acDialog, "Transações por datas"

    ' Se o formulário estiver fechado, cancelar operação
    If Not EstáAberto("FrmDatas") Then
    Cancel = True
    End If
    End Sub


    Pelo que você me informou esse código deve ser inserido no frm...,tentei fazer isso no formulário data, mas apresenta erro...

    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  vieirasoft 22/6/2011, 14:15

    Você quer fazer isso num Relatório e eu entendi num formulário. Neste caso o código do Criquio está simples e funciona, dando-lhe os meses e os dias.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  criquio 22/6/2011, 14:22

    Priscila, estou vendo aqui uma melhor forma de montar isso.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 22/6/2011, 14:28

    OK, o código funciona, estou trabalhando nele agora...

    Ex,:

    Data de Admissão Data de Demissão Tempo de Casa
    15.01.2008 14.01.2011 02 anos, 11 meses e 30 dias
    15.01.2008 14.01.2011 36 meses e 29 dias (formula do criquio)

    Tenho diversos, casos alguns irão ser somente de meses outros de dias ou anos, ou o conjunto das informações.....

    Tentei colocar o ano na formula que ele me mandou mas, a unica coisa que consegui foi o ano arredondado....

    avatar
    Convidado
    Convidado


    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Convidado 22/6/2011, 15:25

    Priscila.. qual que aplicou ai acima?

    O do Vieira ou do Criquio?
    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 22/6/2011, 15:32

    Estou usando a formula do Criquio
    avatar
    Convidado
    Convidado


    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Convidado 22/6/2011, 15:34

    Post ela para mim por favor.. a que retorna o ano mes e dia...

    Fico-lhe grato
    avatar
    Priscila Lima
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 79
    Registrado : 26/02/2011

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Priscila Lima 22/6/2011, 15:51

    Formula do Criquio

    =SeImed(Dia([Data de Admissão])-Dia([data de demissão]);DifData("m";[Data de Admissão];[Data de Demissão]) & " meses e " & 30-Dia([Data de Admissão])+Dia([data de demissão]) & " dias.";SeImed(Dia([Data de Admissão])=Dia(Data());DifData("m";[Data de Admissão];Data()) & " meses.";DifData("m";[Data de Admissão];Data()) & " meses e " & Dia(Data())-Dia([Data de Admissão]) & " dias."))
    Com essa formula o calculo aparece da seguinte maneira:

    15.01.2008 - 14.01.2011 - 36 meses e 29 dias

    O que não estou conseguindo inserir na formula acima é a parte do ano..., que deveria ficar com a seguinte apresentação:

    15.01.2008 - 14.01.2011 - 02 anos, 11 meses e 30 dias....
    avatar
    Convidado
    Convidado


    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Convidado 27/6/2011, 19:01

    Amigo Criquio poderia ver o post? se ajuda ela?
    vieirasoft
    vieirasoft
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7304
    Registrado : 11/05/2010

    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  vieirasoft 3/7/2011, 14:48

    Se houver algum comentário reabra por favor. Tópico resolvido.
    avatar
    Luciane Lopes
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 2
    Registrado : 18/06/2018

    [Resolvido]Calculo entre datas direto no relatório Empty Calculo entre datas direto no relatório

    Mensagem  Luciane Lopes 3/2/2022, 18:24

    Boa tarde!
    Senhores, estou com o mesmo problema abaixo e não consigo inserir o ano na fórmula indicada pelo Amigo Criquio. Será que poderiam me ajudar, por favor!!! Estou utilizando a fórmula abaixo em uma caixa de texto no relatório. Mensagem de erro: "A expressão inserida contém sintaxe inválida.
    Talvez você tenha inserido um operando sem um operador."
    Muito obrigada!

    =SeImed(Dia([ServData])>Dia(Data());DifData(“y”;[ServData];Data()) & “ anos, “ & ("m";[ServData];Data())-1 & " meses e " & 30-Dia([ServData])+Dia(Data())& " dias. ";SeImed(Dia([ServData])=Dia(Data());DifData("y”;[ServData];Data()) & “ anos, “ & (“m";[ServData];Data()) & " meses.";DifData("y”;[ServData];Data()) & “ anos, “ & (“m";[ServData];Data()) & " meses e " & Dia(Data())-Dia([ServData]) & " dias."))

    Conteúdo patrocinado


    [Resolvido]Calculo entre datas direto no relatório Empty Re: [Resolvido]Calculo entre datas direto no relatório

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 24/11/2024, 07:12