Supongamos que tenemos un registro principal A1 y en la 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; sin embargo, si utilizamos el comando REF solo localizaremos el primer registro vinculado.
La solución para esta situación es incluir en el formato de despliegue del registro principal un elemento iFrame. Como éste tiene entre sus parámetros el URL a utilizar para darle contenido al iFrame, este URL puede contener la búsqueda que se desea realizar para localizar los registros vinculados.
El procedimiento propuesto es el siguiente:
- Verifique la existencia o incluya el script central/dataentry/opac_ref.php en su instalación de ABCD. Este script recibirá los siguientes parámetros:
db_path Nombre de la carpeta donde están almacenadas las bases de datos base Nombre de la base de datos donde se encuentran los registros vinculados cipar Nombre del archivo .par (localizado en la carpeta par al cual apunta el parámetro db_path antes mencionado Expresion Búsqueda a aplicar sobre la base de datos contentiva de los registros vinculados Formato Nombre del formato a utilizar para localizar los registros vinculados (sin la extensión .pft) Este nombre debe estar referenciado en el archivo .par
Ejemplo
<iframe src="[http://localhost:9090/central/dataentry/opac_ref.php?db_path=/bases_abcd/&base=biblo2&cipar=biblo2.par](http://localhost:9090/central/dataentry/opac_ref.php?db_path=/bases_abcd/&base=biblo2&cipar=biblo2.par)
&Formato=fasciculo&Expresion=JF_'v30*0.48'_$"></iframe>
Nota: el salto de línea en el URL es solo para efectos de una mejor visualización del mismo
En este ejemplo la clave para recuperar los registros vinculados se construye con el prefijo JF_ seguido con los 48 primeros caracteres del nombre de la revista y luego la expresión _$ para asegurar la recuperación de todas las relaciones.
El formato para indización de los registros relacionados se construye en la FST de forma tal de obtener las siguientes claves:
JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_19990300
JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_19990600
JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_19990900
JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_19991200
JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_20010300
JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_20010600
JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_20010900
JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_20011100
En caso de utilizar el número de acceso del registro madre como clave para vincular los registros entonces la fórmula de búsqueda podría expresarse como:
&Expresion=NC_‘V1
Asumiendo que el prefijo que relaciona los registros vinculados es **NC_** el número de control se encuentra en el campo **V1**
A partir de esta especificación pueden idearse muchas formas para presentar los registros vinculados. Presentamos tres ejemplos:
1. Un enlace que presenta los registros vinculados en una ventana a continuación del registro madre
En este caso se incluirá en la página de los resultados un elemento DIV oculto que servirá de contenedor del elemento IFRAME. Al hacer clic sobre este vinculo se llama a la función PresentarRelaciones la cual construye el URL para recuperar los registros vinculados y colocar esta información en el iFrame.
Ejemplo:
`<a href='Javascript:PresentarRelaciones("/bases_abcd/bef/","biblo2","biblo2.par","fasciculo","JF_`mpu,v30*0.48,mpl,`_$",`f(mfn,1,0)`)'>
Fascículos (Ejemplo 1: se abre una ventana debajo del registro maestro</a><p>`/
'<div id="relaciones_',f(mfn,1,0),'" style="display:none;border:1px solid;width:600px;height:400px;padding:5px;position:relative;">
<iFrame id="relacionesFrm_id_',f(mfn,1,0),'" width=590 height=380>
</iFrame>
<a href="javascript:Cerrar('f(mfn,1,0)')">Cerrar</a><br>
</div>
'/
Como hay que definir un contenedor DIV para cada registro madre, usamos el MNF en el ID de cada contenedor para mostrar/ocultar el correspondiente.
Si la presentación de los registros vinculados se hace en forma de tabla, es necesario definir el archivo ref_head.tab en la carpeta donde pfts/es/ donde se localiza el formato de despliegue de los registros vinculados. Este archivo tendrá, por lo menos, el siguiente contenido:
<hr><strong>'''''Título de la tabla'''''</strong><br>
<table>
<th><font face=courier size=2>'''''Título col. 1'''''</th>
<th><font face=courier size=2>'''''Título col. 2'''''</th>
<th><font face=courier size=2>'''''Título col. 3'''''</th>
<th><font face=courier size=2>'''''Título col. 4'''''</th>
Con esta especificación se formateará correctamente la tabla en la salida
Para activar el vínculo se debe incluir estas funciones junto con todos los javascripts utilizados en el proceso de despliegue de los registros
<script>
function PresentarRelaciones(db_path,base,cipar,Formato,Expresion,mfn){
rel=document.getElementById("relaciones_"+mfn)
relFrm=document.getElementById("relacionesFrm_id_"+mfn)
if (rel.style.display == "inline-block"){
rel.style.display= "none";
relFrm.src=""
}else{
rel.style.display= "inline-block"
url="http://localhost:9090/central/dataentry/opac_ref.php?
db_path="+db_path+"&base="+base+"&cipar="+cipar+"&Formato="+Formato+"&Expresion="+Expresion
relFrm.src=url
}
}
function Cerrar(mfn){
rel=document.getElementById("relaciones_"+mfn)
rel.style.display= "none";
}
</script>
Nota: el salto de línea incluido al definir la variable url es solo para efectos de visualización
2. Un enlace que abre los registros vinculados en una ventana emergente
Este caso es igual al anterior, lo que cambia son los parámetros que definen al contenedor DIV
`<a href='Javascript:PresentarRelaciones("/bases_abcd/bef/","biblo2","biblo2.par","fasciculo","JF_`mpu,v30*0.48,mpl,`_$","1")'>
Fascículos (Ejemplo 3: se abre un popup con los fasciculos<br></a><p>`/
'<div id="relaciones_1" style="display:none;border:1px solid;border-radius:5px;width:600px;height:400px;padding:5px;
position:fixed;z-index:99;top: 10px; bottom: 0;left: 0; right: 0;background: white;">'/
'<iFrame id="relacionesFrm_id_1" width=590 height=380>
</iFrame>
<br><a href="javascript:Cerrar('1')"><font size=3><strong>Cerrar</strong></font></a>
</div> '
3. A continuación el registro madre
Para ello defina un tag DIV como contenedor del iFrame. La especificacion iFrame incluida en el ejemplo anterior corresponde a este caso ya que para cada registro madre recuperado se localiza en forma inmediata los registros vinculados. Es decir: la búsqueda se trae la información tanto del registro madre como de los registros vinculados.
'<div style="position: relative;overflow: hidden;padding-top: 56.25%;">
<iframe style="position: absolute; top: 0;left: 0; width:500px;height: 100%;border: 0;"
src="http://localhost:9090/central/dataentry/opac_ref.php?db_path=/bases_abcd/bef/&base=biblo2&cipar=biblo2.par
&Formato=fasciculo&Expresion=JF_',mpu,v30*0.48,mpl'_$"></iframe>
</div>'