Bloquear teclas en access 97

Ayudame. Realizo una aplicació en access 97, y necesito que cuando cargo información en el formulario A no se permita el uso de las teclas {TAB}y {PAG DWN}, para no permitir el ingreso de más que un solo registro.
¿Cómo puedo hacerlo?

1 respuesta

Respuesta
1
Voy a intentar explicarte como hacerlo. Respecto a la tecla TAB, es muy sencillo, solo tienes que modificar la propiedad "Cycle" del formulario poniendo como valor "Regustro Activo", así solo te moverás por el registro que tengas en pantalla. Al pulsar el TAB volverá al primer campo del formulario de ESE MISMO REGISTRO, no del siguiente. Lo puedes hacer en diseño (PROPIEDAD DEL FORMULARIO->OTRAS/CICLO.
Pruébalo, pero esto solo soluciona lo del TAB, no del Pag. Down, que es una tecla propia de Access con su propio funcionamiento.
Para solucionar lo del Pag. Down hay que "jugar" con el código como te explico a continuación. Este código que te detallo te impide que insertes un nuevo registro pulses la tecla que pulses, es decir, nos daría igual el Pag. Down, que el TAB que las teclas de función, independientemente de la propiedad Cycle que te decía en el párrafo anterior. Por ello, debes utilizar este código y omiir lo de la propiedad Cycle, ya que solo te la he indicado a nivel de que lo veas por curiosidad.
Para que el formulario funcione como entrada de datos pero no te deje moverte de registro, debes hacer lo siguiente:
1º En las propiedades de datos del formulario, en diseño, debes poner estas opciones:
- Permitir Edidiciones = No
- Permitir Agregar = Si
- Entrada de Datos = Si
2º En el evento Form_AfterInsert() poner (este es el evento que se produce al pulsar el TAB, Pag. Down, etc, tras insertar el registro introducido):
'El formulario solo tiene como origen de datos el registro recien insertado unicamente
Me.RecordSource = "SELECT * FROM TablaOrigenDelFormulario WHERE CampoClave1 =" & Me.CampoClave1 ... '(aqui debes poner los campos de la tabla y del formulario que identifiquen unicamente el registro recien insertado, ninguno mas)
Me.DataEntry = False
Me.AllowAdditions = False
Me.AllowEdits = True
Con esto, el formulario te permitirá introducir un nuevo y único registro, y tras insertarlo dejara de ser u formulario de introducción de datos para pasar a ser un formulario de solo edición y con el único origen de datos del registro recién insertado.
Pruébalo y si tienes alguna duda o consulta no dudes en preguntarme. Esto tiene que funcionarte perfectamente, ya que lo acabo de probar y es exactamente lo que quieres.
Un saludo, suerte en tu desarrollo y ya sabes que aquí estoy para lo que necesites.
Óscar L.M.v.
Muchísimas gracias por tu respuesta
La primera sugerencia esta super, ahora bien en la segunda tengo un poquito de problema por favor si puedes aclararme más. Supone que tengo la clave CLIENTES con los campos.: ID_CLIENTE (Autonummerico) y NOMBRE.
Según entiendo tengo que :
1º En las propiedades de datos del formulario, en diseño:
- Permitir Edidiciones = No
- Permitir Agregar = Si
- Entrada de Datos = Si
Ok, hasta qui voy bien, pero en la segunda parte yo escribo:
SELECT * FROM CLIENTES WHERE ID_CLIENTE = &Me.ID_CLIENTE&
Si es así, me da error al tratar de agregar el código, tal vez no entendí bien el punto, ¿podrías reforzar un poquito más lo que debo hacer?
Gracias anticipadas.
Saludos.
De nuevo sReyes!
Me alegro de saber de ti y más aun si me dices que la primera opción te ha gustado... Pues espera a ver la segunda... je je je Me he superado a mi mismo... ;-)
No, ya en serio, la segunda es la mejor solución ya que con ello te dará igual que pulse Pag Down, Tab, Fxx o las teclas del teléfono móvil... FUNCIONARA EN TODOS LOS CASOS! Es importante que funcione con todas las teclas y que, conozco a uno (yo!) Que no sabia de la existencia de la función de la tecla Pag Down creyendo que controlando la tecla TAB (como el primer ejemplo) taba todo solucionado... Y me has descubierto, gracias a tu pregunta, que tengo que realizar en algunas aplicaciones, los cambios que te planteo en la opción 2... Muchas gracias a ti también!
Ya ahora, a lo que te interesa, voy a ver onde ta el fallo:
- En lugar de
SELECT * FROM CLIENTES WHERE ID_CLIENTE = &Me.ID_CLIENTE&
debes poner
"SELECT * FROM CLIENTES WHERE ID_CLIENTE =" & Me!ID_CLIENTE
Tal y como (exactamente) esta aquí encima. El & lo que hace en concatenar texto (ejemplo "A" & "B" = "AB"), por lo que lo que estamos haciendo es concatenar la sentencia al valor que debe llevar (Ejemplo suponiendo que Me! ID_Cliente sea 3:
"SELECT * FROM CLIENTES WHERE ID_CLIENTE =" & Me!ID_CLIENTE
es como decir
"SELECT * FROM CLIENTES WHERE ID_CLIENTE =" & 3
o lo que es lo mismo
"SELECT * FROM CLIENTES WHERE ID_CLIENTE = 3"
Que es la que queremos ejecutar...
Pruébalo y ya me dirás. Si tienes alguna otra consulta no dudes en decírmelo. Un saludo, cuidate y suerte en tu desarrollo!
Óscar L.M.V.
Perdón por no contestarte antes, no dudo que tu respuesta me funcione, sabes trate de ponerla en mi formulario, pero me dio error, creo que es sobre la sintaxis (pero no de la función que me das), no he tenido mucho tiempo para chequearlo, sin embargo cualquier cosa te contaré, mientras tanto te agradezco muchísimo tu apoyo. Cualquier cosa te escribo.
Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas