IAH Presentar un registro principal y sus registros vinculados

De ABCDWIKI Español
Saltar a: navegación, buscar

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
  &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>'