Instrucción [Modificar campo]


([N4] eic) #1

Hola.

Necesito ejecutar un proceso desde un formulario que, entre otras cosas, modificará algún campo del registro mostrado (algo así como "facturar el albarán actual"). Lo que ocurre es que quiero llamar al proceso desde un botón con menú desplegable (como los ejemplos para localizar maestro, editar maestro, etc.).

Para ello, asocio al botón un menú, que lanza una acción, que ejecuta un proceso de ficha y muestra a la salida otro formulario. 

En el proceso de ficha utilizo la instrucción [Modificar campo] directamente (ya estoy en la ficha), pero no modifica nada. ¿Tiene que ver con el tema de que tiene que haber una transacción abierta? Imagino que si llamara al proceso directamente desde el botón no tendría problemas, pero quería hacerlo desde el botón con menú desplegable, por lo que tengo que usar el menú + acción + proceso. ¿Estoy haciendo algo mal?

Gracias,

Fran Varona

 


([N4] eic) #2

Añado a lo anterior:

Compruebo que si uso un botón de "Ejecutar proceso", y en el proceso de ficha utilizo [Modificar campo], tampoco actúa la modificación, a pesar de estar en la propia ficha. ¿Tengo que hacer un "Cargar lista", buscar la ficha actual y modificarla para poder utilizar un [Modificar campo]?

Por otro lado, parece que la mejor opción para hacer cambios en la propia ficha en la que estás son los eventos... pero en este caso, quería hacer modificaciones en la ficha actual y luego presentar otro formulario, por lo que utilizo una acción (disparo el proceso y el resultado lo muestro en un formulario). Lo que ocurre entonces es que los cambios no se ven reflejados en el formulario que lanza la acción. ¿Alguna sugerencia?

Gracias,

Fran Varona

 


([N4] rcueto.velneo) #3

Hola:

 

 

¿Tengo que hacer un "Cargar lista", buscar

la ficha actual y modificarla para poder utilizar un [Modificar campo]?

 

 

 

Efecitivamente, para que modificar campo sea funcional, debe estar incluido en un subproceso de un comando de instrucción de proceso que transaccione.

Un saludo.

 


([N4] eic) #4

Hola, Rafael.

De acuerdo. ¿Y se refrescan los cambios realizados en los controles del formulario, aunque haya utilizado un "Cargar lista", o tengo que hacer un refresco manual? Disculpa si la pregunta parece un poco obvia, pero como se trata de un funcionamiento distinto a la v6.x, no tengo claro qué cosas van a refrescarse automáticamente o cuáles no (tampoco tenemos la posibilidad de que un botón "Refresque cambios"). 

Saludos,

Fran Varona

 


([N4] rcueto.velneo) #5

Hola:

El refresco no se producirá de forma inmediata. Dependerá del hilo de control; no obstante, podrías hacerlo todo desde un evento en lugar de disparar un proceso externo con salida formulario.

Un saludo.


([N4] eic) #6

Hola.

Ahora, realizo esta tarea con un evento, llamado desde un botón, quedándome en el mismo formulario. Pero tampoco consigo que se refresque la información modificada. En el evento, utilicé un [Modificar campo] sin más, comprobando que no realiza la modificación. Después, lo intenté con un [Cargar lista] + [Modificar ficha seleccionada] + [Modificar campo] que, efectivamente, realiza la modificación, pero no la refresca. 

¿Cómo conseguir ahora, con V7, lo que antes era utilizar un proceso de ficha desde un botón que refrescara los cambios? Quizá todavía no se puede hacer y en el futuro sí... o me estoy liando, y hay un modo de hacerlo pero no lo veo.

Muchas gracias,

Fran Varona

 





([N4] rcueto.velneo) #7

Hola:

En el evento de formulario, al tratarse de un evento de interfaz debería funcionar el modificar campo directamente. Es decir, en el evento usar el comando de instrucción “Modificar campo” sin estar dentro de una transacción. Para corroborarlo he probado a crear en un formulario un evento que simplemente modifica el campo nombre de la tabla asociada al formulario; dicho evento lo he disparado desde un botón y el contenido del campo se ha refrescado.

Un saludo.





([N4] rcueto.velneo) #8

Hola:

En el evento de formulario, al tratarse de un evento de interfaz debería funcionar el modificar campo directamente. Es decir, en el evento usar el comando de instrucción “Modificar campo” sin estar dentro de una transacción. Para corroborarlo he probado a crear en un formulario un evento que simplemente modifica el campo nombre de la tabla asociada al formulario; dicho evento lo he disparado desde un botón y el contenido del campo se ha refrescado.

Un saludo.

[attachment=4797,495]


([N4] eic) #9

Hola, Rafael.

Gracias por la información.

¿Y si el dato se muestra en la pestaña de un separador de formularios? Porque ese es mi caso (disculpa por no haberlo comentado antes, pero pensaba que no tenía importancia). ¿Quizá entonces tendría que lanzar el evento desde el propio formulario que está en el separador?

Gracias,

Fran Varona

 

 


([N4] rcueto.velneo) #10

Hola, Fran:

Si el evento lo disparas desde el formulario principal no se refrescarán otros formularios. Dado que por el momento no es posible refrescar separadores desde el formulario principal -hay una sugerencia abierta en vBugMan al respecto (1077)- deberías forzarlo desde el propio formulario que contiene el campo.

Un saludo.


([N1] Cuco) #11

Yo no sé si este comportamiento ha variado desde 2009 pero me parece un incordio, por no poner otros adjetivos indecorosos, que estando en la ficha correcta haya que cargar la lista que la contenga, resolverla, seleccionar la primera ficha y modificar la ficha seleccionada, además de cargar previamente 1 ,2, 3, …n,según sea el índice código,variables locales para resolver la carga de la lista. Es decir: al menos 5 líneas de código, para hacer algo que en la V6x se hacía directa y lógicamente.
Ahora te arriesgas fácilmente a sobrepasar las dichosas máximas 6 instrucciones en un proceso que te condenan al infierno de los malos programadores.

Este no es el comportamiento del espíritu clásico de Velázquez-Velneo

Bien, ahora no puede ser así, de acuerdo, pero ¿por qué no existe una instrucción de ficha que se llame y haga algo así como “Moficar ficha actual” en paralelo a la existente “Modificar ficha seleccionada?”.

Para los que comenzamos en V7 es frustrante pelear con un proceso sencillo toda una tarde para luego acudir desesperado a buscarlo en el foro.

Sé que como N1 no puedo hacer sugerencias pero dejo constancia de esta necesidad por si otro forero con más nivel, en todos los sentidos, quisiera presentar este problema en las sugerencias.

Mis saludos a Rafa Cueto y a Fran Varona


([N4] eic) #12

Hola, Cuco.

Jo, este hilo tiene ya cuatro años…

En V7 hay que acostumbrarse a funcionar de una manera distinta con algunas cosas, y una de ellas son los procesos de ficha. En 6x, estábamos acostumbrados a tener un montón (o los que hiciera falta) de procesos que llamábamos desde botones del formulario: ahora, en V7, hay que usar eventos. La instrucción “Modificar campo” funciona perfectamente desde un evento, pero no desde un proceso. Simplemente, hay que acostumbrarse a usar eventos (además, así queda el código más ordenado, con los eventos dentro del propio formulario, sin necesitar tantos procesos como teníamos antes).

Y si necesitas llamar a un proceso (porque, por ejemplo, se reutiliza desde otros formularios), entonces simplemente llama al proceso desde el evento, y en ese caso, el “Modificar campo” que tengas en el proceso ya te va a funcionar bien, porque es llamado desde el evento.

O sea: se sigue el “espíritu clásico”, pero de otra manera.

Un abrazo!


([N1] Cuco) #13

Hola, Fran, y gracias

Como me suele suceder en el Foro de la V7, otro forero con más nivel en todos los sentidos, vino a enmendarme la plana muy oportunamente.
Si ahora hay que hacerlo con eventos, lo haremos con eventos, así, de paso, aprendemos otras soluciones mejores para los problemas diarios de programación. Yo no me niego a eso, de hecho los eventos solucionan problemas antiguos como los refrescos de una forma sencilla y elegante y yo los estoy usando admirado por la sabiduría de nuestro Arquitecto, como si no tendríamos que estar ya acostumbrados.

Aunque tus argumentos, Fran, me quitan la indignación, no me quitan de todo la razón; porque si bien es mejor hacer esto con eventos de ficha, no obsta para poder hacerlo también a la manera clásica del botón que dispara un proceso de origen ficha, porque también el “espíritu clásico” incluye la posibilidad de utilizar el método antiguo si se desea, especialmente por motivos de continuidad y de con la versión 6x, siempre que sea posible, naturalmente.

Si se hubiera prescindido de esta funcionalidad para impedir su utilización por desaconsejable, lo entiendo; pero si es posible hacerlo con un rodeo, ¿por qué no mantener la funcionalidad de una forma sencilla y congruente con la V6? (cuento con que sea sencillo de implementar, pero puedo equivocarme en mi ignorancia).

También son ahora desaconsejables los tubos porque dependen del orden de los campos en la definición de la tabla y es fácilmente sustituida su funcionalidad, quizás con ventaja, con nuevas instrucciones de proceso, y no por ello vamos permitir que se supriman; mejor pediremos que se evite de alguna manera esa dependencia.

Al margen ya de este caso que debatimos aquí, me gustaría encontrar un “post” o información del fabricante recopilatoria de los obstáculos para la migración mental que nos vamos encontrar los pobre usuarios atrasados en esta tarea. Hemos salvado el cambio de “chip” en la V6x, habrá que salvar el nuevo cambio de “chip” en la V7, con la ventaja, en nuestro caso y de otros muchos usuarios, de contar con generosos colegas como tú, que ocupan el escaso tiempo que les dejan libre sus ocupaciones para ayudarnos y corregirnos y que siempre estarán ahí. Nos evitaríamos los principiantes muchos disgustos y muchas horas de trabajo inútil, y los foreros generosos, también.

Gracias, Fran


([N4] eic) #14

Hola, Cuco.

Conociendo al vArquitecto, si tuvo que prescindir de esa funcionalidad, seguro que hay una razón detrás. Por lo que entendí de las explicaciones oficiales, la llamada a un proceso desde un botón no “abre” la ficha para edición, y en cambio la llamada de un evento sí que la “abre” (y, por eso, se puede llamar al proceso desde el evento y funciona bien). Supongo que será una decisión de diseño, por alguna razón.

Y sí, no vi yo tampoco una recopilación de “cambios para programadores de 6.x”. Tampoco es sencillo, en V7 se pueden hacer las cosas de muchos modos, por lo que no hay maneras unívocas para trasladar procedimientos antiguos. De todos modos, lo tienes fácil: quedamos para una vCaña y comentamos.

Un abrazo!


([N1] Cuco) #15

Lo más probable, conocíéndolo…
Yo encantado de charlar contigo.Ya me dirás cuándo y dónde lo de la vCaña, yo estoy jubilado y puede ser cómo tu quieras

Un abrazo

El 18 de septiembre de 2013 17:36, WordPress <wordpress@velneo.es> escribió: