CMS modules by everest poker.

Deshabilitar tecla shift al abrir una BD

Imprimir
Valoración del Usuario:  / 12
MaloBueno 
Categoría: Teórico-práctico
Escrito por Neckkito

 

Si queréis bajaros el artículo en pdf lo podéis hacer aquí.


Índice de contenidoShift


DESHABILITANDO, DESHABILITANDO...
IMPORTANTE
¿EXISTIRÍA SOLUCIÓN SI…?
ACCESS 2007 (Y POSTERIOR). ¿QUÉ PASA SI LO COMBINO CON LA OCULTACIÓN DEL RIBBON?
PARA FINALIZAR...

 

DESHABILITANDO, DESHABILITANDO...
Hemos visto en el artículo sobre seguridad diferentes bloqueos para adoptar medidas de seguridad y proteger con eficacia nuestra aplicación, pero también hemos visto que el “truco” para que el administrador pueda abrir sin restricciones una BD consiste en mantener pulsada la tecla mayúsculas (shift) mientras se abre la BD.

 

En este artículo trataré de explicar de manera sencilla cómo podemos eliminar la acción de la tecla shift, y bloquear totalmente la BD.


Antes de comenzar debéis tener en cuenta una cosa extremadamente importante: realizado el proceso, no se podrá volver a abrir la BD para realizar modificaciones. En definitiva, que vamos a perder el control sobre la BD como administrador (bueno... esto es matizable, pero en principio, si somos un poco novatos, mejor nos quedamos con esta idea, que nos obligará a ir con mucho cuidado si queremos hacer pruebas).


Mi recomendación: no deshabilitar la función de la tecla shift. Y, si no tenemos más remedio, realizar el proceso cuando nos hayamos asegurado bien de que la aplicación funciona correctamente (con un buen periodo de testeo).


Finalmente, si seguimos con la idea de “emparedar” la aplicación, antes de realizar un determinado paso en el proceso que veremos a continuación (y sobre el que llamaré la atención en su momento) deberíamos guardar una copia de la BD para tener un “original” al que recurrir si hay problemas.


Ni que decir tiene que todo lo que se va explicar debe combinarse con el establecimiento de las opciones de no mostrar ventana base de datos o panel de exploración, según la versión de Access que utilicemos, y la restricción de los diferentes menús “generales” para los usuarios. Os recuerdo que esto está explicado en el artículo mencionado al principio.


Dicho lo anterior vamos a utilizar una función “famosa” para estos menesteres que se denomina AlterarPropiedades


Manos a la obra:


1.- Abrimos nuestra base de datos y pulsamos ALT+F11. Se nos abrirá el VBE (Editor de Visual Basic).
2.- Nos vamos al menú Insertar->Módulo
3.- En ese módulo escribimos la función antes mencionada:


---
Public Function AlterarPropiedades(strPropName As String, _
        varPropType As Variant, varPropValue As Variant) As Integer
    Dim dbs As Database, prp As Property
    Const conPropNotFoundError = 3270
    Set dbs = CurrentDb
    On Error GoTo Change_Err
    dbs.Properties(strPropName) = varPropValue
    AlterarPropiedades = True
Change_Bye:
    Exit Function
Change_Err:
    If Err = conPropNotFoundError Then ' Propiedad no ha sido localizada.
        Set prp = dbs.CreateProperty(strPropName, varPropType, varPropValue)
        dbs.Properties.Append prp
        Resume Next
    Else
            ' Error desconocido.
        AlterarPropiedades = False
        Resume Change_Bye
    End If
End Function
---


4.- Ahora es necesario obligar a que, al abrir la BD, se abra un formulario. Aunque esto está explicado en el artículo sobre seguridad lo resumo rápidamente aquí:
Botón de inicio (2007) o menú Archivo (2010)-> Opciones de Access -> Base de datos actual-> Mostrar formulario: 


Para Access 2003 el “camino” es


5.- Ponemos el formulario que va a ser nuestro inicio en vista diseño y sacamos sus propiedades. Nos vamos a Pestaña Eventos->Al abrir y generamos el siguiente código (nos situamos en la parte blanca que hay a la derecha del evento->Click sobre el botón que nos aparece con puntos suspensivos->Generar código):


---
Private Sub Form_Open(Cancel As Integer)
    AlterarPropiedades “AllowBypassKey”, dbBoolean, False
