Borrar el valor de un campo concreto

Lo primero agradecer de antemano la ayuda pestada. El problema que me ocupa ahora es que quiero que cada 1 de cada mes y a una hora determinada, borrar el valor de un campo en concreto y en una tabla en concreto.

Con una macro, lo único que veo es borrar el registro, y me borra el id y en consecuencia ( viéndolo en línea recta) es toda la línea, pues borrando el id se borra el registro entero, y yo lo que necesito es borrar el dato de un campo en concreto consevando el registro, ya que el resto de los campos me interesa mantenerlos.

3 respuestas

Respuesta
1

Entonces habrá que plantearlo desde otro punto de vista, en lugar de borrar el registro: modificar el campo (y si lo admite su diseño, incluso se le podrá adjudicar el valor NULL).

Lo de hacerlo en un momento concreto y repetitivo habrá que plantearlo como una nueva aplicación (especifica para ese único uso) que al abrirse modifique el dato de la tabla (tabla que estará vinculada) y a continuación se cierre.

El 'cuando' solo lo podrá hacer una maquina que este encendida y a la que se le añadirá esa tarea en el/su programador de tareas, dejar Access en marcha para esa ejecución mensual no es una opción aconsejable.

La macro AutoExec puede ejecutar la consulta de actualización y tras ello cerrar la base.

Respuesta
1

Efectivamente, el problema lo tienes en lo que te dice Enrique, ¿estará encendido el ordenador? ¿Estará abierto el formulario donde pongas la instrucción? Porque para dejar en blanco un valor de un campo en concreto puedes utilizar algo como

If day(date())=1 and now()=#17:43# then

docmd.runsql"update clientes set ciudad="""" where idcliente=.....

Lo de Idcliente es un ejemplo, ya que puede ser cualquier cosa que fije el criterio que diferencia un registro de otro

¡Gracias!

Access estará cerrado y se ha de ejecutar la instrucción el 1 de cada mes y la hora a partir de las 7:00 horas. Mirando las posibles soluciones, he caído en que solo lo haría a la hora en punto y no a partir de esa hora. Entonces sin probar todavía la solución que me dais, solo pondré el día, ya les comentaré.

Respuesta
1

No puede utilizar NOW() porque le va a dar la fecha y hora, en su defecto utilice TIME. Hay varias formas de hacerlo dependiendo la forma como trabaje. Utilizo 2 formularios.

FrmPrueba ----> Puede ser cualquier otro formulario

Voy a actualizar el campo sueldo cuando se cumpla la fecha y hora. En este formulario programo los eventos Al cronómetro e Intervalo de cronómetro. Estos eventos debe programarlos en cada formulario de la aplicación, no me funcionó con un único formulario.

Intervalo de cronómetro=1000

 Al cronómetro

Private Sub Form_Timer()
   If Day(Date) = 24 And Time = #8:51:00 AM# Then
       DoCmd.OpenForm "frmActualiza"
    End If
End Sub

Cambie 24 por 1 en su formulario y fije la hora de acuerdo con sus necesidades. Observe que al cumplirse con el día y la hora me abre el formulario frmActualiza.

Este es un formulario que no tiene bordes y tiene los siguientes eventos.

Al cargar

Private Sub Form_Load()
  CurrentDb.Execute "UPDATE tblempleados set sueldo=Null"
End Sub

Intervalo de cronómetro=1000

Al cronómetro

Private Sub Form_Timer()
   DoCmd.Close acForm, Me.Name
End Sub

Este es el resultado después de actualizar el campo sueldo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas