el-comando-modificar-campo-no-hace-nada-en-un-subproceso ¿cómo puedes ser?


([N1] andres_pescapuerta) #1

Buenos días,

que el comando modificar campo no haga nada en un subproceso es un problema muy grave. Tenemos una serie de procesos que se tienen que reutilizar en varios puntos de la aplicación, y estos procesos necesitan modificar campos de ficha. La única solución que tenemos es replicar este código allí donde se necesite, con los problemas que acarrea de pruebas, análisis y mantenimiento de software.
Esto atenta gravemente contra uno de los paradigmas básicos de la programación, que es la reutilización de código, vigente en todos los lenguajes desde hace décadas. Esperamos que en posteriores versiones de velneo se reconsideren estos temas que son básicos, y que además en V6 sí funcionaban.

Un saludo.


([N3] blavan) #2

Por favor puedes concretar un poco más


([N4] juan.pescapuerta) #3

Hola.
Es posible que lo tengamos que poner como una IDEA nueva

Saludos


([N1] andres_pescapuerta) #4

Como ejemplo:
Tenemos un proceso de lista que recorre los registros de la tabla y en función de unas comprobaciones tiene que modificar unos campos de la ficha.
Dependiendo de estas comprobaciones tenemos que realizar 5 cálculos diferentes, por lo que la idea inicial es hacer 5 procesos de ficha a los que se llama desde este proceso de lista, y estos procesos de ficha llaman internamente al comando Modificar Campo en varias ocasiones.
Esto no funciona, y los campos no se modifican. Para que funcione hay que copiar el código de los procesos de ficha y pegarlo en el proceso principal de lista. Si los cálculos son complejos imagínate el tamaño del proceso de lista. Sin embargo este no es el principal problema.
Estas comprobaciones y cálculos tengo que hacerlas desde bastantes sitios de la aplicación, lo que me obliga a copiar el código en todos esos puntos, con los problemas que esto supone para el mantenimiento de las aplicaciones. Con lo sencillo que sería llamar a un proceso de ficha (en una sola línea).
Además, uno de esos sitios en los que tengo que llamar a uno de estos procesos es al Aceptar un formulario de ficha, para lo que en el botón llamo a un evento que llama a uno de estos procesos de ficha. En este caso tampoco modifica los campos.


([N1] Rafael) #5

Buenas Andrés,

al llamar desde un proceso a otro, el segundo se ejecuta en planos distintos, por lo que es normal que no puedas poner un simple "MODIFICAR CAMPO". Debes de cambiar el planteamiento. Debes de encapsular en ese segundo proceso todo el recorrilo o lectura de fichas y desde el primer peoceso llamar al segundo con una serie de parámetros en función de loq ue queiras modificar.

Saludos
Miguel Delgado.


([N4] juan.pescapuerta) #6

Hola
Creo que estás equivocado y mucho.
Si tengo un proceso de lista recorro la lista, y por cualquir registro ejecuto un proceso, de ficha, en ese proceso de ficha puedo realizar lo que quierra, (en V6 y En V7) con esa ficha incluido modificar los datos.

Por lo tanto o no nos hemos explicado bien , o no nos has entendido,

Saludos


([N1] andres_pescapuerta) #7

Hola Miguel, creo que no has entendido el problema:
en el primer proceso se recorre la lista, y en el proceso de ficha se hace el resto: con el error que planteamos en este foro esto no funciona, de ninguna forma, hagas lo que hagas en cualquiera de los dos procesos siempre que el modificar campo lo tengas en el proceso de ficha.
Y de todas formas casi que lo más grave es que si quieres hacer esto desde un formulario en un evento al aceptar, no te modifica los campos.
Pruébalo, y si encuentras alguna solución alternativa que me permita encapsular el código y que sea eficiente me lo dices.
Un saludo


([N2] bannu) #8

Yo he encontrado más fallos de este tipo por ejemplo cuando se hace un cargar lista aunque esté bacía el comando recorrer lista funciona igual, hay que comprobar siempre si está bacía, y esto es algo que en la v6 no sucedía, por otra parte cae de cajón que si creas un proceso de ficha y lo disparas desde un recorrer lista lectura/escritura debería poder modificarse los campos del registro, en v6 se hace así, y plantear esto en el foro de Ideas es de risa, es algo que ya tiene que venir implementado con la herramienta, creo que en cuanto a funcionalidad de la base de datos v6 le da mil vueltas al v7, y es algo que no me explico porque el motor de la bd debería ser el mismo, podemos hacer aplicaciones más bonitas pero se ha sacrificado la funcionalidad de v6, espero que esto se corrija.


([N1] wikan) #9

A mi me ocurre lo mismo ejecutando un proceso desde un evento para cambiar unos valores de esa misma ficha.
No hay manera, pongo un mensaje y los valores son correctos. Pero el modificar campo no hace nada.

