Validar campo y no continuar si no es correcto

Pero ahora no encuentro nada relacionado a mi problema, así que espero puedan ayudarme, tengo lo siguiente:
Un formulario con subformulario donde se captura información de piezas, hay un campo status que me indica si la pieza tiene fallas o si ni tiene fallas, si selecciono con falla quiero que me valide al salirme o cambiarme de registro que debo generar el reporte de falla dando clic a un botón que me abre otro formulario donde detallaré la falla.
¿Cómo podría realizar esta validación?, ¿En qué eventos? Quiero evitar cerrar la página o moverme a otro registro si no he detallado la falla de la pieza.

1 Respuesta

Respuesta
1
¿Dónde tienes la validación, en el form o en el subform?
¿Es un cuadro de texto o un Check de verificación?
En el formulario tienes botones de desplazamiento por defecto del form, ¿o se lo has puesto tú?
¿El campo a validad es en texto? está en el principal o en el sub?
¿Qué nombre le has puesto al form principal y que nombre tiene el subform?
Contestame a estas preguntas y te responderé a lo que me hayas escrito.
La validación la quiero meter al cerrar el formulario y cambiarme de registro.
Trataré de explicarme mejor para responder tus preguntas
Tengo un formulario y un subformulario, en el subformulario esta un Grupo de opciones donde tengo 2 opciones que me da el estatus de la pieza, "Con falla", "Sin falla"
Si selecciono con falla se habilita un botón que esta dentro del mismo subformulario y al darle clic me abre un formulario para capturar el detalle de la falla.
Lo que quiero validar es que si capturé una pieza y el estatus es con falla no me deje ni cerrar el formulario ni irme a otro registro hasta que capture el detalle de la falla.
¿El nombre de mi formulario es el que me aparece en forma de lista junto con todos los que he creado?
Si es así entonces mi formulario se llama: FRM EVALUACIONES
Y en el caso de el subformulario me causa confusión el nombre ya que en propiedades del subformulario tengo este nombre DET_EVALUACIONES
pero en la lista de donde tome el nombre del formulario principal tengo lo siguiente: SBFRM DET_EVALUACIONES
Los botones de desplazamiento son por defecto del formulario, y el status tiene 1 = Sin falla 2=Con falla
Espero haber sido más clara, Muchas Gracias
Bueno a ver si nos entendemos y yo ahora intento explicarte un poco lo que has de hacer para cuando se de el caso de falla, hasta que no realices la captura, no puedas salir de ahí.
¿Pero sabes una cosa...?
Je je, Imaginate que yo soy el que mete la info y resulta que elegimos falla, que sentido tiene o mejor dicho en que criterios te basas para elegir una falla, te lo digo porque si es manual, el sistema se puede engañar y aunque pongas condiciones muy muy rígidas siempre podrás torearte los códigos para avanzar o no.
Ahora si no es molestia que criterios usas para poner una falla, piensa si hay manera de hacerlo con algoritmo.
Si ves que te estoy volviendo loca me lo dices y con lo que tienes te envío una condición para no poder avanzar.
Hasta ahora
Andi
Hola no es molestia que me cuestiones esta bien a lo mejor encuentro otra solución pero te comento.
La BD va a funcionar en tiempo real, realizando algunas pruebas de montaje de dichas piezas y a la vez se va a ir haciendo la captura de la información, Si elegí que la pieza tiene falla es porque tiene falla y no hay más que capturar el detalle en ese momento y no cambiarse a otra pieza o cerrar y después regresar a capturar la falla debe ser en ese momento.
Si el usuario por alguna razón captura que la pieza tiene falla y no lo es al mostrar la pantalla para detallar la falla se dará cuenta que esta mal y corregirá a stattus sin falla.
Validar nunca es malo al contrario garantiza que la información que metas a la BD sea consistente por otro lado la ides de crear una BD es dársela a los usuarios y no dejar que metan mano al código ese es otro punto que tendré que validar.
Bueno espero que más o menos se haya entendido el concepto de porque quiero validar si tengo una pieza con fallas es porque en ese momento se esta revisando y hay que especificar cuales son los problemas que se encontraron, ¿sería lo más normal si estoy indicando que mi pieza tuvo algún error no lo crees así?
Bueno sigo aquí..
Gracias por la ayuda,
Por cierto espero que este dato te sirva, el detalle de la falla la estoy metiendo a una tabla que se llama TBL_FALLA
¿Podría hacerse una consulta de verificar si existe en esa tabla algún registro donde pieza sea = a pieza del subformulario no?
Ultima pregunta
¿La recogida de la falla es automática de máquina o es manual introducida por el usuario?
Es decir, si el usuario pulsa un botón en la máquina y pasa por RS232 al programa la falla.
¿Ups creo que no entiendo tu punto
A que te refieres con recogida de la falla?
¿Qué significa RS232?
Disculpa pero si me causa desconcierto tu pregunta, como que me esta confundiendo
¿Podrías reestructurarme nuevamente tu pregunta?
Gracias
Bueno a lo que me refería es que si tu programa capta directamente de la máquina o el el usuario que decide si es una falla.
Lo pillo pero me pierdo cuando intentas hacerlo de esa manera porque no lo veo, ¿me entiendes?
Quizás si pùdreas mandarme una imagen de tu db en el form en marcha me seria de ayuda porque así lo vería más claro el concepto, si te envío el código pues me haría una pelota o quizás te la harías tu, ¿pero de todas formas probamos OK?
Forms!Principal!form.validar=Datodelafalla.value
Retomando este detalle que había mandado antes pondré un código que había pensado:
La validación la quiero meter al cerrar el formulario y cambiarme de registro.
Trataré de explicarme mejor para responder tus preguntas
Tengo un formulario y un subformulario, en el subformulario esta un Grupo de opciones donde tengo 2 opciones que me da el estatus de la pieza, "Con falla", "Sin falla"
Si selecciono con falla se habilita un botón que esta dentro del mismo subformulario y al darle clic me abre un formulario para capturar el detalle de la falla.
Lo que quiero validar es que si capturé una pieza y el estatus es con falla no me deje ni cerrar el formulario ni irme a otro registro hasta que capture el detalle de la falla.
¿El nombre de mi formulario es el que me aparece en forma de lista junto con todos los que he creado?
Si es así entonces mi formulario se llama: FRM EVALUACIONES
Y en el caso de el subformulario me causa confusión el nombre ya que en propiedades del subformulario tengo este nombre DET_EVALUACIONES
pero en la lista de donde tome el nombre del formulario principal tengo lo siguiente: SBFRM DET_EVALUACIONES
Los botones de desplazamiento son por defecto del formulario, y el status tiene 1 = Sin falla 2=Con falla
Necesito una validación algo así:
If Forms![FRM EVALUACIONES].[DET_EVALUACIONES].Form![SBFRM DET_EVALUACIONES].[STATUS] = 2 Then
    If DCount("NUM_REPORTE", "[TBL_REPORTES]", "[NUM_EVALUACION]=" & Formularios![SBFRM DET_EVALUACIONES]![NUM_EVALUACION] & " AND " & "[NUM_PIEZA]=" & Formularios![SBFRM DET_EVALUACIONES]![NUM_PIEZA]) = 0 Then
           MsgBox "Debe generar el Reporte de la falla ", vbCritical 
           DoCmd.CancelEvent 
    End If 
