Como puedo hacer que se muestren solo 10 registros en formulario continuo

Tengo un formulario continuo con una buena cantidad de registros y quisiera que al abrirlo me mostrara solo 10 registros y un botón para ir pasando de 10 en 10. ¿Es posible? Si es así como debería de hacerlo.

1 respuesta

Respuesta
-1

Claro que es posible, le preparé este ejemplo en un formulario continuo, consta de:
1 Botón para ir a la página siguiente (Se puede omitir si quiere usa la tecla Av Pág)
1 Botón para ir a la página anterior (Se puede omitir si quiere usa la tecla Re Pág)
1 Botón para Cerrar el formulario
1 Evento Al cargar del formulario
1 Módulo con una función para reemplazar Sendkeys de Access. Se puede omitir si utiliza Sendkeys de Access, pero se recomienda para evitar fallas.

Al abrir el formulario

Hago clic en el botón siguiente:

Observe que obtengo el siguiente grupo de 10 registros.

Para fijar el grupo de 10 programo el evento Al cargar

Private Sub Form_Load()
   Me.InsideHeight = Me.Section(acDetail).Height * 13
End Sub

Puede cambiar el 13 por otro número de acuerdo con la cantidad de registros que quiera ver, pero esto varía según como muestre el Pie del formulario, en este ejemplo está reducido al mínimo, es decir, no mostraría ninguna información.

CÓDIGO DEL BOTÓN SIGUIENTE

Private Sub btnSiguiente_Click()
Call Sendkeys("{PGUP}")
End Sub

CÓDIGO DEL BOTÓN ANTERIOR

Private Sub btnAnterior_Click()
Call Sendkeys("{PGDN}")
End Sub

CÓDIGO DE LA FUNCIÓN

Option Compare Database
Option Explicit

Private Declare PtrSafe Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare PtrSafe Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long

'get os version
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type
Function OsVersion() As Single
Dim os As OSVERSIONINFO
Dim retval As Long
os.dwOSVersionInfoSize = Len(os)
retval = GetVersionEx(os) ' read Windows's version information
OsVersion = Val(os.dwMajorVersion & "." & os.dwMinorVersion)
End Function
Public Function Sendkeys(sSend$, Optional bWait As Boolean = False)
Static bInit As Boolean, bVistaOrGreater As Boolean, wShell As Object
If Not bInit Then
bVistaOrGreater = (OsVersion() >= 6)
If bVistaOrGreater Then Set wShell = CreateObject("WScript.Shell")
bInit = True
End If
If Not bVistaOrGreater Then
VBA.Sendkeys sSend$, bWait
Else
wShell.Sendkeys sSend$, bWait
End If
End Function

Por falla en la página de TodoExpertos no pude pegar el código en la ventana <> del navegador.

NOTA: Realmente no hay necesidad de todo este código, sencillo, NO adicione botones y utilice el teclado, no hay que reinventar lo que ya existe, lo hice para cumplir con la respuesta.

Si quiere el ejemplo puede solicitarlo a [email protected], favor en el asunto la consulta.

Muy complicado, he visto algunas imágenes que contiene un botón ( 10 siguientes ) y va mostrando los registros de 10 en 10. Muchas gracias por tu tiempo peo me gustaría algo más sencillo a poder ser.

Por esto le digo más sencillo no use botones, avance y retroceda con las tecla AvPag y Re Página.

Si quiere botones:

Botón Anterior:

Evento al hacer clic

  Sendkeys "{PGUP}"

Botón  Siguiente

 Sendkeys "{PGDN}"

Private Sub btnAnterior_Click()
 Sendkeys "{PGUP}"
End Sub
Private Sub btnSiguiente_Click()
  Sendkeys "{PGDN}"
End Sub
Private Sub Form_Load()
 Me.InsideHeight = Me.Section(acDetail).Height * 13
End Sub

No creo que haya otra forma más sencilla con botones, lógicamente lo más practico es con el teclado. 

Me estoy liando. 

¿ donde tengo que poner el modulo, al poner el modulo no necesito los botones?

Te agradezco el tiempo que pasas en ayudarme.

Gracias.

NO necesita el módulo con lo último que le expuse, le mencioné el módulo para evitar que SendKeys devuelva algo mal, esto sucede a veces en Access, puse los botones para demostrarle como se hace con código, pero no es necesario.

En consecuencia NO necesita los botones para el desplazamiento, porque esto lo hacen las teclas Re Pág y Av Pág.

En síntesis el único código con que debe jugar es con el del evento Al cargar del formulario.

Private Sub Form_Load()
 Me.InsideHeight = Me.Section(acDetail).Height * 13
End Sub

Debe ir probando con el valor 13, es decir, si ve que le aparecen 11 registros, cambie el 13 por 12, si solo aparecen 9 o menos vaya aumentado, cambie 13 por 14 etc. hasta que solo  muestre los 10 que usted requiere.

Hay varios factores que afectan en el número de registros a mostrar, esto son, el espacio entre el Encabezado del formulario y los datos y el espacio entre el Pie del formulario y los datos. Ver figura.

saludos de nuevo.

le puse esto

y sigue mostrando todos los registros.

Como se puede ver en la imagen los registros son de diferentes años del 2016 hay tres y de los demás lo normal es de 12 por año, mi pregunta es ¿seria posible ver los registros por grupo de años registrados tanto si hay tres como 10, como 15 .

Si no tiene información confidencial me puede enviar la base de datos a [email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas