Vincular registros de bases de datos

 

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