Velneo: panta rei. Desde mi perspectiva

Noviembre 10, 2008

Sincronizaciones en menús ( I ): dos búsquedas

Archivado en: Objetos visuales — Agustin @ 9:31 am

Una posibilidad a la que podemos dar buen uso y sacar partido rápido es la sincronización de objetos en un menú.

Los objeos que vamos a poder sincronizar entre sí serán

  1. Variables
  2. Búsquedas
  3. Casilleros
  4. HTMlL

Entre una variable y una búsqueda lo vimos aquí y ahora veremos entre dos búsquedas.

Supongamos el caso que nos comenta Javier. Tenemos por un lado una búsqueda de clientes y por otro lado una búsqueda de Facturas.

El objetivo es que una vez que tenga en un menú las dos búsquedas colocadas, al moverme por los registros de la de Clientes, me muestre en la de Facturas todas las facturas de dicho cliente seleccionado.

Para lograr esto necesitamos:

En la tabla Clientes:

  1. Una rejilla en la que mostrar los clientes: CLIENTES-SINCRO, por ejemplo.
  2. Una variable global en memoria  que llamaremos COD-CLIENTE en la que guardaremos el código del cliente sobre el que estamos
  3. Un proceso con origen lista de la tabla Clientes, y en la que su única linea de proceso será:              Modificar variable global, $COD-CLIENTE$, %CODIGO%

          Esta linea irá guardando en la varialble en memoria el código del cliente según nos vayamos     posicionando sobre sus registros. Le llamaremos ONCLIENT, por ejemplo.

    4. En la rejilla CLIENTES SINCRO, activaremos el check “Cambio selección simple ” y escogeremos el proceso ONCLIENT.

    5. Una búsqueda en la tabla CLIENTES , rejilla para ver resultado, CLIENTES-SINCRO y a la que llamaremos CLIENTESTODOS

En la tabla de Facturas:

  1. Una rejilla para mostrar los registros.
  2. Un índice alimentado por el campo CLIENTES, acepta repetidas.
  3. Una búsqueda por el índice CLIENTES, modo de buscar, parte izquierda de la clave, y resolviendo el CLIENTE  con la variable COD-CLIENTE , a la que llamaremos FACTURAS-CLIENTES , por ejemplo.

En un menú tipo formulario, pondremos las dos búsquedas CLIENTES TODOS y  FACTURAS-CLIENTES.

Hay que tener claro cuál de las dos búsquedas es la que “manda”. En este caso, es la búsqueda de CLIENTES, dado que al variar el cliente, variará la búsqueda de facturas para sólo mostrar las del cliente seleccionado.

Una vez colocadas en el menú, cogemos el foco sobre CLIENTES-TODOS. En la barra de menú, vamos a la opción Controles—Sincronizar. En el cuadro de diálogo que nos aparece, escogemos la búsqueda FACTURAS-CLIENTES  y ya tenemos sincronizadas las dos búsquedas.

Marzo 3, 2008

¿Tubos?… ¿y eso qué es? (ii)

Archivado en: Inicio, Objetos visuales, Tubos — Agustin @ 12:21 am

Les toca el turno ahora a los tubos de lista. Antes hemos visto que los tubos en general producen altas en una tabla de destino tomando datos de una tabla origen. En el caso de los tubos de lista, además, tanto el origen como el destino pueden ser no tablas de nuestra aplicación sino bases de datos externas.

Tubo de lista

Cuando en la galería de objetos escogemos un tubo de lista nos encontramos con este cuadro de diálogo. En él podemos ver las características esenciales de un tubo de lista:

Estilos:

Privado: Si se activa esta opción el tubo solamente podrá ser disparado desde donde el programador indique, si está desactivado el usuario final podrá dispararlo desde cualquier lista de la tabla de datos de origen del tubo. Hemos de tener en cuenta que en ejecución, cuando tenemos en pantalla una lista resultado de una búsqueda en la barra de Herramientas la opción Procesos, nos aparece un desplegable en el que podremos lanzar tubos o procesos SI NO ESTÁN MARCADOS COMO PRIVADOS
No indexar y hacer regen al final: Si se trata de un Tubo de importación, de puede activar o desactivar esta opción. Reduce enormemente el tiempo de duración de la importación de datos. Primero realiza la importación de datos y posteriormente regenera los índices de tabla de destino.  Antes de ejecutar un tubo de importación con esta opción activada, es aconsejable borrar previamente los registros de la tabla de datos de destino (la de Velneo) o que esta contenga muy pocos registros, pues esta opción ni comprueba los campos código ni lo indexa hasta que no se hayan importado todos los registros. Velneo recomienda  no utilizar nunca esta opción en el caso de que la tabla de destino tenga definido el contenido del campo código como Siguiente al último, pues, al no indexarse los registros al ejecutar el tubo, todos los registros importados quedarán con el mismo código. De hecho es siempre aconsejable que la importación la hagamos previamente a un tabla intermedia, no a la tabla definitiva, para evitar problemas. Una vez que hacemos todas las comprobaciones, con un nuevo tubo de lista pero esta vez interno, nos llevamos los datos de la intermedia  a la definitiva.

Usar contenido inicial campos destino: Si se activa esta opción al generarse los registros se dispararán los contenidos iniciales definidos en los campos de la tabla de datos de destino. Es aconsejable por tanto no crear en el tubo capilares para los campos de la tabla de destino que tengan establecido un contenido inicial.
Usar código automático en destino: Este estilo solamente estará activo cuando se haya desactivado el estilo anterior (usar contenido inicial campos destino). En el caso de que la tabla de destino sea maestra, es decir, que tenga definido un campo CODIGO y, si su contenido inicial es Siguiente al último, habrá que activar este estilo para que la codificación de los registros de la tabla de sea automática. Si este estilo está desactivado y el código se pasa en un capilar, si en la tabla de destino existe algún registro con el mismo código, el registro no será dado de alta.

