BD access Demo

Bien lo primero decir que no tengo ni idea de VBA pero me las apaño para crear BD que son funcionales.

El problema es que tengo una BD la cual me gustaría poderla pasar a determinadas personas para que la utilicen un cierto tiempo, para ello cree en tres tablas un campo fecha y con valor pre determinado Fecha() para cada registro y en su regla de validación por ejemplo si quiero que se pueda utilizar hasta el 30 de abril le pongo <=#01/05/2013# de esta manera no pueden registrarse fechas mayores que esta (a se me olvidaba el campo fecha no esta en ningún formulario, lógicamente podría modificarse la fecha del registro), hasta aquí todo perfecto y funciona muy bien pero me di cuenta que si cambias la fecha de la configuración del PC por ejemplo si estamos a 6 de junio y la cambio a 5 de febrero la BD puede seguir utilizándose sin problema la idea es si puede hacerse tipo DEMO con alguna restricción mas eficaz que esta.

1 Respuesta

Respuesta
1

Se me ocurre, bote pronto, que podrías poner una tabla auxiliar que te recogiera la última fecha de acceso. Cada vez que se te abriera la BD comprobaría la fecha del sistema con la última fecha de acceso, y si es menor no dejar abrir (o cerrar automáticamente la BD). En caso contrario, evidentemente, te escribiría la fecha de acceso en la tabla.

Por ejemplo:

Último acceso: 31/03/12

El usuario cambia la fecha del sistema a 01/02/12

Como fecha sistema<ultimo acceso... "out".

Si te parece bien el sistema, y no tienes idea de cómo plasmarlo, me lo comentas y le echamos un vistazo. Si es así sería interesante que me comentaras con qué versión de Access estás trabajando.

parece una buena idea, si pudieras explicarme como debería hacerlo,,,,ahora mismo estoy utilizando access 2007.

por cierto visite tu web y me gusto mucho, sobre todo los pdf donde explicas tus ejemplos de manera clara.

