Visual Basic - Sumar horas a determinadas fechas

Life is soft - evento anual de software empresarial
 
Vista:
Imágen de perfil de Juan José

Sumar horas a determinadas fechas

Publicado por Juan José (2 intervenciones) el 10/03/2015 23:54:13
Hola foro, estoy haciendo un software con visual basic 6, y estoy detenido en un detalle, en un frm me da un resultado que son las horas que se necesitan para terminar un pedido, éso me lo da por default, pero el problema radica en que ésas horas las tiene que sumar a la hora en que se captura el pedido y darme una fecha y hora exacta para terminar, pero hay dos paros laborales, uno es para salir a comer de 1 a 2 y media, y otro cuando salen del trabajo que es a las 7 pm, también otra variable es que los sabados trabajan medio día y los domingos descansan. Les agradecería mucho si me ayudan a poder resolver mi problema gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 6
Ha disminuido su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Sumar horas a determinadas fechas

Publicado por Megamind (120 intervenciones) el 11/03/2015 13:03:38
Hola
No me e planteado nunca este tipo de problemas
Pero supongo que si divides las horas que tienes entre la jornada laboral, tendrías los días totales
Si se multiplica esos días por el tiempo de descanso y se añade a las horas totales, creo que ya hay una parte solucionada.
Luego, si hacemos un bucle For x = 1 To Dias .... Next
Y miramos si
Weekday(x) = 6 Then ' Sábado
Y
If Weekday(x) = 7 Then ' Domingo
Se podría añadir a las horas totales la Jornada laboral correspondiente.

Creo que es como yo empezaría a plantear el problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Juan José

Sumar horas a determinadas fechas

Publicado por Juan José (2 intervenciones) el 11/03/2015 20:28:39
Gracias Megamind, te comento lo que he realizado hasta el momento, primero dividí las horas que me da por concluir entre las horas de la jornada, así, si son 9.5 hrs. las que trabajan, se da por automático que si son las 10 am, y faltan 9.5 por concluir, finaliza entonces a las 10 am del otro día. ejemplo:
Caso1: 36 hrs por concluir
36/9.5 = 4.11
después multiplico los días que me dió por 9.5 (4 x 9.5) = 38, resto las horas x concluir menos los días con horas
39-38 = 1, ésto quiere decir que son 4 días más 1 hora lo que va a tardar, el asunto es que me cuesta un poco de trabajo para determinar si es fin de semana, o si es entre semana y que pueda dejar de sumar cuando sean las horas en que no se trabaja.
ahí es donde estoy detenido, si tienes una idea coméntamela, lo del bucle me parece sería una buena opción, ojalá y me puedas comentar un poco más de cómo lo imaginas.
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 9 puestos en Visual Basic (en relación al último mes)
Gráfica de Visual Basic

Sumar horas a determinadas fechas

Publicado por Megamind (120 intervenciones) el 11/03/2015 23:18:20
A ver que te parece esto
Damos por hecho que los días que as calculado, son correctos y que el pedido se inicia en la fecha actual del sistema
Entonces, añadimos a la variable fFin los días que hemos calculado después de redondearlos

Lo siguiente es pedirle que muestre el número del día de la nueva fecha(fFin )
Si el día se corresponde con un sábado o Domingo
Mostrara un mensaje, que será hay donde tendrás poner el código que desees

Bueno, a ver si hay suerte y esto te sirve

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub Command1_Click()
    Dim fInicio As Date ' Fecha del pedido, o de su Inicio
    Dim fFin As Date ' Guardaremos los dias que añadiremos
    Dim i As Integer
    Dim sDia As Integer
 
    nDias = 4.11
    nDias = -Int(-nDias) ' Lo redondeamos al alza porque hay un dia con una hora
                         ' Total seria 5 dias de los que tenemos que mirar si entra en el fin de semana
 
    fInicio = CDate(Date)
 
    For i = 0 To nDias - 1
      fFin = DateAdd("D", 1 * i, fInicio)
      sDia = Weekday(fFin)
 
     If sDia = 6 Then ' Sabado
        MsgBox "Pillamos un Sábado" & vbCrLf & WeekdayName(sDia, False)
     ElseIf sDia = 7 Then ' Domingo
       MsgBox "Pillamos un Domingo" & vbCrLf & WeekdayName(sDia, False)
      End If
    Next i
 
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar