Traspasar registros entre dos tablas visualmente

Con este artículo de hoy estreno una nueva sección denominada «Peticiones del oyente«. En este sección intentaré resolver las dudas que me llegan a través del e-mail, del formulario de contacto de este blog o que vea en el foro de Velneo V7.

En este primer artículo de la sección voy a explicar como poder traspasar registros entre dos tablas de velneo V7 dentro del proyecto de aplicación. Espero que a RamonD le sirva para su desarrollo….

TRASPASAR REGISTROS ENTRE DOS TABLAS VISUALMENTE

3..2..1… comenzamos!!

¿Qué queremos conseguir?

En el ejemplo que desarrollaré a continuación, dadas dos listas de registros de tablas distintas quiero conseguir los siguientes objetivos:

  • Cargar los registros de las dos listas
  • Traspasar un registro de una tabla a otra
  • Eliminar de la tabla origen el registro traspasado
  • Editar mediante un formulario el registro generado en la tabla destino
  • Actualizar ambas listas.

1.- Cargar los registros de las dos listas

Para este ejemplo voy a realizar el típico proceso de pasar un pedido a albarán… pero los conceptos se aplican de la misma forma en cualquier escenario.

1.1- Objetos necesarios para las listas

  • Obviamente las rejillas de ambas tablas. Las vamos a llamar PEDIDOS y ALBARANES
  • Un proceso VACIO sin tabla asociada con la propiedad «Tabla Destino» la tabla de PEDIDOS y con la propiedad «Destino«: LISTA. A este proceso le vamos a llamar CARGAR_PEDIDOS
  • Un proceso VACIO sin tabla asociada con la propiedad «Tabla Destino» la tabla de ALBARANES y con la propiedad «Destino«: LISTA. A este proceso le vamos a llamar CARGAR_ALBARANES
  • Un formulario sin origen es decir con la propiedad «Tabla Asociada vacia. En este formulario insertaremos los dos objetos vista de datos para mostrar los registros de ambas tablas. A este formulario le voy a llamar PEDIDOS
  • Un objeto «Vista de datos» para mostrar la LISTA de PEDIDOS. Como soy un tío original le voy a llamar MOSTRAR_PEDIDOS. Esta vista de datos tendrá como propiedad «Objeto 1» el proceso CARGAR_PEDIDOS y como propiedad «Objeto 2» la rejilla PEDIDOS
  • Un objeto «Vista de datos» para mostrar la LISTA de ALBARANES. Siguiendo con la originalidad le voy a llamar MOSTRAR_ALBARANES. Esta vista de datos tendrá como propiedad «Objeto 1» el proceso CARGAR_ALBARANES y como propiedad «Objeto 2» la rejilla ALBARANES
  • Una acción cuya propiedad «Comando» = DISPARAR OBJETOS y cuya propiedad «Objeto» sea el formulario PEDIDOS para lanzar nuestro ejemplo desde un menú de opciones
  • Un objeto «Búsqueda» al que vamos a llamar «BUSCAR_PEDIDOS» con un índice por ID

Hasta aquí sólo hemos creado los objetos necesarios para poder operar con las listas… Vamos con el siguiente paso.

1.2- Cargando los registros en las vistas de datos

La teoría está muy bien… Si hemos seguido los pasos indicados hasta ahora, tendremos algo parecido a esto:

Traspasar registros

Vamos un formulario con dos listas vacías. Recuerda que los procesos que utilizamos en las vistas de datos para cargar los registros… estaban vacíos.

¿Cómo cargamos los registros?… mediante el subojeto «MANEJADOR DE EVENTO» del formulario. Vamos a ver los objetos necesarios que tenemos que crear en el formulario

    • Una Variable local del mismo tipo que el ID de la tabla de pedidos. A esta variable la vamos a llamar REG_SELEC. Esta variable servirá para guardar el ID del pedido en el que estamos posicionados.
    • Un «Manejador de evento» al que vamos a llamar «CAMBIAR_REGISTRO«. En este evento le asignaremos a la variable local REG_SELEC el id del registro sobre el que estamos posicionados

Traspasar registros cambiar

    • Una «Conexión de evento» al que vamos a llamar «CAMBIAR_REGISTRO» para lanzar el evento de cambio de registro

Conexión de evento

    • Un «Manejador de evento» al que vamos a llamar «REFRESCAR«. Con este evento lograremos, como su nombre indica, «Refrescar» las vistas de datos del formulario.

Refrescar
– Como podéis ver en el evento, se crea una cesta local de la tabla de «PEDIDOS» que será donde guardaremos los registros encontrados en la búsqueda «BUSCAR_PEDIDOS»
– crearemos un «Manejador de objeto» para lanzar el proceso (en tercer plano) que lance la búsqueda «BUSCAR_PEDIDOS» mediante otro «Manejador de objeto» (** Recuerda que si lanzamos directamente desde el evento la búsqueda en tercer plano… no funcionará. Siempre se lanza en primer plano).
– Dispararemos el objeto creado y añadiremos los registros encontrados a la cesta.
– Con la instrucción «Interfaz: procesar», procesaremos la lista «Mostrar pedidos»
– Cortaremos la lista (para no dejar ningún registro)
– Con la instrucción «Cesta: Agregar a la lista en curso», añadiremos los registros devueltos por el manejador de objeto a la lista de pedidos.
– El resto de instrucciones sirven para comprobar si tenemos registros en la lista (puede que la búsqueda no devuelva ningún registro). En caso de tener registros, seleccionamos ficha por posición, leemos el registro y nos quedamos con el ID del primer registro.

  • Un «Manejador de evento» al que vamos a llamar «ON_INIT«. Este manejador tendrá la instrucción «Interfaz: Ejecutar manejador de evento»… en el que lanzaremos el manejador «REFRESCAR«
  • Una «Conexión de evento» a la que vamos a llamar «ON_INIT«. Esta conexión la dispararemos con la señal «POST-INICIALIZADO«. Como manejador de evento de este disparador pondremos el llamado «ON_INIT«

Ya tenemos todo lo necesario para comenzar a traspasar datos de una tabla a otra…. ¿o no?. Si te has fijado en el «Manejador de evento «REFRESCAR» hemos cargado los registros de la tabla PEDIDOS pero ¿y los registros de la tabla ALBARANES? ¿Te atreves a cargarlos tu? así vamos practicando.

2.- Traspasar registros mediante Drag & Drop

La idea es que arrastrando un elemento desde la rejilla de pedidos y soltándolo en la de albaranes, nos lo quite de la primera y nos lo añada en la segunda.

Ya que estamos en el formulario sin origen, vamos a crear primero los objetos necesarios para el DROP.

2.1 – Creando el Drop

Para crear el «drop» en la lista de albaranes necesitamos crear dos subobjetos en el formulario:

  • Un «Manejador de objeto» al que vamos a llamar «RECALCULAR_ALBARANES«. Este manejador tendrá la instrucción «Interfaz: Recalcular» y pondremos el control a recalcular… en este caso la lista de ALBARANES y la instrucción «Interfaz: Recalcular» y pondremos el control a recalcular… en este caso la lista de PEDIDOS
  • Una «Conexión de evento» sobre el control que carga la lista de albaranes. Como señal pondremos «Drop finalizado» y como manejador de evento el evento «RECALCULAR_ALBARANES» que acabamos de crear.

Además de los objetos en el formulario, debemos indicarle a la rejilla de «Albaranes» que puede ejecutar un drop. Vamos a ver los objetos necesarios para esta acción:

    • Un proceso con origen LISTA de la tabla de PEDIDOS y con destino una FICHA (ya que queremos mostrar la ficha generada) de la tabla de ALBARANES. En este proceso leeremos los registros seleccionados en el DRAG (es decir los que arrastraremos desde la lista de pedidos) ya que puede ser uno o varios (dependiendo de si en la lista de pedidos tenemos activa la opción de multiselección). Recorreremos la lista cargando en variables locales al proceso los campos que nos interesen y daremos de alta un registro en la tabla de albaranes (por cada uno de los pedidos leídos) modificando los campos necesarios con las variables leídas anteriormente. En el proceso eliminaremos el PEDIDO traspasado y editaremos el ALBARÁN generado. Una imagen vale mas que mil palabras

Traspasar registros drop

– Como veis en el ejemplo, primero creo la cabecera del albarán y posteriormente cargo los plurales de las líneas de pedidos y creo también las líneas de los albaranes creados.

  • En la rejilla «ALBARANES» vamos a crear un subobjeto «Drop» en el que como propiedad «Tabla origen» le pondremos la tabla de PEDIDOS y como propiedad «Proceso» le indicaremos el proceso creado en el paso anterior.

2.2 – Creando el Drag

Para crear el drag (es decir permitir «arrastrar» registros desde una rejilla) simplemente tendremos que marcar en la propiedad «Estilos» de la rejilla «PEDIDOS» el check «Arrastrable para mover»

Con esto, ya tenemos listo nuestro drag & drop… simplemente tendremos que añadir la acción que lanza el formulario en un menú y probar.

¿Te ha resultado útil? Si quieres desarrolle un post con un ejemplo, indícame en el formulario de contacto tu problema y lo resolveremos «en directo»

Francisco José Vila Martín
ayudavelneo@ayudavelneo.com

Francisco José Vila es autor del blog Ayudavelneo desde donde ayuda a desarrolladores que se están iniciando en Velneo a acortar su curva de aprendizaje para que obtengan beneficios y sean rentables desde el minuto 1. Además es programador certificado y formador en la plataforma de desarrollo de aplicaciones empresariales Velneo V7. Ampliar información

1Comment
  • Rodolfo Carrión
    Posted at 21:28h, 02 agosto Responder

    Hola Francisco
    vieras que a mi me ha llamado la atención los maestros con clave arbolada, ese tipo de tablas
    me parecen de mucha utilidad, pero no he conseguido mucha información al respecto, por ejemplo, yo quisiera crear un plan de contabilidad, solo numérico y con formato
    por ejemplo con formato 0-00-000-00-00 o con formato 0-000-00-000-000 , lo guiones son muy importantes, y yo quisiera tener la posibilidad que acumule obviamente los niveles mayores por ejemplo, 1 Activo, 1-01 Activo Circulante 1-02 Activo corriente, y que el activo me acumule las otras dos.
    También algo que generaría mucho valor, es que con un simple «arrastrar» yo pueda cambiar los niveles y que los movimiento de la misma cuenta que muevo se traspase automáticamente
    Muchas gracias de antemano

Post A Comment

Información básica sobre Protección de Datos: Responsable: Francisco José Vila Martín. Finalidad: Gestionar y moderar los comentarios. Legitimación: Tu consentimiento. Destinatarios: Tus datos se alojarán en los servidores de Web Empresa S.L. (UE). Derechos: Tienes derecho a acceder, rectificar, limitar y suprimir los datos, así como otros derechos, como se explica en la información adicional. Información adicional: Puedes consultar la información adicional y detallada sobre protección de datos personales en mi Política de Privacidad.

Pin It on Pinterest