cambiar valores del campo código

vForum público de la plataforma de desarrollo Velneo

Moderador: vCoaches

Responder
Yossua
vMate
vMate
Mensajes: 39
Registrado: 17 Ene 2006, 19:59

cambiar valores del campo código

Mensaje por Yossua » 24 Feb 2006, 10:13

Tengo una tabla maestra y otra histórica de ésta. Necesitaba cambiar el campo código de la tabla maestra (numérico) renumerando todos sus valores desde 1 hasta el número de fichas de la tabla una vez establecido un orden en la tabla maestra por uno de los campos, en este caso la fecha, y que al mismo tiempo se actualizara la tabla histórica para que cada registro de la maestra siguiera apuntando a la histórica. ¿Se puede hacer? ¿Alguna sugerencia de cómo hacerlo?

Avatar de Usuario
Fran
vCoach
vCoach
Mensajes: 6599
Registrado: 21 Sep 2005, 08:23
Ubicación: Madrid (España)
Contactar:

Mensaje por Fran » 24 Feb 2006, 10:29

Buenos dias:

Es posible hacerlo utilizando procesos.

Harías un proceso parecido al siguiente:

Modificar variable global, NEW-CODE, 1
Cargar lista, MAESTRO, Codigo,,
---Recorrer lista lectura / escritura
------Cargar histórico, HISTORICO
---------Recorrer lista lectura / escritura
-------------Modificar campo, MAESTRO, $NEW-CODE$
------Modificar campo, CODIGO, NEW-CODE
------Modificar variable global, NEW-CODE, $NEW-CODE$ + 1

Este proceso inicializa la variable de nuevos códigos a 1, recorre la tabla maestra y carga los históricos de cada ficha. Recorre los históricos establece como código del maestro el valor de la variable.
Al terminar modifica el campo de la tabla maestra y le suma 1 a la variable para el siguiente registro.

Cosas a tener en cuenta:

- No está optimizado para C/S.
- Haz un backup del directorio completo de la aplicación antes de ejecutar, por si acaso.
- Vigila si tienes actualizaciones o procesos de tabla que se puedan ver afectados por estos cambios.

Es un proceso delicado ya que, si se hace mal, se puede perder el enlace entre las tablas.
Un saludo,

Francisco Javier Pérez Novo
EfeUno Consultores de Gestión y Software, S.L.
fjpnovo@efeuno.org
http://www.efeuno.org
(+34) 91 519 44 86
Skype: Fran-EfeUno

Google Maps:
40.447943147972445, -3.6719655990600586

Avatar de Usuario
Fran
vCoach
vCoach
Mensajes: 6599
Registrado: 21 Sep 2005, 08:23
Ubicación: Madrid (España)
Contactar:

Mensaje por Fran » 24 Feb 2006, 11:50

Buenos dias:

Otra cosa que me olvidé de mencionar:

Ten en cuenta que si uno de los nuevos códigos ya existía en el maestro los registros del histórico se mezclarán...

Si ya existía un registro de maestro con el número 100 y estás renumerando el registro con código 84 a 100, al cargar el histórico del registro 84 y modificar el código del maestro al 100, el nuevo registro 100 del maestro pasará a ser maestro de todos los históricos cuyo campo enlazado a maestro sea 100.

Como ya dije es un proceso delicado. Si se comete un error, es fácil que no haya más vuelta atrás que recuperar el backup.

Tendrías que analizar muy bien el contenido de las tablas antes de empezar con el proceso. Por supuesto, no puedes permitir que los usuarios trabajen en la aplicación mientras ejecutas el proceso.

También es posible añadir un nuevo campo (no enlazado) para asignar el nuevo código de maestro a los históricos y, una vez renumerado el maestro, pasar los valores al campo enlazado.
Un saludo,

Francisco Javier Pérez Novo
EfeUno Consultores de Gestión y Software, S.L.
fjpnovo@efeuno.org
http://www.efeuno.org
(+34) 91 519 44 86
Skype: Fran-EfeUno

Google Maps:
40.447943147972445, -3.6719655990600586

Avatar de Usuario
jdseara
vMate
vMate
Mensajes: 59
Registrado: 22 Sep 2005, 08:11
Ubicación: Oviedo

Mensaje por jdseara » 24 Feb 2006, 14:54

Para evitar que se mezclen los históricos, yo haría el proceso que dice Fran pero con valor inicial para la variable NEWCODE 10001 (suponiendo que la tabla tiene menos de 10000 registros). De este modo numeras 10001, 10002... Después, volvería a repetir el proceso pero, esta vez si, con valor 1. Así, el codigo 10001 pasará a ser el 1, el 10002 el 2...
Esto es sólo una idea, no se si funcionará en tu caso.
Un saludo.
Jorge D. Seara

Avatar de Usuario
victor
vCool
vCool
Mensajes: 146
Registrado: 21 Sep 2005, 18:07

Mensaje por victor » 24 Feb 2006, 17:40

Una pregunta para que quieres hacerlo? Si es que necesitas renumerar todos los clientes lo entiendo pero si no es así y solo son unos pocos yo vería si la opción de fundir ficha me soluciona el problema.

Avatar de Usuario
amadis
vLeader
vLeader
Mensajes: 1311
Registrado: 22 Sep 2005, 16:08
Ubicación: Asturias (España)
Contactar:

Mensaje por amadis » 24 Feb 2006, 21:36

A mi se me planteó el problema y tuve que hacer (por seguridad) el proceso de Fran pero con las indicaciones de jdseara: primero renumeré todos los registros a un número alto y luego volví a ejecutarlo para ordenarlos desde el uno....
vSaludos...

Amadís
Axos Soluciones Visuales
Software Gestión Distribución

Web: http://www.axosvisual.com

Responder