| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Validación de duplicados

Page history last edited by Guilda Ascencio 10 years, 5 months ago

Para explicar el proceso de validación de duplicados usaremos como ejemplo el campo del ISBN (tag 20 en las estructuras MARC)

 

La validación de duplicados consiste en ubicar si ya existe en la base de datos otro registro con igual valor que el campo en proceso de validación. La forma más directa de realizar este proceso es a través de una búsqueda en la lista invertida. Si ya existe un término igual, entonces podemos asumir que el campo está duplicado.

Sin embargo, ésto no es totalmente cierto, ya que en el proceso de edición de registros ya los campos han sido indizados en la base de datos por lo cual, al ya existir la clave, podríamos tener una condición de falso duplicado. Por ello hay que tomar ciertas previsiones para que nuestro formato cubra todas las posibilidades.

 

Por otra parte, cuando se crea un nuevo registro, la validación se realiza sobre un registro virtual, por cuanto no existe un registro real. Por definición, el MFN de los registros virtuales tiene el valor 1, por lo que también hay que tomar ciertas previsiones para distinguir entre el MFN 1 del registro real y el MFN 1 del registro virtual.

 

El proceso de validación de registros siempre se realiza sobre un registro virtual por lo que nos toca tomar previsiones para diferenciar si estamos aplicando la  validación sobre un registro nuevo o sobre un registro ya existente. El lenguaje de formateo provee el comando MFN para determinar el número mfn del registro que se está procesando. Como ya dijimos, no podemos utilizar esta facilidad ya que siempre nos devolvería 1, valor del MFN en el registro virtual.

 

Tomando en cuenta estos factores procederemos a desarrollar un formato para validación de duplicados.

 

Con la función L del lenguaje de formateo podemos determinar si ya existe en la lista invertida otro registros con la clave de búsqueda suministrada. Esta función devuelve el MFN del primer registro que contenga la clave solicitada. Si el ISBN está indizado con el prefijo IS_, tendríamos:


If L('IS_'v20)<>0 then 'ISBN duplicado' fi

 

Como la validación se realiza sobre un registro virtual, es necesario suministrar en la función L el nombre de la lista invertida sobre la cual se va a aplicar la búsqueda


If L(['marc'] 'IS_'v20)<>0 then 'ISBN duplicado' fi

 

Este formato funciona en creación de registros, pero no en la modificación, ya que el ISBN ya existe en la lista invertida. Por lo tanto la función L retornaría el MFN del registro que se está modificando.
Esto nos dice que necesitamos comparar el MFN que nos devuelve la función L contra el MFN del registro que estamos procesando para determinar si ambos coinciden, lo cual anularía la condición de error.


if l(['marc']|IS_|v20^a) <> 0 then
   if l(['marc']|IS_|v20^a)<>MFN then 'ISBN duplicado', fi
fi


Como ya dijimos que la validación opera sobre un registro virtual, y el MFN de un registro virtual es siempre uno (1), la fórmula antes mencionada no produce ningún resultado confiable ya que la función L siempre retornaría 1.


Para manejar esta circunstancia, cuando ABCD activa el proceso de validación, coloca en el campo 3333 el valor 0 si se trata de un registro nuevo, o el MFN del registro si se trata de un registro en proceso de edición. Por lo tanto, podemos expresar nuestro formato de validación de la siguiente manera:


if l(['marc']|IS_|v20^a) <> 0 then
   if l(['marc']|IS_|v20^a)<>val(v3333) then 'ISBN duplicado', fi
fi


De esta forma estamos verificando que no exista ningún registro con la clave solicitada y además que, en caso de existir, que el MFN del registro recuperado no sea igual al MFN del registro que se está procesando.


Si deseamos restringir la validación de duplicados solo en el caso de creación de registros, el formato para validación de duplicados quedaría:


if val(v3333)=0 then
   if l(['marc']|IS_|v20^a) <> 0 then  'ISBN duplicado’ fi
fi

 

Ejemplo de validación del número de control duplicado:


if val(v3333)=0 then
   if l(['marc']|CN_|v2) <> 0 then  'Control, duplicado ',v2 fi
fi

 

 

 

 

 

 

Diapositiva 81
Como la validación se realiza sobre un registro virtual, es necesario el nombre de la lista invertida sobre la cual se va a aplicar la búsqueda

Comments (0)

You don't have permission to comment on this page.