End Sub
---


6. Importante: es en este momento cuando debemos realizar la acción de salvaguardia de nuestra aplicación. Para ello al código anterior le situamos una comilla simple delante de cada línea del código anterior con la finalidad de convertir el procedimiento en un comentario. Con ello evitamos que, al abrir la BD, se ejecute el código y se bloquee definitivamente la BD.


Para mayor claridad el código debería quedar así:


---
'Private Sub Form_Open(Cancel As Integer)
'AlterarPropiedades "AllowBypassKey", dbBoolean, False
'End Sub
---


Cerramos la BD y creamos una copia, a la que identificamos como “Original”.


Volvemos a abrir la BD “no original”.


7.- Volvemos a editar las propiedades de nuestro formulario de inicio hasta acceder al código del evento “Al abrir”. Una vez en el código eliminamos las comillas simples de cada línea, de manera que ahora sí se pueda ejecutar el código.
8.- Para que el código pueda “activarse” es necesario abrir la BD de manera “normal” una sola vez. Para ello cerramos la BD y la volvemos a abrir (sin presionar shif).
9.- Una vez abierta la volvemos a cerrar. Ahora ya habremos “activado” el bloqueo de la tecla shift y, a partir de este momento, nuestra BD estará “emparedada” sin posibilidad de acceso a las “profundidades de la aplicación”


IMPORTANTE
Lo anterior bloquea la BD, pero no bloquea el código VB. Eso significa que si abrimos la BD y pulsamos ALT+F11 se nos abre el VBE con el código visible a la vista.


Para evitar que se pueda acceder al código, de nuevo, os remito al artículo sobre seguridad que comentábamos al principio de este artículo.


¿EXISTIRÍA SOLUCIÓN SI…?
Volver atrás lo hecho, una vez hecho, sí es posible si nos guardamos un “as en la manga”. Es decir, que si hemos creado un formulario al que sólo nosotros, como administrador, tenemos acceso, podemos programar un botón de comando para re-habilitar la funcionalidad de la tecla shift.


El proceso es muy sencillo, ya que a dicho botón de comando simplemente le deberíamos asignar este código:



Private Sub cmdHabilitar_Click()
    AlterarPropiedades "AllowBypassKey", dbBoolean, True
    MsgBox "La aplicación se cerrará para aplicar los cambios", vbInformation, "REINICIO"
    DoCmd.Quit
End Sub


Lógicamente, deberíamos abrir inmediatamente la BD con shift pulsado porque si no volvería a actuar el código del formulario de inicio.


Para que quede más claro os podéis bajar esta mini-aplicación de ejemplo aquí.


ACCESS 2007 (Y POSTERIOR). ¿QUÉ PASA SI LO COMBINO CON LA OCULTACIÓN DEL RIBBON?
Antes de empezar con esto supongo que alguien se preguntará: “¿Y cómo se oculta el ribbon?”. Pues para ocultarlo podríamos, por ejemplo, en el formulario que cargamos al inicio añadir el siguiente código en el evento de formulario “Al cargar”:



Private Sub Form_Load()
    DoCmd.ShowToolbar "Ribbon", acToolbarNo
End Sub


Lógicamente, lo único que tendremos que combinar son los dos códigos anteriores para poder conseguir ese “doble efecto”, de manera que podríamos escribir, en el evento “Al cargar” del formulario de inicio:



Private Sub Form_Load()
    DoCmd.ShowToolbar "Ribbon", acToolbarNo
    AlterarPropiedades “AllowBypassKey”, dbBoolean, False
End Sub


Finalmente, si quisiéramos volver a mostrar el ribbon la línea de código que nos haría lo anterior sería:



DoCmd.ShowToolbar "Ribbon", acToolbarYes


Para que lo podáis comprobar in situ podéis bajaros esta otra aplicación de ejemplo aquí.


PARA FINALIZAR...
Creo que eso es todo lo que os tenía que explicar sobre este tema. Espero que con lo que hemos aprendido podáis “emparedar” con toda tranquilidad vuestras BD's.


Un saludo, y...


¡suerte!

 

Tuesday the 27th. Joomla 2.5 Templates. Neckkito's baby 2012 --- Hosted by: www.siliconproject.com.ar
Copyright 2012

©