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

    Conversão de numero para (ano mês e dia) resulta valores inesperados.

    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    Conversão de numero para (ano mês e dia) resulta valores inesperados. Empty Conversão de numero para (ano mês e dia) resulta valores inesperados.

    Mensagem  Lupércio 4/3/2012, 19:27

    Boa tarde á todos, um bom final de semana!
    Tenho 3 campos:
    DataInicial (Data de admissão de um funcionário) contratado em 01/01/2010
    DataFinal (Data de demissão de um funcionário) demitido em 01/01/2011
    ServiçosAno (Tempo serviço do funcionário) resultado (1 ano 0 mês 0 dia). Resultado que preciso, você testa 100 vezes e retorna esse valor (1 ano 0 mês 0 dia), quando você menos espera ele retorna: (0 ano 11meses 30 dias). Gostaria que alguém do fórum me ajudasse, ficaria grato, segue o aplicativo em anexo.

    Anexos
    Conversão de numero para (ano mês e dia) resulta valores inesperados. AttachmentConversão.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (69 Kb) Baixado 38 vez(es)
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

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

    Conversão de numero para (ano mês e dia) resulta valores inesperados. Empty Re: Conversão de numero para (ano mês e dia) resulta valores inesperados.

    Mensagem  criquio 4/3/2012, 20:20

    Coloque o procedimento que está usando. Talvez consigamos analisar sem precisar baixar o bd.


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

    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    Conversão de numero para (ano mês e dia) resulta valores inesperados. Empty Re: Conversão de numero para (ano mês e dia) resulta valores inesperados.

    Mensagem  Lupércio 4/3/2012, 20:28

    Private Function CalculaPeriodo(Date1 As Date, Date2 As Date)
    'Desenvolvido por João Rodrigues (JR)
    '
    'Data: Mai/1999

    If Date1 > Date2 Then
    MsgBox "Data Inicial não pode ser maior que Data Final!", vbExclamation, "Erro"
    Exit Function
    End If

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

    ' O resultado da diferença está em Double.
    Intervalo = Date2 - Date1

    ' 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


    Private Sub DataFinal_AfterUpdate()
    On Error Resume Next
    Dim Msg As String
    If IsNull(DataInicial) Or DataInicial = "" Or IsNull(DataFinal) Or DataFinal = "" Then
    Msg = "Digite uma data válida nos campos" & vbCrLf _
    & "Data de Início e Data Término."
    ElseIf DataInicial.Value > DataFinal.Value Then
    Msg = "A Data Término deve ser posterior" _
    & vbCrLf & "à Data de Início."
    Else
    ServiçoAno = CalculaPeriodo(DataInicial, DataFinal)
    Exit Sub
    End If
    'Retorna a msg de erro.
    MsgBox Msg, vbExclamation, "Erro"

    End Sub

    Private Sub DataInicial_AfterUpdate()
    On Error Resume Next
    Dim Msg As String
    If IsNull(DataInicial) Or DataInicial = "" Or IsNull(DataFinal) Or DataFinal = "" Then
    Msg = "Digite uma data válida nos campos" & vbCrLf _
    & "Data de Início e Data Término."
    ElseIf DataInicial.Value > DataFinal.Value Then
    Msg = "A Data Término deve ser posterior" _
    & vbCrLf & "à Data de Início."
    Else
    ServiçoAno = CalculaPeriodo(DataInicial, DataFinal)
    Exit Sub
    End If
    'Retorna a msg de erro.
    MsgBox Msg, vbExclamation, "Erro"
    End Sub
    Lupércio
    Lupércio
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1143
    Registrado : 07/05/2011

    Conversão de numero para (ano mês e dia) resulta valores inesperados. Empty Re: Conversão de numero para (ano mês e dia) resulta valores inesperados.

    Mensagem  Lupércio 4/3/2012, 21:08

    Sabe Cliquio funciona normal, a hora que você menos espera trás esse resultado, que não desejo, quando insiro 01/01/2010 - 01/01/2011 = (1ano 0mês 0 dias)resultado pretendido.
    ai vc executa o procedimento 100 vezes ta normal, derrepente surge o inesperado 0ano 11 meses 30dias, resultado indesejado...

    Conteúdo patrocinado


    Conversão de numero para (ano mês e dia) resulta valores inesperados. Empty Re: Conversão de numero para (ano mês e dia) resulta valores inesperados.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 6/5/2024, 15:08