Abrir access en modo solo lectura a partir de una fecha

Tengo una base de datos que tiene una tabla Empresa, y dentro de esta tabla un campo Licencia de tipo fecha. Cuando la abro comparo la fecha del equipo con esta, de modo que si es menor me deja abrirlo y si es mayor cierra la aplicación. ¿Podría poner por código, que en vez de cerrarla me dejara abrirla toda en modo de solo lectura?. Os envío el código que utilizo para comprobar las fechas.

'comparamos la fecha de la aplicación con la del equipo
Dim d1 As Recordset
Set d1 = CurrentDb.OpenRecordset("SELECT Empresa.Licencia FROM Empresa;")
Dim Fecha As String
Fecha = d1![LICENCIA]
Dim FATUAL As String
FATUAL = Date
If FATUAL > Fecha Then
MsgBox "La licencia actual ha expirado. Contacte con InformáticaPcPlus en el Telf. 981 880 980.", vbCritical
DoCmd.Quit
End If

1 respuesta

Respuesta
2

Con la base de datos abierta pulsa Archivo-Opciones-base de datos actual y pon como formulario de inicio ese mismo. Y en sus propiedades-eventos-al cargar pon

Private Sub Form_Load()
If Date < Me.Fecha Then
Me.AllowEdits = False
End If
End Sub

Suponiendo que el cuadro de texto se llame fecha

Muchas Gracias, no me funciona porque el formulario Me en este caso no tiene entrada de datos solo botones que enlazan con otros formularios, pero, ¿podría declarle la función esa para cada formulario? ¿Cómo sería el código?

Claro que puedes. Ponla en el evento Al cargar del formulario que te interese. Por otro lado, si lo que quieres es inhabilitar los botones puedes poner en el evento al cargar del formulario de inicio(que dices que solo tiene dos botones)

If Date < Fecha Then
Comando11.Enabled = False
Comando12.Enabled = False
End If

Por cierto Me no es el nombre del formulario. En Vb me equivale al nombre del formulario Activo. Supón que estás en el editor de VB de un formulario, si pones Me. Nombrecliente equivale a decir

Forms! Nombredelformulario! Nombrecliente

Perdoname pero no me he explicado nada bien. Tengo un formulario que se abre automáricamente cuando abrimos la base de datos que se llama PANEL DE CONTROL, con varios botones, (uno para cada formulario)

En el evento al cargar le tengo esto:

Dim d1 As Recordset
Set d1 = CurrentDb.OpenRecordset("SELECT Empresa.Licencia FROM Empresa;")
Dim Fecha As String
Fecha = d1![LICENCIA]
Dim FATUAL As String
FATUAL = DateIf FATUAL < Fecha Then

MsgBox "Su licencia actual ha expirado. Solo podrá ver sus datos."
Forms!Presupuesto.AllowEdits = False
End If

Lo que intento es que cuando se cumpla la condición me sale el mensaje y no me deje editar los datos de todos los formularios (en este caso que me anule solo el Formulario Presupuesto, pero luego le pondría los otros). De momento solo consigo que me salga el mensaje.

No sé si ahora se entiende un poco mejor...

Supongamos que en alguna tabla tengo el valor

Me da igual si hay más campos, o como se llame

En el evento al cargar del formulario Clientes puedo poner en su evento al cargar

Cuando lo vaya a abrir aparece

Y al aceptar abre el formulario Clientes sin poder modificar.

Otra forma es, ya que parece que el formulario de los botones no se va a tocar, es que en el evento Al hacer clic de los botones pongas

If date<dlookup("fecha","tabla1") then

Msgbox"Se abrirá como sólo lectura"

DoCmd. OpenForm "clientes",,,, acFormReadOnly

end if

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas