Problema en access 2010! Urgente

buenas noches espero este muy bn


tengo dos formularios


.agregar
-menu


el formulario agregar es donde se agregan registros y se almacenan en la tabla datos registro.


el problema es el siguiente


supongamos
que abro el formulario agregar, escribo alguna información
luego me arrepiento, borro toda la información de los campos y hago
click en el botón cerrar del formulario agregar,

este se cierra y me abre automáticamente el formulario menu.
hasta ahí todo va bien, luego reviso la tabla datos registros y veo que me ha creado un registro con todos los campos en blanco.


no se como solucionarlo.
si borro los campos no dejo información y mucho menos hago click en el botón guardar,
solo hago click en el botón cerrar y ya.


cabe decir que en el botón cerrar ahí dos macros,
una que cierra el formulario agregar,
otra que abre el formulario menu.


muchas gracias por su ayuda
dtb.

1 Respuesta

Respuesta
1

Necesitaría saber...

- El nombre de la tabla donde se guardan los registros

- El nombre de un campo de esa tabla que, en situación normal, siempre deba contener un valor.

Es decir, si tienes tres campos, puede ser que, según la información, el tercero quede vacío, y el primero y segundo llenos. En este caso, que me dieras el tercero no me serviría. Si es requisito para que consideres el registro correcto que en el primero, por ejemplo, siempre haya valor, pues este primero sería el que necesitaría.

muchas gracias por tu pronta respueta experto.
La tabla donde se guardan los registros se denomina DATOS REGISTRO
y esta tabla contiene los sgtes campos:
fecha
nombre
tel (este es opcional)
email (este es opcional)
programa
jornada
medio
estrato
todos los campos sin incluir tel y email son importantes ya que este software o bd es para manejar el registro de mercadeo de un instituto.
Y este software tiene una ventana qe me da el resultado total de registros por programa, jornada, medio, estrato, ciclo.
muchas gracias por tu ayuda!
Un abrazo, dtb.

una captura del problema, resalto que acabe de descubrir que si hago el mismo proceso pero en vez de cerrar el formulario hago click en el botón nuevo registro ocurre el mismo problema. gracias por tu ayuda.

Ante todo comentarte que el sistema de guardado de información de Access es diferente al resto de programas de la suite Office. Automáticamente, cuando escribes, los datos quedan "guardados" en la tabla... Datos con valores o datos en blanco, que es lo que te pasa a ti (lo anterior entiéndelo como una explicación general).

El sistema que te propongo se activará cuando cierres el formulario. Eso significa que si navegas por los registros y ves alguno en blanco pues no le hagas caso, porque esto se corregirá cuando cierres el formulario.

Lo que tienes que hacer es muy simple (te aconsejo que antes lo pruebes en una copia de tu BD porque la consulta de acción te va a borrar registros... No sea cosa que haya algún error y borre más de la cuenta):

- Pones tu formulario <agregar> en vista diseño y sacas sus propiedades.

- Dentro de las propiedades te vas a Pestaña Eventos -> Al cerrar, y en ese evento le generas el siguiente código:

...

Private Sub...

docmd.setwarnings false

docmd.runsql("DELETE FROM [DATOS REGISTRO] WHERE isnull(fecha)")

docmd.setwarnings true

End Sub

...

La prueba de que funciona es muy fácil: abres el formulario, añades algún registro y borras la información (como creo que es lo que ocurre), y cierras el formulario. Si miras la tabla ahora no deberías tener ningún registro en blanco.

Como puedes ver en el código el campo que "manda" es [fecha]. Eso significa que cualquier registro que no tenga fecha se va a borrar. Ojo! Por eso te decía que se necesitaba un campo que, obligatoriamente, estuviera lleno para dar por bueno el registro.

Ya me dirás qué tal te ha ido.

EXCELENTE!!

ERA LO QUE NECESITABA!! (Y)

MUCHAS GRACIAS EXPERTO DE TODO CORAZÓN!! :D

Pero...

Tengo Otra Pregunta:

No Me Puedes Dar Una Breve Explicación De La SIntaxis Del Código Que Me Pasaste Como "SetWarnings" No Se Que SIgnifica??

Es Que No Me Gusta Mucho Eso De Copy&Paste!!

Me Gusta Saber Lo Que Escribo, Aprenderlo Y Luego Yo Mismo Aplicarlo!! :)

Ojala Puedas MUchas Gracias Por Tu Tiempo Y Ayuda!! ^.^

DTB

Private Sub...

'Deshabilitamos los mensajes de advertencia. Si ejecutas una consulta de eliminación te sale siempre un mensaje de tipo "Va a eliminar X registros...".

'Con esto evitamos que salga cada vez ese mensaje

docmd.setwarnings false

'Ejecutamos una consulta de eliminación filtrando por valores vacíos en el campo [fecha]
docmd.runsql("DELETE FROM [DATOS REGISTRO] WHERE isnull(fecha)")

'Reactivamos los avisos. Debemos siempre reactivar los avisos porque si 'tuviéramos, por ejemplo, algún error, no nos saldría el aviso de ese error.

'En ese caso el proceso no nos funcionaría y no sabríamos por qué.
docmd.setwarnings true
End Sub

...

Haz la prueba. Convierte los docmd. Setwarnings en comentarios (añadiendo una comilla simple delante, igual que yo lo he hecho en las explicaciones, y haz algún testo dejando registros con la fecha vacía. Verás lo que pasa.

Para volver a la situación anterior basta que borres esas comillas simples de delante de los setwarnings.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas