** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Registro siguiente
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoRegistro siguiente

 Responder Responder
Autor
Mensaje
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 511
Enlace directo a este mensaje Tema: Registro siguiente
    Enviado: 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  ?

Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 5324
Enlace directo a este mensaje Enviado: 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.
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 12162
Enlace directo a este mensaje Enviado: 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.


Editado por xavi - 20/Noviembre/2017 a las 15:11
Xavi, un minyó de Terrassa

Mi web
Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 511
Enlace directo a este mensaje Enviado: 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 ?


Editado por cpampasPT - 20/Noviembre/2017 a las 23:03
Arriba
cpampasPT Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 20/Marzo/2010
Localización: Portugal
Estado: Sin conexión
Puntos: 511
Enlace directo a este mensaje Enviado: 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


Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable