Vincular registros
Supongamos que tenemos un registro principal A1 y en otra base de datos, o en la misma, tenemos varios registros vinculados con ese registro principal, A1.1, A1.2, A1.3, etc. Nuestra primera opción sería pensar en el uso de la función REF del lenguaje de formatos para ubicar los registros vinculados desde el registro principal, utilizando la clave que los relaciona (Ejm. el número de control); sin embargo, si utilizamos el comando REF solo localizaremos el primer registro vinculado.
Además, la versión 2.0 de ABCD permite varias versiones de cisis para crear bases de datos (ansi, bigisis, ffi, utf8, bigisis) por lo que podemos tener el registro principal en una versión de cisis y los registros vinculados en otra versión de cisis. Si aplicamos la función REF del lenguaje de formateo, los registros vinculados serán leídos con la misma versión del registro principal.
Para solucionar este problema se aconseja incluir en el formato de despliegue del registro principal una etiqueta IFRAME para que realice la búsqueda de los registros vinculados aplicando la versión y juego de caracteres correspondientes a la base de datos vinculada.
La base de esta acción está en el archivo dr_path.def de las bases de datos tanto principal como vinculadaa que define la versión y juego de caracteres de cada base de datos. Entonces si en la base de datos principal tenemos en el dr_path.def los parámetros:
CISIS_VERSION=utf8
charset=UTF-8
La base principal se presentará utilizando la versión de cisis utf8 y el juego de caracteres de la página de la etiqueta content-type será UTF-8
Ahora bien, si la base de datos vinculada especifica en su archivo dr_path.def los parámetros
CISIS_VERSION=ansi
charset=ISO-8859-1
Se utilizará la version ansi de cisis pero los datos deben ser presentados en UTF-8.
Adicionalmente a estos problemas, debemos recordar que la función REF del lenguaje de formatos recupera un solo registro de la base de datos vinculada y probablemente necesitemos recuperar más de un registro. Como referencia a este planteamiento ver: Vinculación de registros
La respuesta en el OPAC a esta situación se logra a través de la etiqueta IFRAME que permite insertar una nueva búsqueda en el formato y desplegarla como una página incrustada en la página principal. Deberá incluir en el formato, en el lugar apropiado, los siguientes comandos:
`<iframe frameborder="0" scrolling="no" width=600
onload="this.style.height=this.contentDocument.body.scrollHeight +'px';"
src="http://localhost:9091/opac_abcd/php/opac_ref.php?base=loanobjects&lang=en
&Formato=@opac_loanobjects.pft&Expresion=`Expresion`">
</iframe>`
Explicación: La etiqueta IFRAME permite incrustar en una página otra página HTML con todas sus propiedades. Entonces, se utiliza el parámetro src del IFRAME para realizar una búsqueda alterna llamando al script opac_ref.php que recibirá como parámetros
base = Nombre de la base de datos vinculada
lang = lenguaje activo almacenado en la variable v5017 enviada por el script de búsqueda
Formato = Nombre del formato a utilizar para presentar los registros vinculados
Expresion = Expresión de búsqueda a aplicar sobre la base vinculada para presentar
los registros recuperados. Ejemplo:
&Expresion=CN_marcuni_v1
Note que se usa como literal no el apostrofe ‘ sino de apostrofe inclinado hacia la izquierda ` para delimitar los literales por cuanto al interior de la etiqueta IFRAME se usan tanto comillas dobles “ como apostrofes ‘ para definir parámetros.
El script opac_ref.php llamado desde el IFRAME se encarga de realizar la búsqueda, leyendo el archivo dr_path.def de la base de datos, obteniendo la versión del cisis que indique el parámetro CISIS_VERSION y colocando la codificación de la página de acuerdo al parámetro charset