Difference between revisions of "IAH Presentar un registro principal y sus registros vinculados"

From ABCD Wiki
Jump to: navigation, search
(Página creada con «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.,...»)
 
Line 32: Line 32:
 
     JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_20011100
 
     JF_ALAMBIQUE. DIDACTICA DE LAS CIENCIAS EXPERIMENTA_20011100
  
Si utilizamos 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:
+
Si utilizaremos 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
 
     &Expresion=NC_'V1
     Asumiendo que el prefijo que relaciona los revistros vinculados es '''NC_''' el número de control se encuentra en el campo '''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:
+
A partir de esta especificación pueden idearse muchas formas para presentar los registros vinculados. Presentamos tres ejemplos:
  
. 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 localizar en forma inmediata los registros vinculados
+
'''1. Un enlace que presenta los registros vinculados en una ventana a continuación del registro madre'''
  
. Activando la presentación de los registros vinculados mediante un click sobre un enlace insertado en la página.  En este caso se incluirá en la página de los resultados un elemento '''DIV''' oculto con el elemento '''IFRAME''' pero el URL de este último se suministrará al hacer clic sobre el enlace, mediante una función Javascript.
+
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.  
  
  <javascript>
+
      Ejemplo:
    function PresentarRelaciones(db_path,base,cipar,Formato,Expresion){
+
     
        document.getElementById("relaciones").style.display = "block";
+
      `<a href='Javascript:PresentarRelaciones("/bases_abcd/bef/","biblo2","biblo2.par","fasciculo","JF_`mpu,v30*0.48,mpl,`_$",`f(mfn,1,0)`)'>
        document.getElementById("relacionesFrm")
+
          Fascículos (Ejemplo 1: se abre una ventana debajo del registro maestro</a><p>`/
        relacionesFrm.src="localhost:9090/central/dataentry/opac_ref.php?db_path="+db_path+"&base="base"+"&cipar="+cipar+
+
      '<div id="relaciones_',f(mfn,1,0),'" style="display:none;border:1px solid;width:600px;height:400px;padding:5px;position:relative;">
        "&Formato="+Formato+"&Expresion="+Expresion
+
            <iFrame id="relacionesFrm_id_',f(mfn,1,0),'" width=590 height=380>
    }   
+
            </iFrame>
  </javscript>
+
    <a href="javascript:Cerrar('f(mfn,1,0)')">Cerrar</a><br>
 +
      </div>
 +
      '/
  
    Nota: el salto de línea incluido en el src es solo para efectos de visualización
+
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.
  
   <div id=relaciones style="display=none">
+
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:
      <iFrame id=relacionesFrm name=relacionesFrm>
+
 
      </iFrame>
+
      <hr><strong>'''''Título de la tabla'''''</strong><br>
  </div>
+
      <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>
 +
    <script>
 +
 
 +
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
 +
 
 +
    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'''
 
   
 
   
  <a href=Javascript:PresentarRelaciones("/bases_abcd","biblo2","biblo2.par","fasciculos","'JF_'v30*0.48'_$")>Relaciones</a>
+
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.

Revision as of 14:30, 10 September 2019

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., etc. Nuestra primera opción sería pensar en el uso del REF 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 este 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 los registros vinculados.

El formato para indización de los registros vinculados 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

Si utilizaremos 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>

`/ '

     '/

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:


Título de la tabla
Título col. 1</th> Título col. 2</th> Título col. 3</th> Título col. 4</th>
    <script>

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

    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
</a>

`/ '

'


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.