Borrar contenido de un campo por código

Hola y Buenas noches, Si tengo una tabla con los siguientes campos:
id, nombre, fecha_inicio, Fecha_final, y otro fecha_final_anterior que se nutre del campo fecha_final pero del registro anterior( por ejemplo:
id =1, nombre= Trabajador_1, Fecha_inicio =12-06-2009, fecha_final = 14-06-2009, fecha_final_anterior = vacio,
otro registro
id =2,  nombre= Trabajador_1, Fecha_inicio =16-06-2009, fecha_final = 18-06-2009, fecha_final_anterior =14-06-2009) .
Estos 2 registros pertenecen al trabajador_1, ahora el problema es cuando pongo más registros pero para otro trabajador_2 por ejemplo:
id =3, nombre= Trabajador_2, Fecha_inicio =19-06-2009, fecha_final = 20-06-2009, fecha_final_anterior = logicamente tiene que ser 18-06-2009, pero lo que quiero que salga vacio,
otro registro
id =4,  nombre= Trabajador_2, Fecha_inicio =21-06-2009, fecha_final = 22-06-2009, fecha_final_anterior =20-06-2009) .
Como podría borrar el contenido de este campo por código desde el formulario, para hacer esto yo ponía el código siguiente en el formulario
Private Sub Form_BeforeInsert(Cancel As Integer)
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindLast "[id] = [id] + 1"
    If Me.NewRecord Then
    Me.fecha_final_anterior = Nz(DMax("Fecha_final", "tabla"))
    End If
End Sub
El propósito de todo esto es restar el tiempo que hay entre obra y obra para un determinado trabajador, es decir, fecha anterior ´fecha_final_anterior de cada registro.
Un saludo.

1 respuesta

Respuesta
1
La verdad es que no e eniendo bien
Disculpame pero creo que esta mal diseñada la tabla
veras, ¿según te entendí quieres colocar fecha anterior pero del mismo trabajador? ¿Y por lo tanto empieza vacía para un nuevo trabajador?
¿O sea borrarla cuando empieza un nuevo trabajador?
en   Me.fecha_final_anterior = Nz(DMax("Fecha_final", "tabla"))puedes agregar el trabajador asi Me.fecha_final_anterior = Nz(DMax("Fecha_final", "tabla","nombre='" & NombreTrabajador & "'" )) asi si el rabajador esa empezando dira vacio en el campo
según yo el campo fecha final anterior es redundante (se puede buscar en la tabla en el trabajo anterior)
Ademas e sale mejor si cuentas los días trabajados y los pone en un campo luego solo sumas los días trabajados del trabajador
o si lo que quieres son las faltas resta los días totales menos los trabajados
[email protected]
Hola, gracias por la respuesta,
voy a intentarv aclarar la situación, si yo tengo varios trabajadores, pero estos trabajadores nunca trabajan a la vez sino por oras consecutivas) a un trabajador se le asigna una tarea, esta tarea comienza el día por ejemplo 10/09/2009 y finaliza el día 11/09/2009, el día 13/09/2009 se le asigna otra tarea y finaliza el 14/09/2009, entonces yo lo que quiero saber cuantos días ha estado este trabajador sin trabajar (en este caso 2 días), el 2º trabajador comienza el día 15/09/2009 a trabajar hasta el 17/09/2009 y luego se le asigna el 19/09/2009 otra tarea. Entonces como en la tabla tengo campo trabajador, fecha inicio, fecha final, entonces lo que quiero si se puede claro es hacer un control sobre el tiempo sin trabajar de cada empleado, espero haberme explicado mejor.
Un saludo y gracias
Si entendido
Hay dos cosas
En un reporte o formulario esto se puede obtener calculado
Los días trabajados (seria un campo con controlsource=dateDiff("D", fechainicio, FechaFin)
LA suma total de ese campo da los días totales de trabajo
si esto se lo restamos a la suma total de días obtienes los no trabajados, así:
la primera fecha de inicio del trabajador seria PrimeraFechaInicio=Dmin("FechaInicio","Tabla", "CodTrabajador='" & CodTrabajador & "'")
la ultima fecha final del trabajador seria UltimaFechaFin=Dmin("FechaFinal","Tabla", "CodTrabajador='" & CodTrabajador & "'")
Si las restas obtienes el total de días DiasTotales=Datediff("D", UltimaFechaFin, PrimeraFechaInicio)
Y si le restas los trabajados
La suma de todos los días es la datedif("D", DiasTotalesTrabajados, DiasTotales)
Claro eso es solo el total, si requieres más detallado o por registro o grabado me avisas
Hola, muchas gracias eres muy amable, creo con esto he resuelto parte, pero si no es molestia lo podrías detallar por registro.
Un saludo
Te hice un ekemplo
Escríbeme al mail para saber tu mail o ponlo acá
Y te lo envío
[email protected]
Hola, muchas gracias Luis, que amable eres, perdoname la molestia
Aquí te dejo mi email,
(xxxxxx)
Un fuerte saludo.
Ya

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas