A ver si me se explicar:
Tú tienes varios cuadros combinados, y actualizas sus listas dependiendo de los que se ha escrito en otros. Como modificas las listas, a veces el último cuadro combinado se queda con una lista sin elementos. Por otro lado, en ese cuadro combinado siempre quieres que haya un dato guardado, pero que se corresponda a un elemento de la lista. Y luego tenemos que en los registros nuevos, ese cuadro combinado no va a tener un valor por defecto.
Tú, al estar usando el Undo, deshaces lo hecho, con lo que tienes que escribir de nuevo todo (si es que te deja), y haciendo que salga el mensaje en los registros nuevos, porque ese cuadro combinado va a estar vacío.
Yo, personalmente, prefiero controlar datos vacíos/incorrectos en el evento Antes de actualizar del formulario. Más que nada, por tenerlo en un único sitio y para dejar que la gente no tenga que estar metiendo los datos en orden (puede ser que prefieran meter unos determinados datos antes que otros). Es más, ahí puedes controlar todos y con un solo mensaje decir todo los que está mal (al final, se hace muy pesado ver 4 mensajes para cada registro que creas).
Que quieres que si en el último cuadro combinado la lista no tenga el valor guardado anteriormente, se borre: eso se hace asignando un nuevo valor:
Me.COD_TALLA = vbNull
Que quieres que no se admita el valor que ha hecho que se vacíe la lista, tienes que deshacer el cambio, teniendo en cuenta que si es un registro nuevo hay que esperar, pues eso:
If Me.COD_TALLA.ListIndex = -1 Then If Not Me.NewRecord Then MsgBox "No existe esta Orden de Piezas ...." DoCmd.RunCommand acCmdUndo
|