Usos de los indirectos reales

Hola. Quiero tener en una tabla campos apuntes donde se han usado eso registros. Es decir, un ejemplo. Tengo un pedido y un albarán, y quiero dejar guardado en el pedido en que albarán se ha metido, pero sin tener que poner un maestro, el indirecto real me puede valer, pero no sé resolverlo.

Como se haría??

Gracias

Hola contabilidad.

Es una lógica de negocio un poco particular, pero veamos una solución.

Tienes la tabla PEDIDOS y cada Pedido debe tener un Puntero a un determinado Albarán de la tabla ALBARANES.

image

El acceso al Albarán desde el Pedido lo resolvemos mediante un puntero Indirecto real. Para ello tenemos un campo ID_ALBARAN y el campo puntero Indirecto real ALBARAN.

Tabla PEDIDOS
image

El puntero Indirecto real se resuelve mediante el campo ID_ALBARAN con el Índice ID de la tabla ALBARANES.

Puntero Indirecto real
image

La tabla ALBARANES tiene un puntero Maestro a la tabla PEDIDOS y una Actualización que actualiza el campo ID_ALBARAN de la tabla PEDIDOS con el ID del Albarán.

Tabla ALBARANES
image

Actualización del campo ID_ALBARAN
image

Observa que la tabla ALBARANES no tiene Índice del campo puntero maestro PEDIDOS. De esta forma la tabla PEDIDOS no tiene plurales en ALBARANES y así podrás eliminar un Pedido aunque tenga un Albarán asignado. Esto rompe la Integridad referencial de la base de datos, tenlo en cuenta.

Con este diseño, cuando das de alta un Albarán, la actualización guarda en el campo ID_ALBARAN del Pedido maestro el #ID del Albarán recién creado. Automáticamente el puntero Indirecto real se resuelve apuntando a la Ficha del Albarán.

Esto es la magia de los punteros y de la Base de datos Real de Velneo.

Saludos
Paco Satué

2 Me gusta

Gracias, ya entendi.

Hola, también puedes crearle el puntero en la tabla de albaranes a la tabla maestra pedidos, sería lo correcto, y cuando quieras borrar un pedido tendrás dos opciones, o no permitirlo o en el trigger anterior a eliminar ‘desconectar el albarán de su pedido’ accediendo al maestro pedidos y poniendo el campo a 0.

Saludos. Miguel.