Si se rellena un campo de Access, otro se bloquea y viceversa

Tengo una tabla con dos campos: Junio y Septiembre.
La cosa es que en el formulario si se rellena el campo Junio el de Septiembre quede bloqueado o no se pueda rellenar o darle un valor nulo o algo parecido. Y si se rellena el de Septiembre al reves que no se puede rellenar el de Junio

1 respuesta

Respuesta
1

Te adjunto el código de un ejemplo en el que tenemos dos campos de texto llamados Junio y Septiembre. Al rellenar el valor en uno de ellos se establece a Nulo el valor del otro y se bloquea. Esto se realiza usando el evento AfterUpdate de cada uno de los dos controles.

Una sola consideración más. Como te decía el ejemplo usa el evento AfterUpdate, es decir, cuando cambias el valor en uno de ellos sucede lo comentado. Pero al abrir el formulario si en él nuestras un registro ya existente los dos campos están desbloqueados. No sucede nada si solo usas el formulario para insertar registros. Si lo usas para ver o editar registros existentes debieras de añadir código al evento Al activar Registro para detectar cual tiene un valor y bloquear el otro (el código es prácticamente igual a este).

Cordiales saludos.

Option Compare Database
Option Explicit
Private Sub Junio_AfterUpdate()
On Error GoTo Err_Junio_AfterUpdate
    Dim miJunio As String
    miJunio = Me.Junio.Value
    If Not IsNull(miJunio) Then
        Me.Septiembre.Enabled = True
        Me.Septiembre.Value = Null
    Else
        'aquí lo que quieras si no hay valor enjunio
    End If
Exit_Junio_AfterUpdate:
    Exit Sub
Err_Junio_AfterUpdate:
    MsgBox Err.Description
    Resume Exit_Junio_AfterUpdate
End Sub
Private Sub Septiembre_AfterUpdate()
On Error GoTo Err_Septiembre_AfterUpdate
    Dim miSeptiembre As String
    miSeptiembre = Me.Septiembre.Value
    If Not IsNull(miSeptiembre) Then
        Me.Junio.Enabled = True
        Me.Junio.Value = Null
    Else
        'aquí lo que quieras si no hay valor septiembre
    End If
Exit_Septiembre_AfterUpdate:
    Exit Sub
Err_Septiembre_AfterUpdate:
    MsgBox Err.Description
    Resume Exit_Septiembre_AfterUpdate
End Sub

¡Gracias! Me ha sido muy útil. Ahora querría saber si me puedes ayudar con otro problema, se trata de calcular la nota media final, pero quiero que por ejemplo si tiene tres asignaturas y en junio sólo tiene dos notas en vez de las tres, que no haga la nota media y que me diga un mensaje con algún texto para que me avise que falta una nota.

Luego ya si está relleno las tres notas ya sea junio o septiembre que haga la media, pero si al final entre junio y septiembre sigue faltando una nota que avise.

Resumiendo que haga la media pero si están rellenas las tres notas, si hay alguna asignatura que no tiene nota ni en junio ni septiembre que salga el error de que faltan notas.

Espero haberme explicado bien.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas