Access - Navegar Formulario Continuo

 
Vista:
sin imagen de perfil

Navegar Formulario Continuo

Publicado por Evaristo (5 intervenciones) el 21/04/2024 12:02:52
Tengo un formulario principal y un subformulario continuo con una altura para que se vean 3 registros.
Quiero navegar por el subformulario de 3 en 3.
Si uso DoCmd.GoToRecord , , acGoTo, 4 se va al registro 4 pero no se muestran el 4,5, 6

Me podeis ayudar?
foto-1
foto-2
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

Navegar Formulario Continuo

Publicado por Anonimo (3372 intervenciones) el 22/04/2024 03:22:28
Imitar lo que logran de forma 'natural' las teclas AvPag y RePag es complicado.
Aplicar un desplazamiento solo garantiza que el registro será visible (no su posición ordinal que puede ser cualquiera de las visibles).

Solo filtrando se logra que el desplazamiento proporcione el primer puesto a los IDs (1, 4, 7, 10 ...) si se toman de tres en tres
El problema surge al aplicar un filtro es la distorsión que se crea en los cálculos globales.

Si se puede aplicar el método de filtrarlo hay mas posibilidades.
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
sin imagen de perfil

Navegar Formulario Continuo

Publicado por Evaristo (5 intervenciones) el 22/04/2024 11:09:02
La idea es navergar por paginas no por registros.
Por ejemplo si tengo 4; En la pagina 1 mostraria 3 y en la pagina 2 mostraria 1 registro.
Existe algún control de este tipo:

foto1
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

Navegar Formulario Continuo

Publicado por Anonimo (3372 intervenciones) el 22/04/2024 15:35:53
Los formularios tienen la propiedad 'page' pero solo la aplican a la hora de imprimir (no a la de visualizar).

Si se intenta utilizar SendKeys para enviar los comandos (avance/retroceso de pagina), con la teclas 'físicas' (= teclado) no se cambia el objeto activo en el formulario.

El botón que se incorpora en el formulario para emular la tecla de AvPag precisa obtener el foco y para ello un desplazamiento desde la sección detalle a la sección cabecera/pie del formulario (algo que no ocurre con las teclas especificas para esa funcionalidad).

No es imposible lograrlo, eso sí:
Es/sería un capricho caro (si se compara con utilizar 'la alternativa natural').
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
sin imagen de perfil

Navegar Formulario Continuo

Publicado por Evaristo (5 intervenciones) el 24/04/2024 21:22:45
Funcionaaaaaa
Muchas gracias Joan
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
Imágen de perfil de Joan
Val: 414
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Navegar Formulario Continuo

Publicado por Joan (103 intervenciones) el 24/04/2024 22:22:31
De nada.
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

Navegar Formulario Continuo

Publicado por Anonimo (3372 intervenciones) el 24/04/2024 23:11:29
Curiosidad:

¿En que version de Access?, en la version A'2010 el retroceso funciona, pero el avance presenta un problema (por ello descarte el método).

Avanza los registros que se le indican, tomando como referente al activo y siempre hará visible al que (con respecto al activo) este a tres puestos de distancia, pero en este modelo.

Si el subformularios SOLO tiene espacio para presentar tres registros


1
2
3
Private Sub Form_Load()
Me.InsideHeight = Me.Section(0).Height * 3 + Me.Section(1).Height + Me.Section(2).Height
End Sub
De izquierda a derecha el contenido de las líneas 1,2,3
Cada línea representa una pulsación en el botón avance, en negrita el registro activo

1, 2, 3
2, 3, 4
7, 8, 9
8, 9, 10
13, 14, 15
14, 15, 16

Si el subformulario tiene espacio para cinco registros:


1
2
3
Private Sub Form_Load()
Me.InsideHeight = Me.Section(0).Height * 5 + Me.Section(1).Height + Me.Section(2).Height
End Sub
De izquierda a derecha el contenido de las líneas 1,2,3,4,5
Cada línea representa una pulsación en el botón avance

1,2, 3, 4, 5
1,2, 3, 4, 5
7, 8, 9, 10, 11
7, 8, 9, 10, 11
13, 14, 15, 16, 17
13, 14, 15, 16, 17
19, 20, 21, 22, 23

Al retroceder siempre presenta en primer lugar (la primera línea) al registro que corresponde
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
Imágen de perfil de Eduardo Pérez Fernández

Navegar Formulario Continuo

Publicado por Eduardo Pérez Fernández (336 intervenciones) el 22/04/2024 16:02:11
Pruebe con este código

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub NavegarSiguienteTres_Click()
    Dim intCurrentPosition As Integer
    Dim intNewPosition As Integer
 
    ' Obtiene la posición actual del registro en el subformulario
    intCurrentPosition = Me.NombreDelSubformulario.Form.Recordset.AbsolutePosition
 
    ' Calcula la nueva posición deseada
    intNewPosition = intCurrentPosition + 3
 
    ' Verifica si la nueva posición está dentro del rango de registros
    If intNewPosition <= Me.NombreDelSubformulario.Form.Recordset.RecordCount Then
        ' Navega al nuevo registro en el subformulario
        DoCmd.GoToRecord acDataForm, Me.NombreDelSubformulario.Form.Name, acGoTo, intNewPosition
    End If
End Sub

Asegúrese de reemplazar "NombreDelSubformulario" con el nombre real de su subformulario. Este código primero obtiene la posición actual del registro en el subformulario usando AbsolutePosition, luego calcula la nueva posición sumando 3 al valor actual y finalmente navega a esta nueva posición utilizando DoCmd.GoToRecord si esta nueva posición es válida.

Coloque este código en el evento Click de un botón en tu formulario principal para que los usuarios puedan navegar por el subformulario de 3 en 3.
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
sin imagen de perfil

Navegar Formulario Continuo

Publicado por Evaristo (5 intervenciones) el 22/04/2024 17:16:08
Gracias por vuestras respuestas.
Eduardo, no funciona el código.
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
sin imagen de perfil

Navegar Formulario Continuo

Publicado por Evaristo (5 intervenciones) el 27/04/2024 10:10:45
Al final lo he consiguido con este codigo:
Private Sub btn_Retrocede_Click()
x = Int((Me.CurrentRecord - 1) / 3)
DoCmd.GoToRecord , , acGoTo, (3 * x) - 2
End Sub

Private Sub Btn_Avanza_Click()
x = Int((Me.CurrentRecord - 1) / 3) + 1

DoCmd.GoToRecord , , acGoTo, (3 * x) + 3
DoCmd.GoToRecord , , acGoTo, (3 * x) + 1
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