En nuestra facturación, una vez abierta una factura, queremos poder navegar a otras facturas siguiendo los siguientes criterios:
Anterior y siguiente factura por código.
Anterior y siguiente factura por fecha.
Anterior y siguiente factura del mismo cliente por fecha.
Anterior y siguiente factura del mismo cliente y de la misma fecha.
Comenzamos con un esquema básico de FACTURAS y CLIENTES, ambas de tipo maestro normal con clave numérica.
Ahora bien: ¿Cómo las enlazamos? Para verlo hemos de enunciar las siguientes frases:
"Varias facturas pueden ser emitidas al mismo cliente"
"Una factura sólo puede ser emitida a un cliente".
Está claro que FACTURAS va a ser un plural de CLIENTES (singular), de modo que enlazaremos ambas tablas mediante un enlace singular-plural.
Al establecer el enlace, se crea automáticamente el campo Clientes y el índice Clientes en la tabla FACTURAS, mientras que en la tabla CLIENTES crea el plural FACTURAS_CLIENTES.
Ahora debemos establecer la navegación de una factura a otra.
Como todos los enlaces, hacen uso de un índice, siendo esto lo primero que hemos de definir.
Para la navegación por número de factura ya tenemos el índice necesario, el índice ID, por lo que únicamente hemos de hacer será crear dos campos, ID_ANT e ID_SIG y definirlos como enlaces de tipo Hermano contiguo.
Elegiremos el índice ID, dejaremos las partes comunes a 0 y elegiremos la dirección correspondiente: Anterior o Siguiente. De esta forma, la ficha se encontrará enlazada con el registro anterior por código y con el siguiente registro existente por código.
Para poder acceder a la ficha anterior por fecha, en vez del índice ID, hemos de usar el índice correspondiente al campo fecha.
De igual forma que habíamos configurado los enlaces a hermano contiguo, en esta ocasión crearemos dos campos que usarán el índice FECHA para enlazar con el anterior y el siguiente registro. De nuevo, las partes comunes serán 0 en ambos.
Para enlazar con la factura anterior o siguiente del mismo cliente por fecha, debemos usar un índice que contenga ambos campos como partes del índice, primero debe tener el campo CLIENTES y como segunda parte el campo FECHA . Para ello podemos crear un nuevo índice o añadir una nueva parte al índice CLIENTES ya existente.
Cuando definamos el enlace de tipo hermano contiguo, además de seleccionar el índice CLIENTES debemos definir una parte común. De esta forma, el enlace se realizará con aquel registro que tenga el mismo cliente en común con la ficha de partida, navegando de un registro a otro según la fecha de la ficha.
Cuando ya no existan más facturas del mismo cliente, bien hacia adelante o bien hacia atrás en el tiempo, no permitirá continuar con la navegación.
Si queremos que, además de navegar por las fichas que tengan el mismo cliente, lo hagan por las fichas que tengan la misma fecha, hemos de configurar los hermanos contiguos con tantas Partes comunes, como campos que queramos equivalentes.
En este caso serán dos partes comunes: Clientes y Fecha.
Usaremos de nuevo el índice CLIENTES la que habíamos añadido la parte FECHA. De esta forma, el enlace se realizará con aquel registro que tenga el mismo cliente y la fecha en común con la ficha de partida, navegando de un registro a otro según el orden de creación de los registros. Si queremos definir otro orden, nos basta añadir otra parte al índice que determine el orden.
En el control botón del objeto formulario encontraremos el comando moverse al hermano que nos permitirá desde un formulario de una ficha acceder al siguiente registro o al anterior según el enlace que definamos en el comando.
Así, podremos definir tantos botones como enlaces a hermano contiguo que hemos creado en la tabla.