Access - Comportamiento anomalo del DoCmd.FindRecord

 
Vista:
sin imagen de perfil
Val: 3
Ha disminuido su posición en 6 puestos en Access (en relación al último mes)
Gráfica de Access

Comportamiento anomalo del DoCmd.FindRecord

Publicado por Jose Luis (2 intervenciones) el 18/06/2019 10:34:47
Hola a todos,
Tengo una base de datos con una Tabla que contiene mas de 4000 registros y un Formulario que muestra todos los campos de cada registro.
En ese formulario (en adelante Formulario2, tengo un boton vinculado a este macro:

1
2
3
4
5
6
7
8
9
10
Private Sub Comando2_Click()
Dim nPuntero As Integer
nPuntero = 999
' DoCmd.OpenForm "Formulario2"
Me.NumeroRegistro.SetFocus
MsgBox nPuntero
 DoCmd.FindRecord nPuntero, , True, , True, -1
 MsgBox [NumeroRegistro]
Me.Alerta.SetFocus
End Sub

Funciona muy bien mostrando en este caso el registro 999 ya que nPuntero tiene el valor de 999
Puedo cambiar ese valor por nPuntero = 279 y en ese caso, tambien sin problema, me muestra el registro 279.
Todo va bien... hasta que nPuntero tiene un valor superior a 999.
A partir de 1000 y cualquier numero superior, en el Formulario2 me muestra invariablemente el Registro 1.
Es decir... Todo va bien mientras en "DoCmd.FindRecord nPuntero, , True, , True, -1" nPuntero valga menos de 1000. De ahi en adelante... anomalia...
Alguien me puede ayudar a entender o solucionar esta anomalia?.
Saludos cordiales.
Jose Luis
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
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Comportamiento anomalo del DoCmd.FindRecord

Publicado por Norberto (753 intervenciones) el 18/06/2019 12:46:42
Hola:

Prueba a cambiar el código de esta manera:

1
2
3
4
5
6
7
Private Sub Comando2_Click()
    Dim Rst As Recordset, nPuntero As Integer
    nPuntero = 1000
    Set Rst = Me.Recordset
    Rst.FindFirst "NumeroRegistro = " & nPuntero
    Set Rst = Nothing
End Sub

Un saludo,

Norberto.
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

Comportamiento anomalo del DoCmd.FindRecord

Publicado por Jose Luis (1 intervención) el 18/06/2019 22:15:16
Muchas gracias Norberto.
Primero por responder a mi solicitud de ayuda... y segundo por la rapidez con que lo has hecho.
Voy a responder a tu colanboracion por partes.
Primero: Tu rutina tal como la has enviado, funciona sin probñlemas por encima de los 1000...
Segundo: Pero funciona en una base de datos diferente de la que tengo, a la que le llmare, para entendernos, Base2. Es decir: la he probado primero en mi base de datos, que le llamo Base1, y no ha funcionado. He creado una base de datos con la misma tabla y sin mas que un solo formulario, (Base2) y así funciona. Y he comprobado que el macro anterior mio, tambien ha funcionado en esa Base2, con un solo formulario. Hay que aclarar tambien, que la tabla es la misma en ambas bases de datos.
Por lo tanto, el problema no esta en la tabla... ya que con los mismos registros y con los mismos campos, en la Base2 funciona y en la Base1 no.
Ahora me toca probar experimentalmente... Voy a ir suprimiendo formluarios e informes de la Base1 para ver si llego a un momento en que funciona... Lo razonable es que cuando llegue a dejar la Base1 en igualdad de condiciones que la Base2 por haberle suprimido Formularios e Informes actuales, debera funcionar.
Eso me va a llevar algo de tiempo. Por eso he querido agradecerte, amigo Norberto, tu aportacion y ayuda.
Volvere a hacerme presente en el Foro en cuanto tenga algunas conclusiones.
Saludos cordiales.
Jose Luis
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
Val: 3
Ha disminuido su posición en 6 puestos en Access (en relación al último mes)
Gráfica de Access

Comportamiento anomalo del DoCmd.FindRecord

Publicado por Jose Luis (2 intervenciones) el 21/06/2019 12:53:18
Respuesta a Norberto:
He hecho "mil" pruebas, en el tema de la instrucción "DoCmd.FindRecord" y he llegado a una conclusión que no me satisface...
He utilizado la rutina que tú me enviaste y con la tabla original de mi base de datos... no funciona desde el Formulario2 por encima de los 1000 registros. Desde luego, la rutina anterior tampoco.
Me tomé el trabajo de ir suptrimiendo objetos del Formulario2, para ver si conseguia que "buscara" registros por encima del mil, pero no lo conseguí.
Asi que me he tomado el largo trabajo, de crear otro Formulario22 exactamente igual que el Formulario2 utilizando la misma Tabla y ... de manera sorprendente, en ese Formulario22, ambas rutinas funcionan.
Hice todas las pruebas habidas y por haber. Al final, me creé el Formluario22 copiando todos los objetos del Formulario2 y pegandolos en el Formulario22... Después, verifiqué una por una, todas las propiedades de ambos formularios. Estaban exactamente iguales...
Pero el resultado final, es que con con el Formulario22 todo funciona bien. Y con el Formulario2... NO.
Es una de esas cosas que parecen ilogicas... pero estoy seguro de que hay algo que se me escapa, y que contiene la respuesta lógica a esta situación.
Al final, utilizando esa ruitina de " Rst.FindFirst "NumeroRegistro = " & nPuntero" en varios macros que tiene la base de datos, he conseguido que todo funcione.
Me hubiera gustado mucho más, encontrar la respuesta. No ha sido asi, y me conform (que no es poco) con que el programa funciona actualmente al cien por cien.
Creo que tengo que rectificar el titulo del tema, ya que despues de estas pruebas, no es correcto decir: "Comportamiento anomalo del DoCmd.FindRecord" Mas bien habria que llamarle: comportamiento inexplicable de esa rutina en un formulario... :) :) :)
Sea como sea, doy por cerrado el tema, agradecindo la ayuda recibida, que me ha servido para dar los pasos necesarios... que he dado.
Saludos cordiales
Jose Luis
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