Access

Hola soy novat en el tema de access pero donde me encuentro trabajando me pusieron a realizar una base de dstos en dicho programa, tengo demasiadas dudas, en esta maravillosa página he encontrado varias soluciones pero, como programar no se mucho ahí cosas que no asimilo.
Me podrías colaborar con unas dudillas pero de forma sencilla, y pues paso a paso gracias
1. Necesito que access me deje tomar números en formato de hora por encima de 24:00 la cosa es que yo tengo 20 empleados cada uno trabaja 6 horas con 18 minutos al multiplicar los 20*6:18 me da un valor que no corresponde.
2. Al poner cedula del empleado necesito que en las otras casillas me aparezca nombre área, especialidad, turno etc.
3. Como todo se trabaj basándose en la horas hombre disponible necesito restar la cantidad de horas que tengo con cada uno de los trabajos necesarios ejemplo tengo 24 horas. Dos horas se demora alistando la maquina entonces me quedarían 22 ... Diez horas sacando el producto A y 10 horas el producto b y sobran 2 para alistamiento: la pregunta es ¿cómo hago para que access tome cada una de las actividades y le vaya restando las actividades a realizar el día a día? No siempre se demoran lo mismo ni son las mismas actividades.
Gracias se que es mucho pedir, pero me sacarías de un apuro gracias de antemano
Respuesta
1
Vamos por partes
Por lo que entiendo, tienes que trabajar con datos de horas y minutos sin que más de 24 horas se conviertan en días.
Access tiene un tipo de datos que es Fecha/Hora que no veo que te sirva para lo que quieres.
Lo que yo haría es utilizar un campo numérico con decimales (pongamos tipo simple).
El problema que te vas a encontrar es que cinco horas y cuarto (05:15) tendrás que almacenarlo internamente como 5,25 y convertir el formato cada vez que quieras que aparezca. P.e.: Para almacenar una hora y veinte minutos tendrás internamente el valor 1,33333333.
Te dejo un par de funciones sencillas para convertir de formato hora a decimal y viceversa. Estas funciones las tienes que incluir dentro de un módulo y después las puedes llamar desde cualquier consulta, formulario o informe.
Function deHoraADecimal(ByVal txtHora As String) As Single
    Dim hh As String
    Dim mm As String
    deHoraADecimal = 0 ' Si hay algún error saldremos devolviendo este valor
    ' Comprobamos que lleve el separador ":"
    If InStr(txtHora, ":") = 0 Then Exit Function
    ' Separamos el texto que va antes y después de los dos puntos
' suponemos que será la hora y los minutos
hh = Left$(txtHora, InStr(txtHora, ":") - 1)
    mm = Right$(txtHora, Len(txtHora) - InStr(txtHora, ":"))
    ' La hora y los minutos deben ser un número
    If Not IsNumeric(hh) Or Not IsNumeric(mm) Then Exit Function
    ' Ya tenemos separada la hora y los minutos. Los convertimos a decimal
    deHoraADecimal = hh + mm / 60
End Function
Function deDecimalAHora(ByVal decHora As Single) As String
    Dim auxInt As Long
    Dim auxDec As Single
    ' Separamos la parte entera que corresponde a las horas de los decimales
' que representan los minutos
auxInt = Int(decHora)
    auxDec = decHora - auxInt
    ' Multiplicamos los decimales por 60 para que nos de el número de minutos que
' le corresponde
auxDec = Round(auxDec * 60)
    ' Si son 60 minutos... ponemos 0 y sumamos una hora
' (esto podría ocurrir al tener como parte decimal valores del tipo 0,999)
    If auxDec = 60 Then auxDec = 0: auxInt = auxInt + 1
    ' Formateamos la salida de la función
    deDecimalAHora = Format$(auxInt, "0") & ":" & Format$(auxDec, "00")
End Function
Por último, para que te salga los valores del área, especialidad, etc... que estarán en otra tabla, tienes que construir una consulta que una las tablas a través del campo común (la cédula del empleado). Esto es de lo mínimo que tienes que dominar para trabajar con una base de datos.
Busca algún manual sencillo para construir consultas. Al principio cuesta un poco pero es fácil.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas