Actualizar campos de otras tablas


([N4] mittosoftware) #1

Quizá sea demasiado obvio, pero entre las opciones de proceso, no encuentro como actualizar campos de otras tablas que no sean la tabla principal del objeto, ya sean que tengan relación, o no tengan relación alguna alguna con la tabla principal.
.
Ejemplo, tablas que se usen para numeración de secuencias de distintas tablas del sistema. Que se actualice el conteo secuencial (ojo, no tiene nada que ver con el ID interno), cada vez que un registro se agrega exitosamente.
.
Gracias de antemano por cualquier aclaración.


([N2] gegeo) #2

Modificar campo y modificar campo de maestro enlazado si que puedes.

Ahora bien, modificar campo de otras tablas, no se si podras, sin antes de modificar cargas la lista y seleccionas la ficha que te interesa.

No lo he probado, se me ha ocurrido ahora.

Saludos


([N2] gegeo) #3

Creo que cada dia me expreso peor.

Prueba a cargar lista, seleccionar ficha, modificar ficha, modificar campo.

Dentro de un mismo proceso, puedes cargar las listas que necesites, y condicionando los resultados con if/Else, ir modificando segun necesidad.

Vamos, o eso se me ha ocurrido a mi, pero no lo he probado. :D

Saludos


([N4] eic) #4

Hola.

Como te comenta gegeo:

- Campo de la propia tabla:
Modificar campo CAMPO

- Campo de una tabla relacionada:
Modificar ficha de maestro CAMPO_ENLAZADO
Modificar campo CAMPO

- Campo de otra tabla:
Cargar lista TABLA, INDICE, condición
Seleccionar ficha por posicion -> 1 (p.ej.)
Modificar ficha seleccionada
Modificar campo CAMPO

Saludos,

Fran Varona


([N4] mittosoftware) #5

Gracias por la info. Refloto el tema por otras dudas que me surgen.

¿Como la BD Velneo maneja las transacciones en estos casos? Las actualizaciones hechas a otras tablas vía proceso, ¿quedan dentro de la atomicidad de la transacción principal?

¿Como lo hace cuando es bloqueo blando? ¿Y cuando es bloqueo duro?


([N4] mittosoftware) #6

...


([N4] eic) #7

Hola.

Cuando desde una transacción realizas otras (p.ej., modificar un campo de otra tabla), esas segundas transacciones quedan insertadas en la primera, de manera que si no se completa, deshace todo lo que se hizo dentro de ella.

Más info: http://velneo.es/info_v7_76_es/velneo_vserver_v7/funcionalidades/sistema_transaccional

En cuanto a bloqueos:

http://velneo.es/info_v7_76_es/velneo_vserver_v7/funcionalidades/sistema_de_bloqueos

Saludos,

Fran Varona


([N4] mperez) #8

Hola Cesar, además de todo lo que te han comentado que es totalmente correcto, acuérdate de las actualizaciones. Repasa tus procesos, por que lo mas habitual cuando se empieza es intentar modificar los campos de otras tablas desde proceso, cuando realmente con definir una actualización en base de datos te será suficiente.

Ten en cuenta que las actualizaciones tienen dos posibilidades, la normal y por valor absoluto.

Si a esto le añades que las puedes condicionar como quieras y que puedes utilizar infinidad de enlaces, te darás cuenta de que lo mas probable es que lo que quieres realizar por proceso, sea mucho mas sencillo y lo mas importante, mucho mas mantenible en el futuro con las actualizaciones.

Te comento esto, por que es bastante tipico en los que empiezan en Velneo, hacer por proceso lo que se puede definir en la base de datos y con mucho menos trabajo. Las actualizaciones al principio parecen limitadas, sin embargo normalmente es una de las parcelas que mas te ayudan en tus progresos en Velneo e identifican claramente al programador experimentado en Velneo


([N4] mittosoftware) #9

Miguel, la numeración de todos las tablas que deben tener secuencia (algo que no garantizan los ID autonuméricos), la llevo en una tabla no-relacionada.
.
Segun se, con la actualización no puedo modificar la tabla no-relacionada, cierto?
.
Otra cosa, donde hay ejemplos de actualización por valor absoluto? No me queda claro para que sirve, la verdad.
Gracias de antemano.
Saludos.
César


([N4] eic) #10

Hola.

No, por actualización no se pueden modificar tablas no relacionadas.

Las actualizaciones son:

- Acumulativas: el valor que actualiza se suma (o resta, si es negativo) a la cantidad que ya haya en el campo de la tabla relacionada
- Absolutas: el valor que actualiza se escribe directamente en el campo de la tabla relacionada. P.ej., la fecha de última venta se puede escribir en la tabla Clientes desde la tabla Facturas.

Saludos,

Fran Varona