
24/04/2008, 03:10
|
 | | | Fecha de Ingreso: febrero-2008
Mensajes: 397
Antigüedad: 17 años, 1 mes Puntos: 1 | |
Modificando código Recordando lo que hice en el siguiente tema: http://www.forosdelweb.com/f21/formu...licado-562999/
Necesito modificarlo para que me valga para el turno de noche. Tengo medio código hecho, pero no se cómo terminarlo. Tengo lo siguiente:
Código:
Private Sub CmdAceptar_Click()
Dim IdOperario As Long
IdOperario = Nz(DLookup("CodigoOperario", "operario2", "clave=" & Me.Txtclave), 0)
'Comprobamos si existe la clave introducida
If IdOperario <> 0 Then
If DCount("*", "PartesDeTrabajo", "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "#") > 0 Then
'si no existe todavía, miramos si está terminado el registro anterior
If DCount("*", "PartesDeTrabajo", "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date - 1, "mm/dd/yyyy") & "# and nz(horafinal)=space(0)") > 0 Then
DoCmd.OpenForm "hora3", acNormal, , "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date - 1, "mm/dd/yyyy") & "# and nz(horafinal)=space(0)"
'cerramos el form numeros
DoCmd.Close acForm, Me.Name
Else
MsgBox "esta parte aún no la he hecho XD"
End If
Else
'está en la tabla
If miramos hora de salida en blanco Then
'colocamos hora de salida
Else
'registro operario-dia completo (posible doble turno)
End If
Else
MsgBox "La contraseña introducida no corresponde a ningun empleado", vbCritical, "CONTRASEÑA ERRONEA"
End If
End Sub
Esto en teoría hace que si se va a crear un nuevo registra en el día, primero mira el día anterior para ver si ha finalizado la tarea.
He intentado hacer algo, no me da error pero si hago una tarea el día 24 y cambio la fecha al 25 (con el campo horafinal en blanco) me hace un nuevo registro. En principio está puesto que si el campo horafinal está en blanco abra el último registro (que sería el día 24 por no haberlo terminado). Lo que he puesto ahora es lo siguiente:
Código:
Private Sub CmdAceptar_Click()
Dim IdOperario As Long
IdOperario = Nz(DLookup("CodigoOperario", "operario2", "clave=" & Me.Txtclave), 0)
'Comprobamos si existe la clave introducida
If IdOperario <> 0 Then
If DCount("*", "PartesDeTrabajo", "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "#") > 0 Then
'si no existe todavía, miramos si está terminado el registro anterior
If DCount("*", "PartesDeTrabajo", "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date - 1, "mm/dd/yyyy") & "# and nz(horafinal)=space(0)") > 0 Then
DoCmd.OpenForm "hora3", acNormal, , "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date - 1, "mm/dd/yyyy") & "# and nz(horafinal)=space(0)"
'cerramos el form numeros
DoCmd.Close acForm, Me.Name
Else
DoCmd.OpenForm "hora3", acNormal, , "CodigoOperario=" & IdOperario & " AND Fecha=#" & Format(Date, "mm/dd/yyyy") & "#"
'cerramos el form numeros
DoCmd.Close acForm, Me.Name
End If
Else
DoCmd.OpenForm "hora3", acNormal, , , acFormAdd
Forms!hora3!CodigoOperario = IdOperario
'Forms!hora!fecha = Date'Esta no hace falta ya que tienes en la tabla Partes de trabajo
'El campo fecha con valor predeterminado la fecha actual
'cerramos el form numeros
DoCmd.Close acForm, Me.Name
End If
Else
MsgBox "La contraseña introducida no corresponde a ningun empleado", vbCritical, "CONTRASEÑA ERRONEA"
End If
End Sub
Última edición por Koudelka; 24/04/2008 a las 04:18 |