DATE/TIMER
ESTOU COM PROBLEMA, TENHO DOIS CAMPOS NO BANCO DE DADOS COM FORMATO DATE/HORA ESTOU ARMAZENANDO A HORA DE ENTRADA E DE SAIDA E O TERCEIRO CAMPO ARMAZENA A HORA EXTRA EM FORMATA DATE
POR EX: 06:00 ENTRADA 19:00 SAIDA E FORNECE A TERCEIRA Q E 03:00 EXTRA , ESTOU PEGANDO NO BANCO DE DADOS AS HORAS EXTRAE TENHO Q SOMA R NO VISUAL BASIC JA FIZ O LOOP A PARTE DE PROGRAMACAO ESTA TUDO FEITO SOMA CERTO MAS TEM UM GRANDE PROBLEMA DEPOIS Q PASSA DAS 24:00 ELE COLOCA A DATA NA FRENTE E NAO SOMA MAIS EX ESTAVA COM 23:10 E O FUNCIONARIO FEZ MAIS 2:00
TEM QUE IR PARA 25:10 DE HORAS EXTRA
MAS NAO CONSIGO
PODEM ME AJUDAR
POR EX: 06:00 ENTRADA 19:00 SAIDA E FORNECE A TERCEIRA Q E 03:00 EXTRA , ESTOU PEGANDO NO BANCO DE DADOS AS HORAS EXTRAE TENHO Q SOMA R NO VISUAL BASIC JA FIZ O LOOP A PARTE DE PROGRAMACAO ESTA TUDO FEITO SOMA CERTO MAS TEM UM GRANDE PROBLEMA DEPOIS Q PASSA DAS 24:00 ELE COLOCA A DATA NA FRENTE E NAO SOMA MAIS EX ESTAVA COM 23:10 E O FUNCIONARIO FEZ MAIS 2:00
TEM QUE IR PARA 25:10 DE HORAS EXTRA
MAS NAO CONSIGO
PODEM ME AJUDAR
Deivite Souza
Para solucionar o teu problema basta usar o DateADD com o formato correto, teste o código abaixo:
Verá que ele soma 15 HORAS e retorna o valor já do dia seguinte, resultado:
11/1/2005 09:08:31 12/1/2005 00:08:31
Até Breve
[s50]
[txt-color=#0000ff]1) Não escreva TUDO EM MAIÃÅ¡SCULAS, quer dizer que está GRITANDO!
2) Não use URGENTE, veja as Regras do Fórum [/txt-color]
Para solucionar o teu problema basta usar o DateADD com o formato correto, teste o código abaixo:
? now, dateadd("h",15,now)
Verá que ele soma 15 HORAS e retorna o valor já do dia seguinte, resultado:
11/1/2005 09:08:31 12/1/2005 00:08:31
Até Breve
[s50]
[txt-color=#0000ff]1) Não escreva TUDO EM MAIÃÅ¡SCULAS, quer dizer que está GRITANDO!
2) Não use URGENTE, veja as Regras do Fórum [/txt-color]
Converta todas as horas em minutos, executa os calculos e o resultado converta novamente para horas. P/ facilitar vai abaixo as duas funcoes prontinhas :
'Transforma horas em minutos
Public Function HorToMin(ByVal sHora As String) As Long
If Left(sHora, 1) = "-" Then
HorToMin = (Val(Mid(sHora, 2, Len(sHora) - 4)) * 60) + Val(Right(sHora, 2))
HorToMin = HorToMin * (-1)
Else
HorToMin = (Val(Left(sHora, Len(sHora) - 3)) * 60) + Val(Right(sHora, 2))
End If
End Function
'Transforma minutos em horas
Public Function MinToHor(ByVal nMinuto As Long) As String
Dim sHor As String, sMin As String, bNegativo As Boolean, nMin As Long
If nMinuto < 0 Then
nMin = nMinuto * -1
bNegativo = True
Else
nMin = nMinuto
bNegativo = False
End If
sHor = Int(nMin / 60)
sMin = nMin Mod 60
If Len(sHor) < 2 Then sHor = "0" & sHor
If Len(sMin) < 2 Then sMin = "0" & sMin
MinToHor = IIf(bNegativo, "-", "") & sHor & ":" & sMin
End Function
Vai tambem um exemplo:
resposta = mintohor(hortomin("23:10") + hortomin("02:00"))
msgbox resposta
Espero ter ajudado....
'Transforma horas em minutos
Public Function HorToMin(ByVal sHora As String) As Long
If Left(sHora, 1) = "-" Then
HorToMin = (Val(Mid(sHora, 2, Len(sHora) - 4)) * 60) + Val(Right(sHora, 2))
HorToMin = HorToMin * (-1)
Else
HorToMin = (Val(Left(sHora, Len(sHora) - 3)) * 60) + Val(Right(sHora, 2))
End If
End Function
'Transforma minutos em horas
Public Function MinToHor(ByVal nMinuto As Long) As String
Dim sHor As String, sMin As String, bNegativo As Boolean, nMin As Long
If nMinuto < 0 Then
nMin = nMinuto * -1
bNegativo = True
Else
nMin = nMinuto
bNegativo = False
End If
sHor = Int(nMin / 60)
sMin = nMin Mod 60
If Len(sHor) < 2 Then sHor = "0" & sHor
If Len(sMin) < 2 Then sMin = "0" & sMin
MinToHor = IIf(bNegativo, "-", "") & sHor & ":" & sMin
End Function
Vai tambem um exemplo:
resposta = mintohor(hortomin("23:10") + hortomin("02:00"))
msgbox resposta
Espero ter ajudado....
Deivite
Veja bem, se é a Quantidade de Horas e não uma Data que necessita, então NUNCA deveria estar definido como Data, é um Erro na Modelagem!
[s55]
O Por que do erro, os BD gerenciam data de forma diferente, se você precisa mensurar (MEDIR) uma determinada quantidade, então escolha qual o Formato Numérico adequado e armazene ali a sua informação.
No caso acima, você tem 23:10 de tempo e tem que somar 2 horas, então use a rotina do Liondas.
[s50]
[txt-color=#0000ff]** Note que ele converte para LONG [/txt-color]
Veja bem, se é a Quantidade de Horas e não uma Data que necessita, então NUNCA deveria estar definido como Data, é um Erro na Modelagem!
[s55]
O Por que do erro, os BD gerenciam data de forma diferente, se você precisa mensurar (MEDIR) uma determinada quantidade, então escolha qual o Formato Numérico adequado e armazene ali a sua informação.
No caso acima, você tem 23:10 de tempo e tem que somar 2 horas, então use a rotina do Liondas.
[s50]
[txt-color=#0000ff]** Note que ele converte para LONG [/txt-color]
Tópico encerrado , respostas não são mais permitidas