Usar actualizaciones en destino: Si la tabla de datos de destino tiene definidas actualizaciones, si se activa esta opción al generarse los registros éstas serán disparadas, si no, no.

Además los flujos de la informacion pueden ser internos, de importación o de exportación. He de confesar que tanto el In-com Serie como el Out-com Serie no los he usado nunca, pero tengo entendido que son un primer intento de comunicación mediante puerto serie, antes de que ese objeto visual concreto se desarrollara.

En los casos de flujo Interno, es decir, cuando el origen y el destino son tablas de Velneo, es posible hacer un alta de ficha en un maestro de la tabla destino. Señalando la opción ¿Dar alta?, se activan las listas desplegables Maestro,  Formulario, y Formulario visualización final salida tubo. En la primera se elige la tabla maestra donde se desea realizar el alta. En la segunda se elige el formulario para el alta. En la tercera se indica el formulario donde se puede ver el resultado final del tubo.

La casilla de verificación ¿Pedir? se utiliza para declarar el formulario mediante el cual se puede introducir un valor fijo en uno o en varios campos de todas las fichas de destino.

La forma de crear los capilares es idéntica a la de los tubos de ficha.

 Una diferecia fundamental a la hora de elegir entre recorrer una lista para lanzar un tubo de ficha por cada uno de los registros o cargar una lista y lanzar un tubo de lista estriba en que a la salida del tubo de lista no podemos hacer nada en los registros recién dados de alta, es decir, en el tubo de lista no hay Pre y Post como en el de ficha. A veces esto puede ser una ventaja y otras no, eso depende del gusto de cada uno. Particularmente, cuando necesito hacer traspasos masivos uso el de lista pero en la mayoría de los procesos, prefiero los tubos de ficha pues me permiten un mayor control sobre la salida del tubo, en el Pre puedo modificar campos, por ejemplo. Pero esto debe tomarse no como una recomendación ha tener en cuenta, sino como un simple gusto personal o manía, llamadlo como querais.

En el siguiente artículo, veremos dos procesos de facturación de albaranes, uno con tubos de lista y otros con tubos de ficha.

Febrero 25, 2008

¿Tubos?…¿y eso qué es? (i)

Archivado en: Inicio, Objetos visuales, Tubos — Agustin @ 11:43 pm

A raiz de una pregunta aparecida en le foro de Velneo hecha por lordnight en la que casi al final del hilo pedía una explicación sobre lo que son los tubos, me dispongo a dar una pequeña anotación sobre ellos.

Los objetos visuales de Velneo, aparecen en la parte derecha del vDeveloper y son la forma de comunicación entre la estructura y sus datos y el usuario final. Se encargan tambiénd de facilitarnos la vida y el trabajo a los desarrolladores y ahorrarnos un montón de quebraderos de cabeza. Uno de estos objetos visuales son los tubos.

¿..Y eso de los tubos qué hace en realidad?. Pues los tubos se usan para traspasar datos de una tabla a otra. Tienen una tabla origen y una tabla destino, con la particularidad de que en la salida del tubo, se producen altas de registros en la tablas destino.

Tubo de ficha

Los tubos conectan dos tablas entre sí y sólo dos tablas y no todos los campos tienen porqué “viajar” de una tabla a la otra. Para determinar que campos van a llevarse a la tabla de destino se usan los capilares. En un capilar escogeremos un campo de destino y el origen del dato, que puede ser un campo de la tabla origen o una concatenación de campos o de variables globales o de funciones, ya que de nuevo nos encontramos con el asistente de fórmulas. En este ejemplo concreto he creado un tubo de ficha para traspasar datos de las Lineas de Albarán a las lineas de facturas. Los capilares son el puntero a Artículo y la cantidad. El resto de los campos no los necesito llevar al destino, ya que en ella se ejecutarán al darse de alta los nuevos registros que salen por el tubo tanto los contenidos inciales de los campos , como los campos de tipo fórmula como los triggers o eventos de tabla que afecten a las altas así como las actualizaciones que tengamos definidas.

Los tubos pueden se suelen lanzar desde procesos y siempre desde una linea cuyo origen sea ficha de la tabla origen . Un tubo de ficha lanzado desde un proceso puede ser llamado de dos formas, con dos lineas dsitintas:

Tubo de ficha, en el que es necesario que hayamos definido un formulario de salida del tubo, un formulario que nos presenta la ficha para darla de alta en la tabla destino y Tubo de ficha sin pedir formulario, en el que no nos pide dicho formulario. Esta última es la más utilizada.

Si usamos Tubo de ficha simplemente y dicho tubo no tiene definido un formulario de salida, la linea de proceso no se ejecuta, con lo que es más recomendable usar Tubo de ficha sin pedir formulario

Acompañando a estas lineas de procesos de tubo de fichaTubo de ficha aparecen dos lineas cuyo origen es siempre la ficha de la tabla destino. En el Pre, podremos cambiar cualquier valor de cualquier campo del registro de salida, pero en el Post no, solo podremos hacer comprobaciones, por ejemplo, o guardar valores en variables locales o globales.

Los tubos pueden darnos un gran juego  a la hora de hacer cosas como facturar albaranes. Cuando veamos en el siguiente artículo los tubos de lista, haremos un ejemplo práctico de factuación de un único albarán en una factura o de varios albaranes en una única factura.

Entradas más antiguas »

Blog de WordPress.com.