Access - Por qué no me funciona el "SetFocus"

 
Vista:

Por qué no me funciona el "SetFocus"

Publicado por Paco (38 intervenciones) el 15/05/2009 20:22:46
Igual es una tonteria mía pero no entiendo porqué no puedo hacer que el foco quede en el mismo campo después de actualizar si se cumple la condición if., el resultado es que el cursor se me pasa al siguiente campo, tenga o no 13 dígitos el "TXT_CODIGO"
1
2
3
4
5
6
Private Sub TXT_CODIGO_AfterUpdate()
    If Len(TXT_CODIGO.Value) <> 13 Then
        RESPUESTA = MsgBox("El CODIGO debe tener 13 dígitos" + Chr(13) + "Sólo se permiten números, sin barras (/) y sin espacios", vbOKOnly, "VALOR DE CAMPO INCORRECTO")
        TXT_CODIGO.SetFocus
    End If
End Sub
También me gustaria saber cómo puedo restringir en el mismo campo que sólo se pueda poner números y nunca letras, ¿ con otro "IF" y haciendo valer el código ascii de los números ?
Gracias y saludos.
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
sin imagen de perfil
Val: 28
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Por qué no me funciona el

Publicado por Jefferson (382 intervenciones) el 15/05/2009 21:24:49
1
2
3
4
5
6
7
8
9
10
11
Private Sub Form_Current()
TXT_CODIGO.InputMask = "#############;0;"
End Sub
 
Private Sub TXT_CODIGO_BeforeUpdate(Cancel As Integer)
If Len(TXT_CODIGO.Value) <> 13 Then
RESPUESTA = MsgBox("El CODIGO debe tener 13 dígitos" + Chr(13) + "Sólo se permiten números, sin barras (/) y sin espacios", vbOKOnly, "VALOR DE CAMPO INCORRECTO")
Cancel = True
Exit Sub
End If
End Sub
Con eso Bastara....
Desde Venezuela
Jefferson
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:Por qué no me funciona el

Publicado por miguel (1 intervención) el 06/01/2021 17:37:27
De diez la solución de jefferson.
Miguel desde Argentina
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
Imágen de perfil de Enrique Ramírez
Val: 37
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Por qué no me funciona el

Publicado por Enrique Ramírez (629 intervenciones) el 15/05/2009 22:02:57
Este problema del SetFocus yo lo resuelvo mandando el cursor primero a otro objeto (txt, boton, etc) y luego al mismo donde estoy haciendo la validación, ¿porqué este comportamiento del cursor? .... no lo se.... pero me funciona.

ejemplo:

1
2
3
4
5
If Len(txt_codigo.Value) <> 13 Then
RESPUESTA = MsgBox("El CODIGO debe tener 13 dígitos" + Chr(13) + "Sólo se permiten números, sin barras (/) y sin espacios", vbOKOnly, "VALOR DE CAMPO INCORRECTO")
BtnSalir.SetFocus '(primero lo mando a mi boton salir)
txt_codigo.SetFocus '(e inmediatemente lo mando a la caja de texto)
End If

pruebalo y veras que funciona.
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: 28
Ha disminuido su posición en 3 puestos en Access (en relación al último mes)
Gráfica de Access

RE:Por qué no me funciona el

Publicado por Jefferson (382 intervenciones) el 15/05/2009 23:04:54
Enrique es Correcto lo que dices...

Te Explico lo que haces es enviar el foco de un lado a otro....., Pero sin detener el codigo VBA....

Si Cierrras la BD veras que los datos introducidos quedaran almacenados en la tabla.

Solo puedes detener el codigo cuando lo haces con procedimientos del mismo campo... Ejemplo Antes de Actualizar, Al salir o Al Deshacer

Un Saludo
desde Venezuela
Jefferson
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

RE:Por qué no me funciona el

Publicado por Paco (38 intervenciones) el 16/05/2009 01:38:12
Enrique, tal y como dices funciona perfectamente, curioso, pero funciona.

Jefferson, tu otra forma de hacerlo también me es muy válida.

Gracias a ambos, como siempre.

Un saludo.
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

RE:Por qué no me funciona el

Publicado por Richard (1 intervención) el 05/06/2013 16:00:53
Jefferson: Grande Men!....a mi me funciono!....gracias.
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

RE:Por qué no me funciona el

Publicado por Fernando (15 intervenciones) el 31/03/2014 02:58:10
Hola, a ver si pueden ayudarme, estoy con esto del setfocus pero en mi caso tengo que ir del subformulario a un cuadro combinado del formulario principal.
puedo ver que en la accion luego de actualizar el campo 1 del subform, se seleciona el boton del form principal y luego el cuadro combinado en el que quiero quede el cursor pero no se queda ahi e inmediatamente pasa al campo 2 del subform

el subform esta en vista de hoja de datos

Espero puedan ayudarme
gracias
Slds.
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

RE:Por qué no me funciona el

Publicado por Carlos (1 intervención) el 18/06/2016 17:11:01
Muchas Gracias, me funciono re bien con esta trampita, después de dar mil vueltas...
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

RE:Por qué no me funciona el

Publicado por Enrique Heliodoro (1664 intervenciones) el 18/06/2016 20:47:49
Pues ... la pregunta original era sobre enviar el foco ... al mismo objeto que tenia el foco (el objeto activo) y si os paraseis un momento a razonar lo veriais claro:
No se le puede enviar el foco A QUIEN YA LO TIENE
(por eso funciona el invento, pues si 'se le quita' se le puede 'volver a poner')

Pero un programador consecuente con su trabajo, no lo haria asi, pues si 'tiene el foco' y no se desea que lo pierda ... pues se le dice (en el evento EXIT y activando su parametro'cancel' ) algo tan simple como que .. no salga.

Programar no es 'hacer las cosas de cualquier manera' es hacerlas funcionar de forma eficiente.
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