Las cosas sencillas...se hacen díficiles.


([N4] velavisual) #10

Hola @Velneadores....

Me ha costado trabajo realizar este comentario, ya que personalmente no quiero intervenir mucho en el foro porque a veces se me mal interpreta, no me entienden o tal vez no me explique bién_

¿Habeis leido este post?

http://velneo.es/foros/topic/el-comando-modificar-campo-no-hace-nada-en-un-subproceso

saludos
Antonio Vela
http://www.velavisual.com


([N1] andres_pescapuerta) #11

Hola Antonio,

sí he leido el post que indicas y por eso mismo le he puesto el título a este tema en el foro.
Mi intención no es otra que presentar una fuerza común a ver si esto se soluciona, dado que lo considero de gran importancia.

Un saludo


([N1] Pepeto) #12

Entiendo que un ejemplo como este no funciona: PROCESO-1 (en 1 plano) llama a PROCESO-3 (en 3 plano)

PROCESO-1:
--- Recorrer lista lectura / escritura
--- --- Ejecutar proceso (Proceso-3)
PROCESO-3:
--- Modificar campo (#CAMPO)

Y cual es el problema, a mi tambien me ha pasado, pero se puede solucionar
PROCESO-1:
--- Ejecutar proceso (Proceso-3)
PROCESO-3:
--- Recorrer lista lectura / escritura
--- --- Modificar campo (#CAMPO)

un saludo
Jose Luis


([N1] Pepeto) #13

El problema parece que surge porque el recorrer lista esta en un proceso y modificar campo esta en otro proceso diferente, la solucion : unir recorrer lista con modificar campo, y solucionado,

Entiendo que al recorrer lista en lectura/escritura en el proceso-1, este bloquea los registros y el proceso-3 no puede realizar los cambios, pero esto no pasa cuando ambos estan en el mismo proceso.

un saludo
Jose Luis
http://www,ascsl.com


([N2] bannu) #14

Lo que quiere hacer Andrés es lo siguiente( o al menos eso he entendido yo):

Recorrer lista lectura / escritura
if( condicion )
ProcesoModifica1
else if(condicion2)
ProcesoModifica2
else if(condicion3)
ProcesoModifica3

Y no se puede hacer, yo lo he intentado sin disparar los procesos en tercer plano, en local y no modifican nada, y lo de bloquear la ficha, ¿no quedamos en que era un bloqueo blando? En v6 se puede hacer así, incluso si el proceso está en 3er plano, y es un software que lleva más de 6 años sin tocar, esto parece la canción de María, Un pasito pa'lante, Un pasito pa'tras.


([N1] Pepeto) #15

El ejemplo que planteas , tambien tiene una solucion facil, pero la voy a decir mas tarde ...

ahora a pensar ... que el ejercicio es bueno, para el cuerpo y para la mente ;)

un saludo
Jose Luis
http://ascsl.net


([N2] bannu) #16

Todo en esta vida tiene solución, pero un software de programación te tiene que facilitar la labor y no
complicártela, porque entonces ya no es tan life is soft.


([N4] velavisual) #17

@andres_pescapuerta

Pienso (y sin haberlo probado):

- Creas el proceso con las condiciones y modificaciones correspondientes en el proyecto de datos
- En el proyecto de aplicación y mediante -manejador de objetos- le pasas los valores al proceso y este deberá modificar los campos que necesites.
- Puedes hacer el segundo paso con una función en el proyecto de aplicación y sea esta la que llame al proceso mediante el manejador.

saludos
Antonio Vela
http://www.velavisual.com


([N4] velavisual) #18

@andres_pescapuerta

No he podido resistir la tentación y he realizazo un pequeño ejemplo (probado) que si funciona.
No sé si realmente se asemeja a tus necesidades pero, ahí lo dejo. Está basado en mi comentario anterior.

saludos
Antonio Vela
http://www.velavisual.com

[attachment=15617,1288]


([N3] asesoria) #19

Muchas gracias Antonio


([N1] andres_pescapuerta) #20

Hola a todos,

gracias por contestar y buscar soluciones. El problema no es que no pueda hacer lo que necesito, que ya lo tenía hecho, si no que se supone que hay que aprovechar al máximo la herramienta y hacer soluciones "sencillas" y fáciles de mantener. ¿Para que tener procesos de lista y procesos de ficha?
Por otro lado, pensando en la eficiencia de la aplicación: no se puede modificar la ficha en el segundo proceso porque se realiza una copia de ésta en memoria. El paso de parámetros por referencia es más rápido que por valor, y además permite la modificación de la ficha.
Al final la solución es hacer un cargar lista allí donde necesite modificar los campos, y vuelvo a lo mismo, ¿para qué sirve entonces un proceso de ficha?
Gracias de nuevo a todos y un saludo