End If
No se donde poner el evento para que se dispare la validación anterior, en base a eso supongo que deben variar las instrucciones ya que si se mete a algún evento del formulario principal, como el campo status que esta en el subformulario hay que hacer diferente referencia a que si se hiciera en un evento directo en el subformulario.
Otro punto que tampoco sé es el de hacer que no continué con lo que quiero hacer, abortar, detener, no dejar avanzar, ya sea en el cierre del formulario o al irme a otro registro, quiero que al realizar algo de lo anterior si no encuentra el detalle en la tabla me mande mensaje y me diga que no he dado los detalles y no me deje seguir hasta que los capture, ¿me explico?
Bueno esto ya va cogiendo color, si he entendido bien abres otro forms donde capturas la falla del subform, entoves ya intervienen 3 formularios, si es correcto claro, lo que yo haría y el código que me envías es correcto, en el form en propiedades, evento al activar el registro, deberías de poner el Dcount para que no pueda avanzar siempre que el valor sea 0, es decir.
Private Sub AvisodeElecion(Opciones)
Select Case Opciones(Forms![FRM EVALUACIONES].[DET_EVALUACIONES].Form![SBFRM DET_EVALUACIONES].[Status])
Case 0
' aqui mensaje para recordar que no ha elgido opciones
Case 1
' aqui lo que quieres que haga
Case 2
' aqui lo que quieres que haga
End Select
End Sub
Private Sub Form_Current()
Dim Resp As String
Dim LblFalla As Long
AvisodeElecion ' Miramos que ha selecionado una opción
LblFalla = 0 & DCount("Num_reporte", "Tbl_reportes", _
"[Num_Evaluacion] like '" & Formularios![SBFRM DET_EVALUACIONES]![NUM_EVALUACION] & _
"' AND " & "[NUM_PIEZA] Like '" & Formularios![SBFRM DET_EVALUACIONES]![NUM_PIEZA] & "'")
If LblFalla = 0 Then
Resp = MsgBox("Sin registrar..." & vbCrLf & "-------------------------------------------" & vbCrLf & _
"No existe el registro de la falla encontrada:" & vbCrLf & _
"" & vbCrLf & _
"No ha asignado ninguna Acción" & vbCrLf & _
"Para operar introduzca la falla," & vbCrLf & _
"-------------------------------------------" & vbCrLf, vbInformation, "Información...")
DoCmd.GoToControl , , acLast ' retrocedemos el registro avanzado.
Nombreboton_click ' Una vez que se haya informado de que no se ha rehistrado la falla automaticamente se abrirá el formulario para que la registre.
Else
' Si tiene valor tu diras q acción tomar
End If
End Sub
Por otro lado, lo que puedes hacer es comprobar si ha elegido Con o Sin falla, sino elige nada también le daremos el toque para que escoja una opción para ello. También puedes poner tu código en el botón, así cuendo le de chequea, a parte lo que te pongo arriba.
A ver que tal va todo esto.
Déu

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas