SOMAR HORAS SEM PASSAR PARA OUTRO DIA

MAURICIO 31/10/2012 10:04:38
#413245
Bom dia preciso somar horas sem passar para outra data. EX:


Tenho varias horas:

07:45
08:55
10:40
-------
27:20


Só que retorna 03:20. Por que ?

A soma maior que 24 horas, zera e começa a somar de novo. Já aproveitando o tópico preciso calcular o valor das horas. Tipo assim:

27:20 x R$ 5,20 = ?

como calcular ?

MARCELO.TREZE 31/10/2012 10:54:41
#413248
Bom vamos lá para você obter um valor maior que 24 horas, você trá que separar as horas dos minutos e somar separadamente:

De onde você pega estes valores?

quanto a calcular basta colocar um ponto no lugar de dois pontos e efetuar a multiplicação, exemplo: 27.2 * 5.20 = 141.44
MAURICIO 31/10/2012 10:57:59
#413249
Muito obrigado pela atenção Marcelo, estou quase ficando louco.


Uso assim:


Set Filtra_Periodo = Banco.OpenRecordset([Ô]SELECT * FROM Horario WHERE Codigo = [Ô] & TxtCodigo & [Ô] and Data >= [Ô] & [Ô]#[Ô] & Format((MskInicial), [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô] & [Ô] AND Data <= [Ô] & [Ô]#[Ô] & Format((MskFinal), [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô], dbOpenDynaset)

If Filtra_Periodo.RecordCount <> 0 Then
Filtra_Periodo.MoveFirst
Horas = 0
Saldo = 0
Do Until Filtra_Periodo.EOF

Horas = Horas + CStr(Filtra_Periodo!HorasDia)
Saldo = Saldo + CDate(Filtra_Periodo!SaldoDia)

Filtra_Periodo.MoveNext
Loop
End If

LblTotalExtra.Caption = Format(CDate(Horas), [Ô]Hh:mm[Ô])
LblTotalDia.Caption = Format(CDate(Saldo), [Ô]Hh:mm[Ô])
MARCELO.TREZE 31/10/2012 11:15:18
#413256
então vamos tentar resolver, este Filtra_Periodo!SaldoDia é aquela multiplicação que você disse?

OCELOT 31/10/2012 11:41:09
#413261
Só uma correção, não é só colocar ponto no lugar dos dois pontos pra calcular a hora, assim você pegaria o valor errado, por exemplo se é 1:30, o correto no calculo seria usar 1,5 e não 1,3, já que 30 minutos é metade de uma hora

O correto é pegar o valor da hora e somar com o valor dos minutos / 60, por exemplo, 27:20 ficaria 27 + 20 / 60 = 27,33 aproximadamente, então com esse valor fazer como o MARCELO disse
MAURICIO 31/10/2012 11:52:47
#413262
Não marcelo, ele filtra o periodo, o codigo do funcionario e ai soma, como na tela em anexo
MARCELO.TREZE 31/10/2012 12:24:16
#413267
que grid você está utlizando pois o ideal é fazer o calculo pegando os dados do grid ja preenchido?

MAURICIO 31/10/2012 12:29:23
#413269
Marcelo é o Dbgrid do vb6 mesmo.

para preencher o dbgrid uso :


SQL = [Ô]SELECT * FROM Horario WHERE Codigo = [Ô] & TxtCodigo & [Ô] and Data >= [Ô] & [Ô]#[Ô] & Format((MskInicial), [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô] & [Ô] AND Data <= [Ô] & [Ô]#[Ô] & Format((MskFinal), [Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô] & [Ô]ORDER By Data[Ô] [ô][ô]order by Data
Data1.RecordSource = SQL
Data1.Refresh
ROBIU 31/10/2012 15:02:33
#413280
Adapta esse código na sua rotina para converter de horas para decimal:

Dim vSaldoHrs As Double, HrsDec As Double

If IsDate(NomedaCol) Then
HrsDec = Hour(NomeDaCol) + Minute(NomedaCol) / 60
vSaldoHrs = vSaldoHrs + HrsDec
End If
MAURICIO 01/11/2012 10:14:18
#413337
Robiu, não deu certo.


Estive vendo no excel como formatar uma celula para maior que 24 horas, posso estar falando bobagem, mais fica assim:


Selection.NumberFormat = [Ô][h]:mm:ss;@[Ô]


ai aceita maior que 24 horas, como colocar isso no vb6 ?






LVFIOROT 01/11/2012 11:00:49
#413344
Resposta escolhida
nao existe forma de formatar no vb 6 para que a soma de horas se superior em 23:59:59.

o que pode ser feito é se passou do dia so + 24 horas.
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas