02 Ago Cómo filtrar los registros de una lista contenida en un formulario sin origen
El objetivo de este artículo es mostrar como poder filtrar los registros de una lista contenida en un formulario sin origen por unos valores previamente definidos (poder filtrar las entidades o las actividades por su tipo; movimientos de almacén si son de venta, compra, regularización etc.).
En el ejemplo que vamos a desarrollar queremos filtrar una lista de entidades por su tipo: clientes, proveedores, vendedores, contactos, etc. Hemos utilizado para ello el modulo de entidades de la Plataforma PaaSOS desarrollada por la empresa Tipesoft.
Objetos necesario para filtrar los registros
Además del formulario sin origen que contiene la vista de datos con los registros de las entidades, necesitaremos crear los siguientes objetos:
- Tabla estática (TIPO_ENTIDAD) con los posibles valores para filtrar los registros de entidades (Proveedor, Cliente, Vendedor, etc.).
- Tabla en memoria (FILTROS) con dos campos: codigo y un campo enlazado a la tabla estática creada anteriormente (servirá para guardar el registro seleccionado).
- Vista de datos en el formulario sin origen (MAIN) para mostrar los valores por los que filtrar los registros de entidades (mostraremos los registros de la tabla estática).
- Formulario (FRM_TIPO_ENTIDAD) asociado a la tabla FILTROS y proceso (PRC_SELECCIONAR_TIPO) para seleccionar el valor de la tabla estática por el que filtrar los registros de entidades
- Variable global en memoria para guardar el registro seleccionado ($TIPO_ENTIDAD)
- Añadir un índice a la tabla entidades por el campo «TIPO_ENTIDAD»
- Añadir un componente a la búsqueda que nos devuelve las entidades, para poder buscar por el índice «Tipo de entidad»
¿Cómo filtrar los registros?
- Creamos en el formulario FRM_TIPO_ENTIDAD un ComboBox y como contenido le ponemos el campo por el que queremos filtrar los registros.
- Creamos un manejador de evento (EVT_CAMBIO) en el formulario en el que modificaremos la variable global $TIPO_ENTIDAD con el valor seleccionado de la tabla.
- Creamos una conexión de evento asociada al ComboBox para controlar el cambio del elemento seleccionado asociándole el evento EVT_CAMBIO
- Creamos un manejador de evento (EVT_ON_INIT) en el formulario en el que modificaremos el valor del campo TIPO_ENTIDAD de la tabla FILTROS con el valor de la variable global $TIPO_ENTIDAD
- Creamos una conexión de evento con la señal Inicializado asociándole el evento EVT_ON_INIT
- Creamos el proceso PRC_SELECCIONAR_TIPO y en sus propiedades asignamos como tabla destino FILTROS. Como instrucciones del proceso pondremos:
- Crear nueva ficha en memoria (tipo,tabla FILTROS)
- Añadir ficha a la salida
- Creamos una variable local (TIPO_ENTIDAD) en el formulario MAIN para asignar al formulario el tipo de entidad que tiene la variable global $TIPO_ENTIDAD
- Creamos un control Vista de Datos en el formulario sin origen MAIN donde mostramos los registros de entidades. Como primer objeto le asignamos el proceso PRC_SELECCIONAR_TIPO. Como segundo objeto le asignamos el formulario FRM_TIPO_ENTIDAD
- Creamos una conexión de evento en el formulario MAIN asociada al control Vista de Datos creado en el paso anterior cuya señal sea Item:Cambio de seleccionado. Como slot ejecutaremos el evento por el cual refrescamos la vista de datos de las entidades (EVT_REFRESCO).
- Por último sólo nos quedaría pasarle al manejador de objeto en el que llamamos a la búsqueda de registros la variable local TIPO_ENTIDAD que contiene el valor del tipo de entidad a filtrar para que la búsqueda resuelva el índice TIPO_ENTIDAD
No Comments