Access - Bloquear con password el modo de edicion en access 2003

 
Vista:
sin imagen de perfil

Bloquear con password el modo de edicion en access 2003

Publicado por Jorge N. (3 intervenciones) el 20/08/2013 21:27:12
Hola y buenas tardes...

tengo un sistema en Access 2003 el cual es utilizado por personal de produccion de la empresa en donde trabajo, pero a veces requiero de hacer algun cambio desde el equipo donde se utiliza. lo que quiero es bloquear el modo de edicion para que en el momento que estoy en ese equipo el personal no intente entrar presionando unicamente el shift sino que tambien me pida un password para evitar problemas y que le vayan a mover al sistema.

De antemano les agradezco la ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jose R
Val: 71
Ha disminuido su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Bloquear con password el modo de edicion en access 2003

Publicado por Jose R (129 intervenciones) el 20/08/2013 22:17:41
Saludos Jorge

la edicion hasto donde yo se no se puede bloquear con password, lo que si puedes bloquear en el editor de VB
lo que tu necesitas es ponerle seguridad al sistema para esto te recomiento el siguiente codigo que consegui aqui mismo, funciona a la perfeccion y te quita de muchos problemas con los usuarios

te pongo el texto tal cual lo consegui yo para que veas la explicacion, esta un poco largo, pero sirve de mucho



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



espero te sirva, combinando esto con: desactivar las teclas especiales de access (special Keys), panel de navegacion, shortcut menus y los menus completos, podras obtener una seguridad casi total, al menos para los usuarios que no tengan mucha experiencia en access, solo ten el cuidado de hacer la copia del sistema antes de bloquearla

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Bloquear con password el modo de edicion en access 2003

Publicado por 2pl (461 intervenciones) el 21/08/2013 09:30:44
El sistema que yo utilizo es el siguiente:
Tengo dos BD, una para los objetos (informes,formularios,modulos etc...) y otra para las tablas, esta la convierto a mde y sus tablas las vinculo a la MDB de desarrollo que solo utilizo yo, y se la paso a los usuarios una vez convertida en mde. Los usuarios en una bd mde no pueden modificar los formularios, los informes, los modulos y para mayor seguridad y no puedan tocar ni tablas ni consultas, tengo este codigo

Private Sub ocultar_Click()
‘ para ocultar las tablas
For Each myObject In Application.CurrentData.AllTables
If Not (myObject.Name Like "Msys*") Then
Application.SetHiddenAttribute acTable, myObject.Name, True
End If
Next myObject

‘ para ocultar las consultas
For Each myObject In Application.CurrentData.AllQueries
If Not (myObject.Name Like "Msys*") Then
Application.SetHiddenAttribute acTable, myObject.Name, True
End If
Next myObject
End Sub

Private Sub mostrar_Click()
‘ para mostrar las tablas
For Each myObject In Application.CurrentData.AllTables
If Not (myObject.Name Like "Msys*") Then
Application.SetHiddenAttribute acTable, myObject.Name, False
End If
Next myObject

‘ para mostrar las consultas
For Each myObject In Application.CurrentData.AllQueries
If Not (myObject.Name Like "Msys*") Then
Application.SetHiddenAttribute acTable, myObject.Name, False
End If
Next myObject
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar