Aceptar sin cerrar formulario


([N1] mauricio.gonzalez.telefonica) #1

Hola, creo haber leido un hilo en este foro, donde se hablaba, sobre la forma de imitar la opcion existente en V6 para usar en botones que permitia aceptar sin cerrar el formulario, he estado buscando el hilo y no lo encuentro, si alguien lo tiene referenciado y me puede indicar la dirección.... gracias...


([N1] Albert Aixendri) #2

Hola Mauricio,

 

Por lo que he podido ver hay dos tipos de hacer el "aceptar sin cerrar formulario":

1) En el caso que tengas un formulario con cabecera y lineas lo explico en este post. Este método es simple ya que no es necesario implementar ningún proceso. http://velneo.es/foros/topic/¿como-puedo-guardar-cambios-sin-cerrar-el-formulario

2) En un formulario tienes un botón "Guardar". Este botón debe ejecutar un evento que a su vez ejecuta un proceso en 3r plano que es el que guarda los campos. Las instrucciones del proceso las puedes ver en la captura de pantalla.

La ventaja de hacerlo así es que tienes más control sobre el proceso de las valizaciones y de los campos a guardar. En contra, pues que hay que escribir instrucciones para cada campo...

 

Saludos,

Albert.

[attachment=7619,751]


([N1] mauricio.gonzalez.telefonica) #3

Fantastico Albert, muchas gracias...


(ame) #4

Hola, no consigo ver la imágen adjunta. ¿Podrías volver a colgarla de nuevo? Estoy tratando de guardar un PDF en un campo binario y hasta que no pulse en el botón Aceptar del formulario, no se guarda dicho fichero PDF, lo cual no es el comportamiento ideal. Me gustaría que nada más aparezca la ventana de selección de fichero, elija el fichero y pulse el botón Abrir, comience el proceso de guardado.

 

Un saludo y gracias.


([N1] Albert Aixendri) #5

Hola Ame,

Adjunto de nuevo la imagen con el proceso.

Para controlar las operaciones de escritura te sugiero que utilices la información sobre las transacciones des de el vAdmin. Esta información  ayuda un poco a ver que está sucendiendo.

 

Saludos,

 

Albert.

[attachment=7789,766]


(ame) #6

Hola Albert, supongo que esta opción no está disponible para los campos binarios.

 

Con respecto a las transacciones, ¿podrías explicarme con más detalles qué has querido decir?

 

Gracias.

 

José Luis.


([N1] Albert Aixendri) #7

Hola José Luís,

En el caso del aceptar sin cerrar formulario primero hay el caso en que el registro no existe y por tanto hay que hacer la alta del registro. Luego el usuario puede continuar modificando cosas y en este segundo caso interesa guardar estos cambios. Para controlar estos dos casos, y como punto de partida, adjunto el código para el evento de alta y el de guardar. A partir de aquí creo que puedes hacer tus adaptaciones o simplificarlo para que el usuario no tenga que pulsar los botones de "alta" o "guardar".

Sobre el tema de las transacciones aquí tienes un enlace que lo explica: http://velneo.es/info/v7_72_es/velneo_vadmin_v7/monitorizacion/

 

Espero que sea de utilidad.

Saludos,

 

Albert.

 

[attachment=7791,767] [attachment=7791,768] [attachment=7791,769] [attachment=7791,770]


(ame) #8

Hola Albert,

 

Gracias por tus explicaciones, me han despejado muchas dudas. Vamos por partes.

Respecto a las transacciones, aquí te adjunto dos capturas de lo que me muestra vAdmin cuando realizo la instrucción de proceso "Importar binario" (adjunto también el código del proceso). Me resulta raro que haga tantas operaciones, no sé si lo hago bien. De todas formas lo que quiero hacer, que es guardar un PDF en un campo de la tabla albaranes de venta de vGestión, lo hace correctamente, pero me queda la duda de si estoy utilizando los métodos correctos.

 

Referente a lo de guardar sin cerrar, veo en las capturas que usas las instrucciones de crear fichar en memoria, modificar campos y por ultimo alta de ficha. Pero ahora bien, esto funciona con campos que NO sean binarios, ¿verdad? Porque yo no logro saber qué es lo que tengo que poner en el apartado "Formula de dato" para indicarle el PDF (adjunto imágen).

 

Saludos y muchas gracias.

 

José Luis.

[attachment=7800,771] [attachment=7800,772] [attachment=7800,773] [attachment=7800,774]


([N1] Albert Aixendri) #9

Hola José Luís,

Con los campos de objeto binario todavía no he trabajado. Sí que lo he hecho con los objetos de texto que tienen algunas coses en común con los binarios.

Tengo entendido que tanto los objetos binarios como los de texto se guardan en una tabla contenedora. Estas tablas corresponden a los archivos que terminan con .cnd. Cuando modificas un campo objeto a nivel de transacciones se produce una alta y una baja.

En la transacción la información referente a la tabla contenedora se describe en la linea que tiene el icono de un paisaje, como puedes ver en tu caso se producen 4751 altas y bajas, que de alguna forma esto deben ser modificaciones. Deberías revisar el proceso y analizar de donde vienen tantas modificaciones.

Saludos,

 

Albert.


(ame) #10

Buenos días Albert,

 

El proceso es el que subí como adjunto, son esas 3 líneas que ves, la selección de fichero, el if y el importar binario. Realmente es un evento y es ejecutado cuando se pulsa un botón que he añadido al formulario "VTA_ALB" del módulo vVentas de vGestión.

A ciencia cierta no sé por qué se producen tantas altas y bajas, no hago ninguna modificación, sólo estoy usando la instrucción de importar binario.

 

Un saludo.

 

José Luis.


([N1] Albert Aixendri) #11

Hola de nuevo, José Luís,

He hecho algunas pruebas y he observado lo siguiente:

En mi caso yo tengo una tabla con campos objeto de tipo texto. Si en una ficha relleno los campos con mucho texto se producen varias operaciones de "Alta" en la tabla contenedora. En cambio, si vacio estos campos luego se produces varias operaciones de "Baja". Y si lo modifico luego aparacen varias altas y bajas. Por tanto, puedo pensar que lo que hace internamente es algo como partir el objeto binario en varios registros y para cada registro hace las correspondientes operaciones de alta y/o baja.

Por tanto si pruebas de guardar un PDF grande se tendrían que producir más operaciones de alta/baja que guardando uno de más pequeño.

No se si hay documentación sobre esto pero esto es lo que puedo aportar.

 

Saludos,

Albert.


([N1] Albert Aixendri) #12

En:

http://velneo.es/info/v7_721_es/velneo_vdevelop_v7/proyectos_objetos_y_editores/proyecto_de_datos/tabla/campo/

Se describe que lo siguiente referente a los campos de tipo texto: "...Se almacena en bloques de 512 bytes..."

Supongo que cada bloque hace referencia a un registro de la tabla contenedora.

Pero en los de tipo binario no dice nada sobre esto...

 

Albert.


(ame) #13

Hola,

 

En efecto, podemos deducir entonces que se trata de cómo gestiona internamente el motor de vServer estos comandos de proceso, y que por nuestra parte, lo que hacemos es correcto, ¿cierto?

Pues gracias por la ayuda aportada.

 

Saludos.

 

José Luis.


(ame) #14

Vale, gracias por la información Albert.


([N1] Albert Aixendri) #15

Bueno, supongo que sí que lo hacemos correctamente. Si no hubiéramos mirado la información de la transacción no se nos habría planteado ninguna duda ya lo que estamos haciendo funciona y ya esta.

De todas formas no está mal que haya un poco más de documentación sobre aspectos internos ya que ayuda a la hora de buscar errores raros de programación y a la optimización de procesos ;-)


(ame) #16

Toda la razón, supongo que con el tiempo irán añadiendo información y depurando los manuales de los que disponemos hoy actualmente.


([N4] eic) #17

Hola.

Estoy utilizando el "truco" que comenta Albert, para poder guardar un registro en pantalla ejecutando un proceso en tercer plano, y me funcionaba bien. Pero ahora (supongo que será con la 7.4.1) me da un error: si pulso el botón de Guardar (construido de esa manera) y luego pulso en Aceptar, me da un error al modificar la ficha. ¿A alguien más le pasa?

Saludos,

Fran Varona

 


([N1] Albert Aixendri) #18

Hola Fran,

En la OpenApp vREST uso este "truco" pero el proceso lo llamo en 1r plano y funciona correctamente con la 7.4.1. A ver si la gente de Velneo sacan pronto el comando Guardar ;-)

Saludos,

Albert


([N4] eic) #19

Hola, Albert.

Muchísimas gracias, funciona perfecto... y mejor que antes!

Saludos,

Fran Varona