Rellenar campos con condiciones de fechas

Aprovecho vuestra generosidad de aportar enseñanzas y os planteo la siguiente cuestión

Tengo dos campo: inicio de actividad y fin de actividad. Y otro campo donde le llamo estado "alta", "baja"

Me gustaría que este último campo me lo rellenase con "alta actividad" cuando pongo fecha en inicio de actividad, y en el momento que escriba una fecha de fin de actividad cambiase el texto a "alta actividad".

Lo he intentando con este pero supongo que es incompatible

Private Sub Form_Current()
If Me.INICIOACTIV <= Date Then
Me.ESTADO = "ALTA ACTIVIDAD"
End If
If Me.FINACTIV <= Date Then
Me.ESTADO = "BAJA ACTIVIDAD"
End If
End Sub

No sé si sería mejor con un Silm pero no tengo muy claro como utilizarlo

=Silnm(Fecha()<=[INICIOACTIV];ESTADO;"ALTA ACTIVIDAD”)

=Silnm(Fecha()<=[FINACTIV];ESTADO;"BAJAACTIVIDAD”)

1 respuesta

Respuesta
1

En el evento "después de actualizar" de inicioactiv pon este código :

If Not IsNull (me.inicioactiv) Then

Me.estado="ALTA actividad" 

End if

Y con bajaactiv haces lo mismo.

El código que tú tienes no hace lo que pides ( que ponga alta o baja si hay fecha), sino que lo pone comparando con la fecha actual. Además, el evento " al activar el registro " se produce cada vez un te mueves a un registro, no al cambiar al valor de un campo.

GRACIAS... ¿y si quiero que el campo de estado me lo vuelque a la tabla? ¿en control del cuadro de texto tengo que poner Estado?
Es un campo que he creado despues dener datos ya incluidos por eso había pensado "activar el registro" para que me rellenase los campos directamente y no tener que pinchar en las fechas para actualizar

Efectivamente, para que en el cuadro de texto "Estado" del formulario lo que pongas en él te quede en la tabla, has de poner como "origen de control" de ese campo de texto el nombre del campo de la tabla (siempre que el formulario tenga como origen esa tabla, claro).

Otras formas, más "complicadas", serían hacerlo por medio de una SAL de datos anexados o de un recordset.

Para actualizar los datos ya existentes, sí te serviría ese evento (con el código "corregido" que te indico), pero te obligaría a pasearte por todos los registros.

Una forma más sencilla sería hacerlo con una consulta de actualización, por ejemplo:

UPDATE NombreTabla SET Estado='Alta actividad' WHERE INICIOACTIV Is Not Null

o con más condiciones (por ejemplo que además Estado aún no tenga valor):

UPDATE NombreTabla SET Estado='Alta actividad' WHERE Estado Is Null AND INICIOACTIV Is Not Null

o (que no haya fecha de fin de la actividad):

UPDATE NombreTabla SET Estado='Alta actividad' WHERE INICIOACTIV Is Not Null AND FINACTIV Is Null

De la misma forma harías otra consulta de actualización para los que dependan de FINACTIV.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas