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

Tema cerrado.SetFocus no corresponde

 Responder Responder
Autor
Mensaje
apstoni Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 09/Octubre/2010
Localización: España
Estado: Sin conexión
Puntos: 367
Enlace directo a este mensaje Tema: .SetFocus no corresponde
    Enviado: 28/Septiembre/2018 a las 10:03
Buenas. Me explico un poco.

En el campo [CODARTDET] en el envento después de actualizar tengo el siguiente código:

Private Sub CODARTDET_AfterUpdate()
If DLookup("CODART", "ARTICLES", "CODART = " & Me.CODARTDET) Then
    Me.NOMARTDET = DLookup("DESCART", "ARTICLES", "CODART = " & Me.CODARTDET)
    Me.FAMARTDET = DLookup("CODFAMART", "ARTICLES", "CODART = " & Me.CODARTDET)
    Me.UNIARTDET.SetFocus
Else
    If MsgBox("ARTICLE INEXISTENT" & vbCrLf & "Vols donar-lo d'alta: " & Me.CODARTDET, vbYesNo) = vbYes Then
        DoCmd.OpenForm "ARTICLES"
        DoCmd.GoToRecord , , acNewRec
        Forms!ARTICLES!CODART = CODARTDET
        Forms!ARTICLES!DESCART.SetFocus
    Else
        Me.CODARTDET.Value = ""
        Forms("COMANDES").Controls("Subformulario DETALLCOMANDA").Form.Controls("CODARTDET").SetFocus
    End If
End If
End Sub

Todo funciona correctamente hasta que si el artículo es inexistente me pregunta si quiero darlo de alta, si digo SI todo OK, pero si le digo que no, me borra el valor del campo (OK) y tal como sigue la instrucción deberia volver al campo [CODARTDET], pero no sé por qué pasa de esa instrucción y tabula al campo siguiente.
Alguien me puede decir si tengo algo mal.
Apstoni
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3335
Enlace directo a este mensaje Enviado: 28/Septiembre/2018 a las 10:47
Hola.
Prueba de pasarle el foco al subformulario y después al control del subformulario (vamos 2 setfocus). En algunos casos funciona.
Otra alternativa, como parece ser que el código está  en el subformulario, prueba con algo parecido a me.codartdet.setfocus
Espero que ayude a resolver la duda.
Ya comentas.
Un saludo a todos
Arriba
apstoni Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 09/Octubre/2010
Localización: España
Estado: Sin conexión
Puntos: 367
Enlace directo a este mensaje Enviado: 28/Septiembre/2018 a las 11:33
Gracias. Lo he solucionado dando el foco al siguiente campo y después de vuelvo a asignar el foco al campo anterior, de la siguiente manera:

Private Sub CODARTDET_AfterUpdate()
If DLookup("CODART", "ARTICLES", "CODART = " & Me.CODARTDET) Then
    Me.NOMARTDET = DLookup("DESCART", "ARTICLES", "CODART = " & Me.CODARTDET)
    Me.FAMARTDET = DLookup("CODFAMART", "ARTICLES", "CODART = " & Me.CODARTDET)
    Me.UNIARTDET.SetFocus
Else
    If MsgBox("ARTICLE INEXISTENT" & vbCrLf & "Vols donar-lo d'alta: " & Me.CODARTDET, vbYesNo) = vbYes Then
        DoCmd.OpenForm "ARTICLES"
        DoCmd.GoToRecord , , acNewRec
        Forms!ARTICLES!CODART = CODARTDET
        Forms!ARTICLES!DESCART.SetFocus
    Else
        Me.CODARTDET.Value = ""
        Me.NOMARTDET.SetFocus
        Me.CODARTDET.SetFocus
    End If
End If
End Sub


Apstoni
Arriba
apstoni Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 09/Octubre/2010
Localización: España
Estado: Sin conexión
Puntos: 367
Enlace directo a este mensaje Enviado: 28/Septiembre/2018 a las 11:33
Gracias. Se puede cerrar el post.
Apstoni
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable