Código para comparar año en access

Y todas. Me estreno en este foro. El tema es que tengo una base access 2002 para realizar la contabilidad del año. En el formulario de entrada de datos tengo un cuadro combinado ([Años]) para seleccionar el año y que filtre por el resultado. Luego en el campo de Fecha donde va la fecha de la factura despues de actualizar he puesto este evento:
Private Sub FECHA_AfterUpdate()
If IsNull(Forms![CUENTAS POR centro]![años]) Then ' Compruebo que en el cuadro combinado hay un año seleccionado si es nulo elimino la entrada
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdSelectRecord
Me.Recordset.Delete
DoCmd.SetWarnings True
Forms![CUENTAS POR centro]![años].SetFocus ' Vuelvo el foco al cuadro combinado y lanzo el aviso
MsgBox "No has elegido el AÑO sobre el que vas a trabajar, elígelo antes de nada"
Else ' Si no es nulo asigno el año de la fecha al campo AÑO y el mes al campo MES
AÑO = Year([FECHA])
MES = MonthName(Month([FECHA]))
If AÑO <> Forms![CUENTAS POR centro]![años].Value Then 'Compruebo si el año que se ha introducido es igual al del cuadro combinado y si no lo es lanzo un mensaje y elimino
MsgBox "EL AÑO DE ESTA FECHA NO ES IGUAL AL AÑO ACTUAL. SE ANULA"
DoCmd.SetWarnings False
DoCmd.RunCommand acCmdSelectRecord
Me.Recordset.Delete
DoCmd.SetWarnings True
End If
End If
End Sub
El caso es que cuando abro y filtro la primera vez hace bien su función. Pero si vuelvo a filtrar el ultimo if ( el que comprueba si el campo año es igual a al año que aparece en el combo) muestra el mensaje de que no son iguales y elimina el registro aunque sea el mismo año. No logro saber por qué.

1 Respuesta

Respuesta
1

Le está indicando que si en Null elimine el recordset, debe ser algo como:

If IsNull(Forms![CUENTAS POR centro]![años]) Then ' Compruebo que en el cuadro combinado hay un año seleccionado si es nulo elimino la entrada

Forms![CUENTAS POR centro]![años].SetFocus ' Vuelvo el foco al cuadro combinado y lanzo el aviso
MsgBox "No has elegido el AÑO sobre el que vas a trabajar, elígelo antes de nada"

Exit sub

Else ...

End If
Es decir falta el Exit Sub para cancelar el procedimiento

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas