Deshabilitar tecla Shift en Access

Como se puede desactivar la tecla shift [para desactivar los formularios de inicio] con código. Supongo que se coloca en el formulario inicio en forma de ¿modulo? ¿Evento?. Si es en modulo como se hace.

1 Respuesta

Respuesta
2
Una de las primeras preocupaciones de todos los que desarrollan aplicaciones en Access es garantizar que el usuario vea apenas los formularios concernientes a la aplicación, impidiendo acceder a la ventana de base de datos" (la inter fase de Access). Para ello, debe ser desmarcada la opción "exhibir ventana base de datos" en el cuadro Inicio (Menú Herramientas, opción Inicio...), establecer un formulario como inicial y crear barras de herramientas y menús personalizados para reemplazar los predeterminados de Access. Si usted ya está "casi terminando" una aplicación, debe tener estudiado lo suficiente para saber que esas opciones de inicio pueden ser evitadas ("pasadas") si, al comenzar la aplicación, el usuario mantiene presionada la tecla Shift. Por ello, es una pregunta frecuente en los foros como hacer para trabar la tecla Shift. Ello es fácil. Existe la ya famosa función "AlterarPropriedade", la cual les brindo abajo:
Public Function AlterarPropriedade(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
AlterarPropriedade = 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.
AlterarPropriedade = False
Resume Change_Bye
End If
End Function
Adicione esa función en un módulo general y haga una llamada a ella en el evento Al Abrir del formulario establecido como inicial de su aplicación:
AlterarPropriedade "AllowBypassKey", dbBoolean, False
Ahora, abra la aplicación una vez sin presionar la tecla Shift y de ahí para adelante ella no funcionará más. Ahora le hago la siguiente pregunta: ¿Y si usted precisa modificar la estructura de su aplicación? Segundo, el help de Access dice: "Usted debe verificar que la propiedad AllowBypassKey esté definida como True cuando depure la aplicación ". ¿Y cuándo es que usted acaba de depurar una aplicación? Yo, por ejemplo, no acabo de depurar ningún de los que ya construí hasta hoy.
De esa forma, es necesario guardar una copia de la aplicación con la línea de comando descrita arriba sin funcionamiento ("comentada"). Esa copia es la que será usada siempre que usted precise hacer modificaciones en la estructura (para ser creativos y originales, vamos llamar esa copia de "master"). Después de hacer las extremas modificaciones, usted precisa grabar esa copia "master", crear una copia con la línea válida y abrirla por lo menos una vez antes de entregarla al usuario. Usted, como yo, ¿debe hallar eso muy arriesgado (ya pensó si usted se olvidó de guardar la "master" con la línea "comentada"?). Su aplicación quedará "deshabilitada".
Entonces, yo le presento una solución para ello, o sea, deshabilitar la tecla Shifit sin deshabilitar la aplicación. Para utilizarla, es necesario que la aplicación tenga la "seguridad a nivel de usuario". En este caso, basta añadir el siguiente código en el evento Al Abrir del formulario de inicio:
If CurrentUser() <> "xxxxx" Then
AlterarPropriedade "AllowBypassKey", dbBoolean, False
Else
AlterarPropriedade "AllowBypassKey", dbBoolean, True
End If
Donde "xxxxx" es el nombre de un usuario del grupo que tiene todas los permisos de acceso (Administradores, por ejemplo). De esta forma, si es ese el usuario que está "logando", la propiedad "AllowBypassKey" será definida como True, tornando la tecla Shift nuevamente activa. Pero ello, obviamente, sólo funcionará la próxima vez que la aplicación se abra.
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas