Access - No permitir registros vacíos en Tabla

   
Vista:

No permitir registros vacíos en Tabla

Publicado por Virginia virasi109@gmail.com (4 intervenciones) el 12/06/2013 17:11:03
Hola a todos!
A ver si me podéis ayudar a resolver este problema, porque no encuentro solución.... Os explico:
Hace poco hice una BBDD en Access (2010) para guardar la facturación del negocio. Nos centramos en el formulario "factura": Está compuesto de un subformulario (entre otras cosas), donde especifico las líneas de cada factura. Está asociado a la tabla facturalinea. El caso es que por ley necesito hacer un registro de cada material que me entra, numerado correlativamente. Esto sería simple (una consulta sencilla de la tabla facturalinea, material y proveedor). El problema es el siguiente: Cuando estoy rellenando la factura, y termino, siempre le doy a ENTER, y me lleva a la siguiente línea. (Esto lo hago para que en la siguiente factura al dar ENTER a proveedor, me lleve directamente al primer campo de la línea, si no, se va al último campo). Pues bien, esto hace que hayan muchísimos registros vacíos al crear la consulta, y a pesar de tener un id autonumérico, no está relacionado bien con cada línea, porque cuenta las vacías. No puedo rellenar las vacías obviamente, ni tampoco eliminarlas (son muchas facturas). Necesito algo que o bien impida registros vacíos en el subformulario (o tabla), o bien que al hacer la consulta no cuente los registros vacíos.
Espero que alguien me pueda ayudar, porque es un poco urgente. He buscado por todas partes pero nada...
Gracias a todos de antemano,
Un saludo!
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

No permitir registros vacíos en Tabla

Publicado por Beni (21 intervenciones) el 26/06/2013 11:37:52
Si puedo te hecharé una mano, pero va a ser algo por encima puesto que no lo tengo fresco y he hecho una prueba muy básica simplemente para mirar de no darte una explicación errónea

Segun entiendo cuando vas a entrar una nueva línea ya se genera la línea con un autonumérico, pero si esa línea no la quieres se te guarda igualmente. es algo así?

Bueno, tiremos un poco de teoría de formularios.
Entre los eventos deberías tener el evento Form_BeforeUpdate (antes de actualizar). En este evento podrías controlar que si la línea no cumple los requisitos que se cancele su inserción y así evitarías que se creen líneas vacías. La idea te la expongo a continuación, aunque ten en cuenta que solo es un ejemplo sin probar sobre access, por lo que es posible que tengas que adaptarlo/corregirlo para que funcione bien:

Private sub Form_BeforeUopdate(Cancel as integer)
. 'Comprobamos que sea una línea nueva
. if me.newrecord then
. 'Comprobamos que la línea no esté vacía, o que se hayan llenado todos los campos .
. 'correctamente (esto puedes hacerlo en un método privado, por ejemplo, comprobarLinea())
. if not ComprobarLinea() then
. cancel = true
. me.undo
. end if
End sub

Este trocito de codigo lo que hace es comprobar si la linea tiene los datos rellenados (solo para nuevas líneas (me.newrecord)), y en caso negativo, cancela la actualización (cancel=true) y anula la entrada (me.undo). con esto se elimina la línea no dejando restos generados.

No es un codigo para pegar sin más. te recomiendo que hagas pruebas y compruebes si es lo que buscabas. y en cualquier caso seguramente necesites adaptarlo a tu sistema.
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

No permitir registros vacíos en Tabla

Publicado por Virginia (4 intervenciones) el 26/06/2013 19:48:38
Hola Beni! Muchas gracias por todo, le he echado un ojo, pero la verdad es que es complicado de explicar así. (Aparte que no tengo demasiada idea)... Si quieres te paso mi skype y te envío una copia de la base de datos para verlo mejor. Te dejo mi usuario: vir_virgi_ginny
Disculpa por las molestias.
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