Tutor de comboview

Este tutor pretende ser un ejemplo de uso del objeto comboView.

Se trata de un objeto que sirve para presentar listas de registros de las tablas en un combo.

Para ello hemos planteado un ejemplo donde el usuario podrá consultar los clientes que pertenezcan a un mismo sector de actividad, que será seleccionado en un combo-view incluido dentro de un formulario.

Usaremos las siguientes tablas de vTutor:

Una tabla Sectores de actividad (SEC_ACT_M), maestra de Clientes (CLT_M).

En el proyecto de datos se ha creado también una variable global llamada TUT_CMB_SEC_ACT_SEL, alfabética y con persistencia en memoria, que usaremos para guardar el ID del sector de actividad en curso.

El combo view objeto de este tutor lo encontraremos en la carpeta de objetos de la tabla Sectores de actividad, y se llama SEC_ACT_M.

Creación del combo-view

Como objeto de lista que es deberá ir asociado a una tabla de datos, y podrá tener asociados, al igual que otros objetos de lista como las rejillas por ejemplo, formularios de alta, modificación y de baja.

Creación del formulario del tutor

El formulario es un formulario sin origen, al que hemos llamado TUT_CMB y lo encontraremos en la carpeta de objetos de este tutor. En él hemos incluido una serie de controles, que explicaremos a continuación.

ComboView de sectores de actividad

Recordemos que se trata de un objeto de lista, por lo tanto, para este control hemos de usar un control de tipo vista de datos. Una vista de datos requiere que se carguen los registros a mostrar en la misma. Para cargar los sectores de actividad hemos aprovechado la búsqueda de la tabla de Sectores de actividad llamada SEC_ACT_M_ID.

En el formulario se ha de añadir un control vista de datos. Como objeto 1 seleccionaremos la búsqueda SEC_ACT_M_ID y como objeto 2 el comboView SEC_ACT_M.

Rejilla de cliente

Al igual que en el caso anterior, se trata de un objeto de lista, por lo tanto, para este control hemos de usar un control de tipo vista de datos.

En este caso, para alimentar el control haremos uso de la búsqueda CLT_M_SEC_ACT que encontraremos dentro de la carpeta de objetos específicos de la tabla de Clientes.

La búsqueda tiene los siguientes componentes:

En primer lugar carga toda la tabla de clientes por su ID y luego, busca, en modo cruzar, los de un sector de actividad. El modo cruzar lo que hace es cruzar la lisa obtenida con la del componente anterior, de modo que la búsqueda devolverá los clientes de un sector de actividad. Vamos a ver ahora las propiedades de este segundo componente:

Fijémonos que el componente tiene establecida la siguiente condición de activo:

$TUT_CMB_SEC_ACT_SEL@velneo_vTutor_dat.dat

Se trata de la variable global que habíamos explicado al principio de este tutor que se usaría para guardar el sector de actividad en curso. Esta condición implica que, si la variable está vacía no se ejecutará, con lo que la búsqueda devolverá todos los clientes, ya que solamente se ejecutará el primer componente. Si la variable tiene algún contenido, se ejecutará el componente con lo que la búsqueda devolverá solamente los clientes del sector de actividad en curso.

El índice que se está usando en este componente de búsqueda es el que indexa el campo enlazado a Sectores de actividad (SEC_ACT).

El modo de búsqueda es parte izquierda de la clave. Esto quiere decir que solamente devolverá aquellos registros que tengan un mismo valor en el campo indexado.

Y este índice se está resolviendo con la variable global $TUT_CMB_SEC_ACT_SEL@velneo_vTutor_dat.dat. Esto quiere decir que devolverá todos los clientes cuyo sector de actividad coincida con el almacenado en dicha variable global.

En el formulario se ha de añadir un control vista de datos. Como objeto 1 seleccionaremos la búsqueda anterior y como objeto 2 una rejilla de Clientes (en este caso hemos re-aprovechado la rejilla CLT_M, que encontraremos en la carpeta de objetos de la tabla de Clientes.

Ya tenemos creados los controles, ahora solamente nos queda sincronizarlo, y eso lo haremos con manejadores de evento.

Sincronizar el comboView con la rejilla

Para ello hemos creado dos manejadores de evento:

RFS

Que es un manejador de evento que fuerza el recálculo de la rejilla con el comando de instrucción de proceso interfaz: recalcular:

Rem ( Refrescar rejilla por cambio de sector de actividad en el comboview )

Interfaz: recalcular ( LST )

Este comando fuerza que se dispare de nuevo la búsqueda que alimenta al control.

ON_CHG_SEL

Que hace lo siguiente:

Rem ( Cambia el sector de actividad seleccionada, guardar valor en variable global y refrescar )

Interfaz: procesar ( CMB_SEC_ACT, Seleccionadas )
    Seleccionar ficha por posición ( 1 )
    Leer ficha seleccionada
        Modificar variable global ( TUT_CMB_SEC_ACT_SEL@velneo_vTutor_dat, #ID,  )

Rem ( Mostramos los clientes del sector de actividad seleccionado )

Interfaz: ejecutar manejador de evento ( RFS,  )

Lee el ítem seleccionado en el comboView de sectores de actividad, guarda su ID en la variable global TUT_CMB_SEC_ACT_SEL y fuerza el recálculo de la rejilla de Clientes.

Además hemos incluido un botón que permite cargar todos los clientes en la rejilla de Clientes. Este botón, lo que hace es disparar otro manejador de evento, llamado MST_TOD_CLI que hace lo siguiente:

Limpia el contenido de la variable global TUT_CMB_SEC_ACT_SE, asignándole una cadena vacía (“”) y fuerza el recálculo de la rejilla. Recordemos que la búsqueda de clientes no ejecutaba el segundo componente si la variable global TUT_CMB_SEC_ACT_SE estaba vacía, con lo que se ejecutará solamente el primer componente que devuelve todos los clientes.

Última actualización