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


    [Resolvido]Erro ao Comparar Data

    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao Comparar Data Empty Erro ao Comparar Data

    Mensagem  Convidado 2/5/2013, 19:56

    Boa Tarde!

    Estou tendo um pequeno Problema ao comparar Datas.

    Estou o Seguinte Codigo
    If (Conversion.CDate(Txt_Qtde_Horas_Comp) + Conversion.CDate(Txt_Hrs_FuncCompesadas)) > Conversion.CDate(Txt_Hrs_FuncFolgaveis) Then
    MsgBox "A Qtde de Horas compensadas nao pode ser MAIOR que horas Folgaveis !", vbInformation, "Atenção"


    Txt_Hrs_FuncFolgaveis tem que ser menor ou igual a Txt_Qtde_Horas_Comp + Txt_Hrs_FuncCompesadas

    O estranho é que em alguns situações funciona e em outras não
    Ex.

    Assim da certo...
    Txt_Hrs_FuncFolgaveis = 07:59 (A soma dos 2 abaixo não pode ser Maio que esse valor)
    Txt_Qtde_Horas_Comp = 05:45
    Txt_Hrs_FuncCompesadas = 02:14


    Ja assim nao funciona...
    Txt_Hrs_FuncFolgaveis = 07:59
    Txt_Qtde_Horas_Comp = 03:59
    Txt_Hrs_FuncCompesadas = 04:00


    Alguma Ideia ?


    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao Comparar Data Empty Re: [Resolvido]Erro ao Comparar Data

    Mensagem  Convidado 2/5/2013, 21:49

    A questão de Horas é que seus calculos devem ser feitos em minutos, no formato double... fazer calculos de horas no formato horiginal fatalmente dara erro.

    Estas funções abaixo

    1 - Converte as horas em minutos (ai pode-se somar, subtrair etc..)
    2 - a segunda função Converte o valor double em horas.

    Crie um módulo e o nomeeie de mdlHoras, nele cole:


    Option Compare Database
    Option Explicit

    '**************************************************
    'Módulo escrito por Luiz Cláudio C. V. Rocha
    'lui@link.com.br
    'Data: 20/3/2001
    'Funções para se trabalhar com horas acima de 24h
    '**************************************************

    Public Function HrDbl(stHora As String) As Double
    'Converte um string de hora (formato [h]hh:mm) para Double
    'Ex: "135:30" = 135,5
    'Ex: "23:59" = 23,9833333333333
    Dim dblHoras As Double
    Dim intMinutos As Integer
    Dim blnDoisPontos As Boolean, blnNum As Boolean
    Dim strNum As String

    'Verifica se o sinal de dois pontos ':' está na terceira casa
    'da direita para esquerda
    If Asc(Left(Right(stHora, 3), 1)) = 58 Then
    blnDoisPontos = True
    Else
    blnDoisPontos = False
    End If

    'Verifica se o resto dos dígitos são numéricos
    strNum = Left(stHora, Len(stHora) - 3) & Right(stHora, 2)
    If IsNumeric(strNum) = True Then
    blnNum = True
    Else
    blnNum = False
    End If

    'Sai do procedimento se o formato estiver incorreto
    If (blnDoisPontos = False) Or (blnNum = False) Then
    MsgBox "Informe a hora no formato hh:mm", vbCritical + vbOKOnly
    Exit Function
    End If

    'Pega os minutos
    If CDbl(strNum) < 0 Then
    intMinutos = CInt(Right(strNum, 2)) * (-1)
    Else
    intMinutos = CInt(Right(strNum, 2))
    End If

    'Pega as horas
    dblHoras = Fix(CDbl(Left(strNum, Len(strNum) - 2)))

    'Calcula a hora
    HrDbl = dblHoras + (intMinutos / 60)

    End Function

    Public Function HrStr(dblHora As Double) As String
    'Pega um valor numérico e o converte para Horas/Minutos
    'Ex: 123,5 = "123:30"
    'Ex: 23,9833333333333 = "23:59"

    Dim strHoras As String
    Dim strMinutos As String

    'Pega as horas (parte inteira)
    strHoras = CStr(Fix(dblHora))

    'Pega os minutos
    strMinutos = Format$(Abs((dblHora - Fix(dblHora)) * 60), "00")

    'Verifica se o total de minutos é 60
    If strMinutos = "60" Then
    strMinutos = "00"
    strHoras = CStr(CDbl(strHoras) + 1)
    End If

    'Concatena os dois
    HrStr = strHoras & ":" & strMinutos

    End Function



    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao Comparar Data Empty Re: [Resolvido]Erro ao Comparar Data

    Mensagem  Convidado 3/5/2013, 17:58

    Piloto Muito Obrigado!

    Funcionar funcionou mas so quero ter certeza se fiz certo !

    Criei o Modulo conforme orientou e depois chamei a funcao dessa forma ...

    ElseIf (HrDbl(Txt_Qtde_Horas_Comp) + HrDbl(Txt_Hrs_FuncCompesadas)) > HrDbl(Txt_Hrs_FuncFolgaveis) Then


    Mas ai debuguei para ver o valor que cada controle esta recebendo e continua recebendo em formato de HH:MM... ta certo ?


    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao Comparar Data Empty Re: [Resolvido]Erro ao Comparar Data

    Mensagem  Convidado 3/5/2013, 18:26

    O Seu campo deve ser so tipo Data/hora formatado no formato time...

    A logica funciona assim... Suponha que tem If 2:00 + 3:00 > 4:00
    Então este codigo soma as horas em formato de minutos

    If 120 + 180 > 240
    If 300 > 240...

    Ele compara em minutos...
    podes na outra parte do código tambem converter os minutos em horas..

    Teste exaustivamente.


    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao Comparar Data Empty Re: [Resolvido]Erro ao Comparar Data

    Mensagem  Convidado 3/5/2013, 18:29

    O controle continuará com o horário... apenas a variável Hdbl assume o valor em minutos..e esta é usada na soma.. se colocar pontos de interrupçàp na linha seguinte e pausar o mouse em cima da variaval hdbl vera que serão exibidos os minutos..

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao Comparar Data Empty Re: [Resolvido]Erro ao Comparar Data

    Mensagem  Convidado 3/5/2013, 18:44

    Muito Obrigado Piloto!

    Resolvi esse problema acima...
    Mas aproveitando e pegando carona neste tópico...

    Tenho uma situação onde o meu campo do tipo Date/Time com formato Time e em alguns caso preciso informar 24:00 mas o campos só aceita ate 23:59.


    Alguma sugestão para corrigir isso ?


    Saudações !
    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao Comparar Data Empty Re: [Resolvido]Erro ao Comparar Data

    Mensagem  Convidado 3/5/2013, 18:49

    Tente em formato texto, colocando uma clausula apos atualizar para não exceder a digitação no 24 e nos minutos em 60

    Tipo
    If Left(Me.SuaHora,2) >24 Then
    MsgBox..........
    Else If TRight(Me.SuaHora,2) <60 Then
    MsgBox....
    End If

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao Comparar Data Empty Re: [Resolvido]Erro ao Comparar Data

    Mensagem  Convidado 3/5/2013, 19:18

    Muito Bom Piloto,

    Mais um vez muito obrigado.

    Resolvido!

    avatar
    Convidado
    Convidado


    [Resolvido]Erro ao Comparar Data Empty Re: [Resolvido]Erro ao Comparar Data

    Mensagem  Convidado 3/5/2013, 19:29

    O Fórum agradece o Retorno

    Conteúdo patrocinado


    [Resolvido]Erro ao Comparar Data Empty Re: [Resolvido]Erro ao Comparar Data

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 17:33