Imprimir página | Cerrar ventana

Borrar registro con relaciones a otras tablas

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84734
Fecha de impresión: 13/Noviembre/2019 a las 01:27


Tema: Borrar registro con relaciones a otras tablas
Publicado por: luis45ccs
Asunto: Borrar registro con relaciones a otras tablas
Fecha de publicación: 03/Octubre/2019 a las 01:54
Hola Amigos, encontre que ya estaba inscrito, pero prácticamente soy nuevo acá.
Trabajo profesionalmente con access, pero tengo un problema que no he podido solucionar correctamente.

Es acerca del tema de los registros que un usuario elimina(Uno o varios). Si estos necesitan sumar algo o algún trabajo en otras tablas, esto se vuelve una locura en access, tanto así que por cada evento delete prefiero recalcular cualquier total de otras tablas (y esto me parece absurdo y lento).

Normalmente, prefiero no almacenar muchos valores (suma o totales) en otras tables, sino que prefiero sumar de nuevo todo, pero realmente lo eficiente es llevar algunos totales en ciertas tablas. Pero borrar un registro es una pesadilla.Confused

El evento delete del formulario se ejecuta una vez por cada registro borrado (sin esperar por la respuesta del usuario, estos registros pasan a un buffer temporal (pero este es el único momento en el que se pueden accesar los datos del registro(s) borrado, y por lo tanto poder hacer las relaciones(sumas, restas) con las demás tablas. Teniendo que reversar todo, en caso de que el usuario decida no borrar 100 datos, jaja. Valla lío.

Si esperamos a la pregunta de "Borrar 100 registros (o uno)" y el usuario contesta que si (borralos), no hay manera de ver los datos. Si el usuario los reversa, pues bien, no hicimos nada aun. 

Así que no hay acceso a los registros, teniendo la decisión definitiva de borrarlos.

Incluso cambiando a una pregunta manual, digamos por cada delete, entonces hay choques por ejemplo si el registro es una linea de albarrán y actualizas el total del producto, aunque este en otra tabla (obviamente) aun así, debido a que esta linea tiene algunas uniones (relaciones) con el producto y que en este momento access puede hacer no se que cosa con el registro del producto (tal vez actualizaciones en cadena) lo cierto es que en este momento si actualizo el producto me aborta la eliminación con el mensaje de que no se puede borrar porque otro usuario esta usando los mismos datos, y soy yo solo el que estoy haciendo pruebas.

Si no escribo en el producto, no ocurre el error y borra correctamente, pero ya no actualice stock y me toca sumar 1 millón de compras y ventas. jajaja.

En resumen no logro borrar si hay relaciones (de sumas y restas entre archivos no las de las tablas)
Posible mente si quito las relaciones de las tablas funcione, pero no me parece lógico.

Ademas de que si cancelan la eliminación hay que memorizar todo, para echarlo atrás.

No se si me explique, pero no encuentro una buena forma para hacer esto

Gracias, a ver si alguien se anima a ponerme unas letras





Respuestas:
Publicado por: lupecinda
Fecha de publicación: 03/Octubre/2019 a las 12:34
Hola.
Yo no soy experto en el tema pero creo que no tiene sentido almacenar sumas en otras tablas, sino ejecutar las sumas en el momento que las necesites.
Por otro lado, no es necesario relacionar esos campos de distintas tablas si lo haces por código.
Saludos
Carlos


-------------
Lupita



Imprimir página | Cerrar ventana