User Tools

Site Tools


eliminacion_de_subcampos

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
eliminacion_de_subcampos [18/06/2009 00:05]
fernando
eliminacion_de_subcampos [19/06/2009 00:00] (current)
Line 7: Line 7:
 Vamos a hacer algunas suposiciones:​ Vamos a hacer algunas suposiciones:​
  
-  * Digamos que nos interesa eliminar el subcampo **f** del campo **333**, por poner un ejemplo arbitrario. +  * Digamos que nos interesa eliminar el subcampo **f** del campo **123**, por poner un ejemplo arbitrario. 
-  * Supondremos que ni el campo 333 ni el subcampo f son repetibles. (Sí, nos conformamos con el caso fácil. Pero es bienvenida una solución más general)+  * Supondremos que ni el campo 123 ni el subcampo f son repetibles. (Sí, nos conformamos con el caso fácil. Pero es bienvenida una solución más general)
  
 ===== La solución ===== ===== La solución =====
  
 <​code>​ <​code>​
-mx base "​proc=@borra-subcampo.pft"+mx base "​proc=@borra123f.pft"
 </​code>​ </​code>​
  
-donde ''​borra-subcampo.pft''​ es un archivo con el siguiente contenido:+donde ''​borra123f.pft''​ es un archivo con el siguiente contenido:
  
 <​code>​ <​code>​
-'d333', +'d123', 
-if replace(v333, s('​^f',​v333^f), ''​) : '​^'​ then +if replace(v123, s('​^f',​v123^f), ''​) : '​^'​ then 
-    '<333>',​ +    '<123>',​ 
-       ​replace(v333, s('​^f',​v333^f), ''​),​ +       ​replace(v123, s('​^f',​v123^f), ''​),​ 
-    '</333>',+    '</123>',
 fi fi
 </​code>​ </​code>​
Line 30: Line 30:
  
 <​code>​ <​code>​
-mx base "​proc=if <​condición>​ then ,@borra.pft, fi"+mx base "​proc=if <​condición>​ then ,@borra123f.pft, fi"
 </​code>​ </​code>​
  
Line 38: Line 38:
  
 <​code>​ <​code>​
-proc='d333'+proc='d123'
 </​code>​ </​code>​
  
Line 44: Line 44:
  
 <​code>​ <​code>​
-'d333', +'d123', 
-'<333>',​ +'<123>',​ 
-    replace(v333, s('​^f',​v333^f), ''​),​ +    replace(v123, s('​^f',​v123^f), ''​),​ 
-'</333>',+'</123>',
 </​code>​ </​code>​
  
-Tenemos un problema: en caso de que el único contenido del campo 333 sea el subcampo f, al volver a crearlo sin ese subcampo nos habremos quedado con un campo 333 vacío. Para evitar eso, antes de proceder a re-crear el campo verifiquemos que contiene algo más que el subcampo que deseamos eliminar:+Tenemos un problema: en caso de que el único contenido del campo 123 sea el subcampo f, al volver a crearlo sin ese subcampo nos habremos quedado con un campo 123 vacío. Para evitar eso, antes de proceder a re-crear el campo verifiquemos que contiene algo más que el subcampo que deseamos eliminar:
  
 <​code>​ <​code>​
-'d333', +'d123', 
-if replace(v333, s('​^f',​v333^f), ''​) <> ''​ then +if replace(v123, s('​^f',​v123^f), ''​) <> ''​ then 
-    '<333>',​ +    '<123>',​ 
-       ​replace(v333, s('​^f',​v333^f), ''​),​ +       ​replace(v123, s('​^f',​v123^f), ''​),​ 
-    '</333>',+    '</123>',
 fi fi
 </​code>​ </​code>​
Line 64: Line 64:
  
 <​code>​ <​code>​
-'d333', +'d123', 
-if replace(v333, s('​^f',​v333^f), ''​) : '​^'​ then +if replace(v123, s('​^f',​v123^f), ''​) : '​^'​ then 
-    '<333>',​ +    '<123>',​ 
-       ​replace(v333, s('​^f',​v333^f), ''​),​ +       ​replace(v123, s('​^f',​v123^f), ''​),​ 
-    '</333>',+    '</123>',
 fi fi
 </​code>​ </​code>​
eliminacion_de_subcampos.1245294300.txt.gz · Last modified: 18/06/2009 00:00 (external edit)