Hola buenos días a todos... Tengo una duda, hice un programa en VB para calcular la diferencia entre horas de entrada y salida de alumnos de una escuela. Las horas están almacenadas en una BD de Access. Paso los datos de el campo de las horas a variables para entrada y salida, convierto a cadenas, extraigo datos y trato de hacer el cálculo, en fin el código explicado es el siguiente, hecho en VB6:
Código:
Private Sub btnCalcular_Click()
Dim he As Date
Dim hs As Date
Dim Total As Double
Dim Pago As Double
Dim Total2 As Double
Dim Pago2 As Double
Dim Mult As Double
Dim Suma As Double
Dim MyStringS As String
Dim MyStringE As String
Dim Cadena1 As String
Dim Cadena2 As String
Dim Cadena3 As String
Dim Cadena4 As String
Dim Entero1 As Integer
Dim Entero2 As Integer
Dim Entero3 As Integer
Dim Entero4 As Integer
Dim i As Long
'Paso valores de tipo fecha a variables de tipo fecha
hs = Val("HSalida")
he = Val("HEntrada")
'Convierto los valores tipo fecha a tipo cadena
MyStringS = CStr(hs)
MyStringE = CStr(he)
'Extraer horas de cadena de Horas Salida
Cadena1 = Left(MyStringS, 8)
Cadena2 = Mid(MyStringS, 4, 2)
'Extraer horas de cadenas de Horas Entrada
Cadena3 = Left(MyStringE, 8)
Cadena4 = Mid(MyStringE, 4, 2)
'Convertir cadenas en Enteros
Entero1 = Val(Cadena1)
Entero2 = Val(Cadena2)
Entero3 = Val(Cadena3)
Entero4 = Val(Cadena4)
'Calcular Pago por Horas
Total = Entero3 - Entero1
Pago = Total * 100
'Calcular pago por minutos
Total2 = Entero4 - Entero2
Pago2 = Total2 * 1.6
If Pago2 < 0 Then
Mult = Pago2 * -1
Else
Mult = Pago2
End If
Suma = Pago + Mult
boxht = Val(Total) & ":" & Val(Total2)
boxpagar = Str(Suma)
End Sub
Ahora, he probado imprimir en una caja de texto (boxht) valor por valor para saber como va saliendo y donde está el error, el cuál es el siguiente:
1. La hora de salida toma el valor exacto de la base de datos, p.ej. 12:00, sin embargo la hora de entrada no toma el valor exacto, p.ej. 07:00, la hora de entrada me toma el mismo valor que la hora de salida y en el resultado me sale lo siguiente:
boxht = 00:00
boxpagar = 0
El funcionamiento, al parecer es el correcto, ya que si toma como valores 12:00 (salida) y 12:00 (entrada) por ovbias razones el resultado será el mostrado anteriormente. Sin embargo no sé porque no toma el valor correcto de la hora de entrada.
Si se preguntan poque no use Datadiff, es porque leí por ahí que había problemas con algunos tipos de horas (Doce de la noche = 00:00 a.m.). Configuré el campo de las horas en Access para que quede de las 01:00 a.m. a las 24:00 p.m.
Regresando al error, alguien sabe porque no me toma la hora normal?
Como dato opcional, estoy usando ADO en la conexión y uso un objeto Adodc para visualizar a cada empleado y ahi si veo las horas correctamente (entrad y salida)
Saludos a todos.