Uso de los triggers en MS-Access 2010

Descripción de cómo usar los disparadores (o macros de datos) en una base de datos Microsoft Access 2010.

En concreto se trata de actualizar las existencias de la tabla productos según se vayan insertando, modificando o borrando datos en la tabla detalles.

1) Las tablas

detalles productos
id_detalle
id_producto
cantidad
precio
id_producto
producto
precio
existencias

Al añadir un detalle se especifica una cantidad de producto. Esa cantidad hay que restarla de las existencias del producto. Para que este cambio sea automático hay que crear una macro de datos en la tabla detalles que se ejecute después de insertar un detalle.

De forma similar hay que cambiar las existencias del producto cuando se modifique la cantidad del detalle. Hay que tener en cuenta que una modificación del detalle podría ser un cambio a otro producto. La macro de datos que necesitamos se ha de ejecutar despues de actualizar un detalle.

Finalmente al borrar un detalle hay que restaurar las existencias del producto según la cantidad que indicaba el detalle borrado. La macro de datos es después de borrar.

1a) Relación entre las tablas

1b) Datos de ejemplo de la tabla detalles

1c) Datos de ejemplo de la tabla productos

2) Las macros de datos en la tabla detalles

2a) Despúes de insertar

Restar a las existencias del producto la cantidad del detalle

2b) Despúes de actualizar

Sumar a las existencias del producto antiguo la cantidad antigua del detalle.
Restar a las existencias del producto actual la cantidad actual del detalle.

2c) Despúes de eliminar

Sumar a las existencias del producto antiguo la cantidad antigua del detalle.

2d) Antes del cambio

Toma el precio del producto

3) Las macros con nombre que simplifican las macros de datos

Se observa que hay mucho código repetido en las macros de datos de insertar, actualizar y eliminar.
Para evitar esta redundancia creamos dos macros con nombre:

  • AumentarExistenciasProducto
  • DisminuirExistenciasProducto

3a) AumentarExistenciasProducto

Se utilizará al modificar o borrar un detalle.

3b) DisminuirExistenciasProducto

Se utilizará al modificar o insertar un detalle.

3c) Despúes de insertar

3d) Despúes de actualizar

3e) Despúes de eliminar

4) Descargar base de datos de ejemplo

Comentarios

Proinf.net, ©2003-2019 ci 3.1.10 (CC) Esta obra está bajo una licencia de Creative Commons Este software está sujeto a la CC-GNU GPL