¿Como mover el cursor en forma vertical en un formulario continuo de access ?
Tengo un formulario en access, configurado en vista predeterminada como formulario continuo donde están ordenados los campos en forma tabular, lo que deseo es poder mover el cursor en forma vertical (arriba o abajo) dentro del mismo control, igual que cuando está en la vista hoja de datos.
1 respuesta
No se a que te refieres con mover arriba o abajo como en hoja de datos. Que yo sepa en vista hoja de datos o te mueves con la barra de desplazamiento vertical o con la rueda del ratón. En el formulario continuo es exactamente igual. En las propiedades del formulario continuo mira si tiene Selectores de registro en Si y Barras de desplazamiento al menos con la vertical.
Perdón por no dejarme entender, daré mas información al respecto:
Tengo un formulario donde pliego los registros en forma TABULAR, por ejemplo: Despliego lista de Alumnos que contiene los siguientes campos: Código, NombreAlumno, Nota1, Nota2, Nota3, etc. los primeros 2 campos están bloqueado para evitar que modifiquen los datos, en los otros 3 campo debo colocar sus respectivas calificaciones; lo que deseo es poder mover el Cursor o Focus de un registro a otro en el mismo campo, utilizando las teclas flecha arriba y flecha abajo; de tal manera que cuando tenga que colocar Valores para Nota1, al presionar la tecla fecha abajo, el enfoque se mueva al campo Nota1 del siguiente registro (siguiente alumno) sin que Nota2 o Nota3 o cualquier otro campo reciban el enfoque; de igual manera al presionar la tecla fecha arriba, el enfoque se mueva al campo Nota1 del anterior registro.
Supongamos que el cuadro de texto se llama así, Nota1. En sus Propiedades-eventos-Al bajar una tecla, crea un procedimiento de evento y entra Private Sub y End Sub escribe
Select Case KeyCode
Case 40
DoCmd. GoToRecord,, acNext
Nota1. SetFocus
Case 38
DoCmd. GoToRecord,, acPrevious
Nota1. SetFocus
End Select
Así cuando el cursor este en el cuadro de texto Nota1 de cualquier registro, si pulsas la tecla arriba o abajo, se va al registro anterior o al siguiente.
Muchas gracias, pero solo funciona después de haber introducido o cambiado el valor, pero cuando el cuadro de texto no ha sufrido ningún cambio, sólo funciona para la primera pulsación, para la segunda pulsación el enfoque se va a Nota2. Lo que quiero es que funcione como en el excel
No has debido ponerlo bien porque funciona perfectamente. En la imagen puedes ver que el cursor está en un campo
Ahora pulso flecha abajo
Y ahora pulso flecha abajo
Y lo mismo con la flecha arriba.
Si quieres mándame un mensaje a [email protected] y te mando un ejemplo. Si lo haces, en el asunto del mensaje pon tu alias Quereymba, ya que si no sé quien me manda un correo ni lo abro.
Si ahora funciona pero provoca errores cuando estoy en el 1er registro y pulso flecha arriba o estoy en el último registro y precioso flecha abajo.
Por otra parte cuando el campo o cuadro de texto almacena fecha la opción de auto relleno de fecha ya no despliega al presionar ALT+Flecha abajo o si despliega no puedo mover el cursor hacia arriba ni abajo
En un formulario en vista hoja de datos, cuando estás en el último registro y pulsas la flecha abajo, se va al mismo cuadro de texto de un registro nuevo, EXACTAMENTE IGUAL QUE HACE EL CÓDIGO QUE TE PUSE. Por otro lado, aunque en principio no tiene sentido que si estás en el primer registro pulses la flecha arriba, supongamos que la tabla tiene Id alumno, nombrealumno, etc
Puedes poner el siguiente código en el cuadro NombreAlumno
Private Sub Nombrealumno_KeyDown(KeyCode As Integer, Shift As Integer)
If DCount("nombrealumno", "alumnos", "idlalumno<=forms!alumnos!idalumno") = 1 Then
Select Case KeyCode
Case 40
DoCmd.GoToRecord , , acNext
NombreAlumno.SetFocus
Case 38
DoCmd.CancelEvent
End Select
ElseIf DCount("nombrealumno", "clientes", "idalumno<=forms!alumnos!idalumno") > 1 Then
Select Case KeyCode
Case 40
DoCmd.GoToRecord , , acNext
Nombrealumno.SetFocus
Case 38
DoCmd.GoToRecord , , acPrevious
Nombrealumno.SetFocus
End Select
End If
End Sub
Con respecto a lo de la fecha debo decir que no entendí nada de lo que pones, pero en el enunciado de la pregunta que primero hiciste ¿Dónde estaba el campo fecha que dices ahora?
Voy a dar más informacion:
Tengo un formulario donde muestro todos los registros de una tabla "Participante " entre los muchos campos que tiene están: ID, NOMBRE, F_NAC, SELECCION1; este último es de tipo si/no, que me permite seleccionar los registros con los que voy a trabajar; cuando tengo seleccionado uno o más registros se me habilitan dos botones: Actualizar Aprovechamiento y Actualizar Peso-Talla; al presionar cualquiera de los botones despliega un formulario continuo mostrándose sólo los registros seleccionados permitiendomé en el primer caso las calificaciones que los Participantes (donde debo introducir valores para Nota1, Nota2 y Nota3) y en el 2do caso sus controles nutrición les (donde debo introducir valores para los campos: Fecha_Control, Peso y Talla). Ambos formularios tienen la propiedad DataEntry en false, para impedir agregar nuevos registros; y en ambos requiero lo que en un principio explique con la diferencia de que en el 2do caso tengo un campo que almacena Fechas y requiero que me permita desplegar la ventana emergente para seleccionar la fecha. Los problemas que tengo ahora son:
-como la propiedad DataEntry esta en false cuando estoy en el último registro y presiono FlechaAbajo tengo un error, lo mismo cuando estoy en el 1er registro y presiono FlechaArriba
- otro problema es en el campo Fecha_Control no me permite seleccionar la fecha, después que puse lo que me indicaste en el evento KeyDown.
No voy a seguir contestando esta pregunta, porque creo que te estás riendo de mí.
La propiedad DataEntry=false es la situación natural de los formularios para añadir registros. Para que un formulario sea de solo lectura y que no se le puedan añadir registros es
Form.AllowAdditions = False
O sea, que no se le permita añadir registros.
Para que no se puedan modificar
Form.AllowEdits = False
Y por último, el código para el cuadro de texto Nombrealumno
If DCount("Nombrealumno", "alumnos", "idalumno<=forms!alumnos!idalumno") = 1 And Idalumno < DLast("idalumno", "alumnos") Then
Select Case KeyCode
Case 40
DoCmd.GoToRecord , , acNext
Nombrealumno.SetFocus
Case 38
DoCmd.CancelEvent
End Select
ElseIf DCount("Nombrealumno", "alumnos", "idalumno<=forms!alumnos!idalumno") > 1 And Idalumno = DLast("idalumno", "alumnos") Then
Select Case KeyCode
Case 40
DoCmd.CancelEvent
Case 38
DoCmd.GoToRecord , , acPrevious
Nombrealumno.SetFocus
End Select
ElseIf DCount("Nombrealumno", "alumnos", "idalumno<=forms!alumnos!idalumno") > 1 Then
Select Case KeyCode
Case 40
DoCmd.GoToRecord , , acNext
Nombrealumno.SetFocus
Case 38
DoCmd.GoToRecord , , acPrevious
Nombrealumno.SetFocus
End Select
End If
Gracias, y de ninguna manera me puedo reír de ti, lo que has enviado funciona, muy bien cuando DataEntry esta en True, porque cuando estoy en el último registro y presiono FlechaAbajo se va a un nuevo registro, pero cuando DataEntry está en false provoca el error porque no hay otro registro más donde ir. Esto ya lo conseguí controlando la excepción, ahora sólo me falta el problema de la fecha que justamente el código en KeyDown no me deja desplegar con ALT+FlechaAbajo el calendario y poder seleccionar la fecha de hoy u otra
- Compartir respuesta