Validar campo en un formulario y que no continue

Ojala y me puedan ayudar con este formulario.
Tengo 2 campos en un formulario en access, uno es el margen y el otro es un porcentaje que se calcula al capturar el precio, el margen se teclea, pero el porcentaje debe ser igual o mayor, si es menor que me regrese al campo de precio para que teclee otro y que no lo deje continuar hasta que el calculo del porcentaje sea igual o mayor al margen.

1 Respuesta

Respuesta
1
Aquí hay dos pasos, ya que entiendo que lo primero que escribes es el precio y luego el margen. La parte que no entiendo es lo del porcentaje que sea mayor o menor que (¿?)
Entonces en la vista diseño del formulario, abre las propiedades del control precio y la pestaña de Eventos, en el evento "Al cambiar" o "Al perder el enfoque", puedes escribir algo así.
If margen="" or IsNull(margen) Then
Else
   If porcentaje>X Then
      precio=""
      precio.SetFocus
   End If
End If
Y luego en el mismo evento pero del control margen escribes
If margen="" or IsNull(margen) Then
   MsgBox "No ha definido nigún margen",,"Defina el margen para continuar"
   margen.SetFocus
Else
   If porcentaje>X Then
      precio=""
      precio.SetFocus
   End If
End If
Disculpa Tony63 tengo así el subformulario
Clave Articulo Margen Precio Porcentaje
104604 17.50 14%
Al capturar el articulo me despliega automáticamente el precio y el %, entonces me pide capturar un margen, le capturo 20% (me cambia automático el precio y el porcentaje), y al cambiar o perder el enfoque en margen, que el precio no lo pueda cambiar para abajo de como salio por primera vez (17.50) puede ser igual o mayor. Pero que no me deje continuar hasta que sea mayor o igual.
No se si me explique bien, de antemano muchas gracias
Le doy este código:
Private Sub margen_AfterUpdate()
    If Margen = "" Or IsNull(Margen) Then
        MsgBox "No ha definido nigún margen", , "Defina el margen para continuar"
        Margen.SetFocus
    Else
    If (Margen / 100) < Porc Then
        MsgBox "No puede ser menor el Margen al %", vbCritical, "Error"
        Margen = ""
        Margen.SetFocus
        Cancel = True
    End If
    End If
End If
Pero si le doy menor el margen a 14 me marca el error, pero me deja continuar, lo que quiero es que no pierda el enfoque hasta que de igual o mayor a 14%
Gracias...
¿Qué error te marca? ¿Error de enfoque?
Si eso, sustituye la línea de MArgen. SetFocus por
DoCmd. GoToControl("margen")
sorry .. experto.. no me marca error si no que... no quiero que me deje continuar hasta teclear lo correcto .. le capture lo que me dijiste y si me manda el mensaje pero me deja continuar...
OK. Te sugiero que utilices la propiedad locked, que utiliza como el SetFocus, escribiendo el nombre del control. Locked.
Ten todos los controles bloqueados por defecto y a medida que vayas pasando al siguiente control desbloqueas el siguiente y bloqueas el anterior y así sólo te permitirá seguir si se cumplen las condiciones que necesitas.
nombredelcontrol.locked=true ó nombredelcontrol.locked=false según te convenga

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas