Difference between revisions of "Cambios globales con el MX"

From ABCD Wiki
Jump to: navigation, search
(Página creada con «Mauricio Brito escribió: Necesito una mano para corregir datos en unos subcampos de mi base marc en abcd. Deseo cambiar todos los campos que tengan MFC en el campo 900 su...»)
 
 
Line 12: Line 12:
  
  
'''
+
'''Ernesto Spinak responde''':
Ernesto Spinak responde''':
 
  
 
Si la cantidad de registros son muchos, lo recomendable es hacerlo directo en la base desde la línea de comandos
 
Si la cantidad de registros son muchos, lo recomendable es hacerlo directo en la base desde la línea de comandos

Latest revision as of 08:40, 8 April 2014

Mauricio Brito escribió:

Necesito una mano para corregir datos en unos subcampos de mi base marc en abcd. Deseo cambiar todos los campos que tengan MFC en el campo 900 subcampo k por el dato mfeican, para ello estoy usando un archivo prc que tiene el siguiente script:

  if (v900^k = 'MFC') then
      'd900^k'
      '<900>^kmfeican</900>'
  fi,

Este script me sirve cuando deseo borrar todo el campo, pero no logro hacerlo ejecutar para cando solo deseo cambiar o eliminar un subcampo. Cuando ejecuto este script obtengo el siguiente resultado:

  fatal: ^k<900>^kmfeican</900>


Ernesto Spinak responde:

Si la cantidad de registros son muchos, lo recomendable es hacerlo directo en la base desde la línea de comandos

     1) Haz una copia de tu base marc para respaldo, o sea los archivos mst y .xrf por cualquier eventualidad
     2) usaremos un gizmo especial para ese cambio y la instrucción será
     mx marc  gizmo=chmfc,900 copy=marc now -all tel=100

El archivo gizmo lo creas de la siguiente forma interactiva directa en la ventana de comandos

     C:\>mx seq=con create=chmfc now
     ^kMFC|^kmfeican
         mfn=     1
           1  «^kMFC»
           2  «^kmfeican»
         ^Z

Egbert de Smet responde:

Just for 'academic' purposes, let me add that a proc would also have worked (ISIS has often several solutions...) :

   1. create a text-file, e.g. mfc.proc :
      'd900',
      '<900>', replace(v900,'^kMFC','^kmfceikan'),'</900>',

(if you don't want to risk empty v900 to be created, add a condition, e.g. if p(v900) then ... fi or even your original if (v900^k = 'MFC') then ... fi

   2. then :
      mx marc proc=@mfc.prc replace=marc now -all