Aquí te dejo un zip con una BD de ejemplo y un pdf explicativo (http://www.filebig.net/files/Dfd9jdL38C). Te aconsejo que antes leas el pdf, dado que sólo poner en marcha la BD ya se van a producir "cambios" en ella. Así sabrás qué es lo que está pasando.

Ya me comentarás qué tal te ha ido.

Un saludo,

Neckkito

muy buenas de nuevo,,,gracias de antemano.

he cogido tu ejemplo y lo he adaptado a mi BD todo parece correcto, abrí mi base de datos la primera vez y me advirtió que seria útil 90 días, la segunda vez ya no es necesario el aviso,,,, tengo una duda y es que en la tabla TFechFin el campo fechFinDemo el registro que se queda es 0:00 es normal o debería registrar la fecha de la primera activación + los 90 días???

me explico si la activo hoy día 05/02/2013 el registro que quedaría guardado no debería ser si no he contado mal 06/05/2013????

de todas formas en una copia he cambiado el código y he puesto vFinDemo = Date + 0 con lo cual si todo va bien esta noche a partir de la 0:00 no debería de funcionar, ya que me aviso que seria activa hasta el 05/02/2013, compruebo esto y te comento,,,,

Si abres la tabla y te sitúas sobre el campo verás que te aparece la fecha de fin de la demo.

El tema de que se vea 0:00 es debido a un error mío: el campo debería estar definido como "Fecha corta", y no como "Hora corta". Ahí se me ha colado un gazapo. Si lo cambias en la tabla verás la fecha de fin de demo sin problemas.

Por otra parte el aviso sólo debería salirte la primera vez que pones la BD en marcha. Lo acabo de probar y a mí no me sale.

Bueno... Ya me comentarás.

Bueno pues decirte que eres un fenómeno Neckkito, el código funciona perfecto, aunque tuve mis problemas al adaptarlo a mi BD, como te comente cambie el código y lo modifique con vFinDemo = Date + 0,,,todo iba bien pero cuando cumplió el plazo no funcionaba la base se abría pero quedaba digamos bloqueada... el problema venia de que en el formulario de apertura llamado PRINCIPAL tenia dos macros, una que lanzaba un Msgbox de bienvenida y otra en el evento "al abrir" que es Maximizar el formulario. resulta que estas macros no dejaban al código realizar su tarea y la solución aunque es muy sencilla me llevo su tiempo encontrarla,,,simplemente cambiar el orden de los eventos, osea poner el código en el evento "al Abrir" y las macros en el evento "al cargar" ahora funciona!!!

bien, si me lo permites "abusare" un poco mas de tus conocimientos, puesto que ahora se plantean dos problemas:

1- si empaquetas la BD con Access Developer Extensions simplemente desinstalas y vuelves a instalar y tienes la BD funcional otros 90 días, esto no seria problema ya que puedo activarla en mi PC y después empaquetarla para que el instalador lleve ya la fecha del primer acceso.

2- al cumplir el plazo de DEMO la BD ejecuta el código y la cierra, no deja acceder ella y en este si necesito tu ayuda de nuevo. la BD gestiona un concurso ornitológico.

en el formulario llamado PRINCIPAL (lleva el código demo en el evento "al Abrir") dispone de varios comandos o botones con los que se accede a los distintos formularios, la idea es que una vez cumplido el plazo de prueba no se cierre si no que se quede abierta para que el usuario pueda rescatar informes y poder enviármelos pero anulara o quedara sin funcionalidad tres comandos determinados llamados ASOCIACIONES, CRIADORES EJEMPLARES Y JUECES para no poder acceder a los formularios de registro y al hacer click en ellos no funcionen.

se podría modificar el código para esto????

no se si es mucho pedir pero con esto quedaría estupendo,,,,

El tema de la desinstalación y vuelta a instalar sí se podría arreglar (creo), pero tendría que pensar un rato en cómo hacerlo. Tengo una ligera idea de cómo podría hacerse, pero una cosa es pensar que funcionará y la otra es que realmente funcione... je, je...

Si te puedes apañar con lo que comentas de actualizar la fecha de fin de la demo antes de empaquetar pues hazlo así. Simplemente por dos circunstancias:

- No sé si podría darte una respuesta rápida a lo que te comentaba en el anterior párrafo

- No sé si funcionaría

Si te interesa le echo un vistazo, pero te pido un poco de paciencia porque o bien me sale a la primera o bien me sale a la mil, o directamente no me sale.

Pasando a tu segunda consulta si lo que quieres es que no se cierre la BD pero que sí se bloqueen los botones tienes dos opciones, que se resumen en manipular una u otra propiedad de los botones. Me explico:

1.- Tienes la propiedad "enabled" del botón. Si la desactivas verás el botón, pero este no estará activo.

2.- Tienes la propiedad "visible" del botón. Si la desactivas simplemente no verás el botón.

Yo te escribiré el código con un dos botones manipulando ambas propiedades. Como verás, vista una vistas todas. No tendrás problema para adaptarlo al resto de botones.

Te indico cómo debes hacerlo:

1.- Coges el nombre del boton (Propiedades -> Pestaña Otras -> Nombre). Yo supondré unos nombres iguales a los que comentas, pero con el prefijo cmd.

2.- Una vez tengas esos nombres apuntados debemos modificar el código. Yo te indico aquí la parte del código que debe cambiarse. Tenemos estas líneas con este bloque decisional IF:

...

If Date > vFinDemo Then
MsgBox "El periodo de demostración ha finalizado", vbCritical, "FIN DEMO"
'Salimos de la BD
DoCmd.Quit
Exit Sub
End If

...

Debes cambiar ese bloque por el siguiente:

...

If Date > vFinDemo Then
MsgBox "El periodo de demostración ha finalizado", vbCritical, "FIN DEMO"
'Bloqueamos los botones
With Me
.cmdASOCIACIONES.Enabled = False
.cmdCRIADORES.Visible = False

'Aquí irían el resto de botones que quieras desactivar u ocultar, siempre antes del End With
End With
Exit Sub
End If

...

Y con eso debería funcionarte como pides.

Ya me comentarás qué tal te ha ido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas