Imprimir página | Cerrar ventana

Registro siguiente

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=83252
Fecha de impresión: 28/Enero/2020 a las 18:15


Tema: Registro siguiente
Publicado por: cpampasPT
Asunto: Registro siguiente
Fecha de publicación: 20/Noviembre/2017 a las 12:16
Buenos dias,
Tengo una situacion que en principio me parecia facil , pero de la que no  consigo salir, el tema es que en mi formulario tengo un boton para pasar al registro siguiente de forma condicional :

If prox = True Then 
    If (Me.difP * 100) < 10 Then
       ' proximo registo
       DoCmd.GoToRecord , , acNext
    Else
        ' aqui me quedo en el mismo
        MsgBox ("neste registo vamos parar")
        
    End If
End If

el error es el 2046 : "el comando 'ir para registro' no esta disponible ahora

alguna idea de como resolverlo  ?




Respuestas:
Publicado por: mounir
Fecha de publicación: 20/Noviembre/2017 a las 14:39
Hola!

Yo probaría una de las siguientes opciones:

1- Utilizando And:

If prox = True and (Me.difP * 100) < 10 Then

       ' proximo registo

       DoCmd.GoToRecord , , acNext

    Else

        ' aqui me quedo en el mismo

        MsgBox ("neste registo vamos parar")

End If


2- La otra opción es lo contrario, es decir:

If (Me.difP * 100) >= 10 Then
        ' aqui me quedo en el mismo

        MsgBox ("neste registo vamos parar")
       
    Else
       ' proximo registo

       DoCmd.GoToRecord , , acNext

   End If




-------------
Un Saludo.


Publicado por: xavi
Fecha de publicación: 20/Noviembre/2017 a las 15:11
El problema derivado del error me parece que se va a dar exactamente igual cuando el siguiente registro esta fuera de los límites de lo posible.

Por mucho que se cumplan las condiciones, si ya estas en el último (y no permites ediciones adiciones) no podrás pasar al siguiente.
Evalúa si el RecordsetClone.AbsolutePosition coincide con el RecordsetClone.RecordCount en cuyo caso *no* puedes ir al siguiente.

Un saludo

Editado para corregir.


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: cpampasPT
Fecha de publicación: 20/Noviembre/2017 a las 23:01
hola Xavi y Mounir,
Gracias por Vuestras aportaciones pero, el problema es otro , porque en  la condicion IF se ejecuta la linea de codigo

docmd.GoToRecord,,acNext
y tampoco se da el caso de que me encuentre en el ultimo registro.

Probablemente la explicacion  es muy simples, pero es que no hay forma de verla
de hecho tengo un boton en mi formulario para  ir al siguiente registro y me funciona bien, es cuando le pongo la condicion IF que me da el error que mencione antes

el boton que me funciona lo tengo asi :

Dim prox As Boolean
Dim difP As Double
prox = True
difP = 9
Me.obs_0 = "": Me.obs_0.BackColor = -2147483643

                Me.WebBrowser1.stop
                Me.WebBrowser9.stop
                Me.Webbrowser4.stop
                Me.WebBrowser3.stop

           ' por si acaso el foco se encuentra en un  control webbrowser, le pongo el foco
            en un control en el formulario

                DoCmd.GoToControl "obs_1"
                
          If prox = True Then
            If difP < 10 Then
                 DoCmd.GoToRecord , , acNext
            
            End If
          End If

En resumen, si le quito a este codigo las lineas en rojo, funciona y pasa al registro siguinte, pero si le pongo las lineas en rojo, da el error que os comente.
no os parece raro esto ?


Publicado por: cpampasPT
Fecha de publicación: 21/Noviembre/2017 a las 23:54
Parece ser que alguno de los 3 webBrowser control que tengo en mi formulario retiene el foco,  al intentar ejecutar el comando para ir al siguiente registro, y aunque se intente poner el foco en algun control del formulario que no los WebBrowser, vuelve el foco al Webbrowser.

Lo curioso es que Access me dice que el control esta en el formulario y no en los Webbrowser, lo que no es correcto (me.activeControl)

Encontre la solucion, abriendo un formulario de dialogo en "blanco", que en el evento onLoad pone el foco en un control de mi formulario y cierra el formulario en blanco

Podeis crrar el hilo
Gracias





Imprimir página | Cerrar ventana