Access: actualizar campos al variar algún dato determinado. Objeto de automatización "Me"

Apreciado Veto:
A ver si me puedes resolver un mensaje.
En un formulario dispongo de un campo fecha, que quiero se actualice esa fecha desde el mimo momento en que haga un cambio en algún otro campo. En otra consulta que realicé me indicaron que incluyera lo siguiente en la propiedad del campo después de actualizar:
me.[campodefecha] = date()
Sin embargo, al ejecutarse me aparece el mensaje: La expresión Después de actualizar que introdujo como valor de la propiedad de evento produjo un error: el objeto no contiene el objeto de automatización 'Me'.
¿Sabrías decirme porqué ocurre esto y cómo solucionarlo?
Gracias por tu ayuda.

1 respuesta

1
Respuesta de
Qué tal, realmente el cuestionamiento es sencillo, aunque te pido me des más detalles.
¿Qué versión de Access utilizas?
¿Este campo de fecha que tienes en el formulario es un campo existente en alguna tabla?
¿El campo tiene definida la propiedad ValorPredeterminado en =Fecha()?
Ingresa al control de fecha en su procedimiento de BVA y aquí te vas al menú "Depuración" y das clic en "Compilar" Seguramente te marcará inmediaamente el error.
El evento Después de Actualizar - AfterUpdate() - no funcionará en tu campo porque la acción sólo contempla a este campo y no a los demás. Lo cuallo hace inservible.
Borra ese procedimiento.
Si lo que quieres una función de auditoría de campos, es decir, que cada vez que alguien cambie un registro se guarde la fecha en un campo especial como [FechaAuditoria] te sugiero que utilices strSQL como función pública para que cada vez que cambien cualquier campo de la tabla, se guarde un registro en otra donde indique el campo y la fecha y hora en que fueron cambiados.
Esto llega a ser algo difícil si no conocemos el lenguaje en BVA.
Te comento que no soy programador como tal.
*** PROPUESTA 1 ***
Cambio en un campo en específico
Te propongo lo siguiente (es muy sencillo):
1. En tu tabla crea un nuevo campo que se llame [Cambioultimo]
2. En el formulario que está basado en esa tabla en vista diseño agrega el campo que creaste (Agregar campos existentes)
3. Elige cualquier campo dentro del formulario, el que quieras y sobre todo aquel que modifiquen mucho( todos excepto [Cambioúltimo]. Te vas a propiedades / Eventos / Después de actualizar y escribes esto:
Me.Cambioultimo = Now()
4. Listo! Prueba en vista formulario cuando cambias un dato del campo que elegiste automáticamente cambia y se guarda la fecha y hora de modificación.
*Nota:  Es muy sencillo y tiene la limitación de que si cambian otro campo no se vea reflejado éste.
*** PROPUESTA 2 RECOMENDADA ***
Cambio en un cualquier campo
1. Realiza sólo los pasos 1 y 2 de la propuesta anterior.
2. Toma tu formulario donde están todos esos campos en vista diseño, luego en propiedades del formulario en cuestionen te vas a Eventos / En datos no guardados y escribes lo mismo, debe verse así:
Private Sub Form_Dirty(Cancel As Integer)
Me.Cambioultimo = Now()
End Sub
LISTO! Cualquier cambio en cualquier campo se guardará.
Te aseguro que un usuario avanzado en código te propondrá algo mucho mejor.
Espero haber sido de ayuda.
Saludos.
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje