|

Listaprv
Es algo distinto. Si alguna vez
te has visto, o has visto al usuario de tus aplicaciones, copiando
en un papel nombres de un listado o de un formulario, entonces lo
necesitas.
Con una simple orden llamas a un
pop-up que se autoinstala y al que puedes ir añadiendo campos
desde el formulario activo con el que interactúa. Puedes añadir
o quitar de uno en uno o todos a la vez, o quitar los que
coinciden con el formulario o los que no coinciden, o usarlo como
filtro del formulario. Con los datos trabajados puedes ir a otro
formulario (incluso de otra base de datos) con el que añadir,
quitar , filtrar...
Es la solución a los filtros
complejos: desde filtros sencillos vas añadiendo o quitando y,
finalmente, usas el resultado como filtro.
Instalación
La forma de usarlo
es marcarlo como "Referencia" en el diseño del Módulo, en el Menú
"Herramientas".
A partir de ese
momento, podemos llamar desde cualquier otro procedimiento, por ejemplo, desde
un botón, al procedimiento listaprv simplemente escribiendo en el
procedimiento de evento
Listaprv.
La primera vez que
lo llamamos desde una base de datos se inicia un asistente para inicializarlo,
lo mismo ocurrirá con cada formulario la primera vez que sea llamado. Listaprv.mde
almacena toda la información necesaria de cada base de datos y cada formulario
y de las listas que se usen. En la base de datos activa la única modificación
que realiza es vincular una tabla llamada listaprv para que el
desarrollador pueda disponer de ella como origen de listados, de consultas,
etc.; puedes usarla sin temor pues no modifica nada más tu base de datos.
Introducción
Determinadas
aplicaciones tienen una tabla especialmente protagonista, si es de personal será
empleados, si es de marketing será el cliente... la mayoría del resto de las
tablas hacen referencia a esa protagonista y el usuario constantemente trabaja
información de ese sujeto desde distintos ángulos.
Imagínate una
promoción muy especial donde se va a hacer un regalo caro a una serie de
clientes y se quiere afinar mucho para que al final salga rentable: deberías
seleccionar determinado grupo de edad y de nivel de estudios, pues son los que
pueden estar interesados en el producto, pero también los que han comprado un
producto anterior porque éste es su complemento ideal, eso sí excluyendo los
que han tenido problemas con los pagos, además añadimos a todos los clientes
de la agencia X porque es la que mejor índice de ventas tiene, a la mujer y a
las amigas del jefe, que se apuntan a todos los regalos y a fulanita, que me la
quiero ligar.
Parece exagerado,
pero hay muchas aplicaciones con las que se debe trabajar así. Un usuario
normal es incapaz de hacer un filtro semejante con tantas tablas, algunas quizás
en distintas bases porque las trabaja otro departamento; si son pocos los
registros a seleccionar irá formulario a formulario aplicando filtros, los que
tú le hayas puesto en la aplicación, y apuntando y tachando nombres en un
papel.
Ese papel, esa
lista donde vas quitando y poniendo nombres es precisamente esta aplicación,
pero todo se hace automáticamente
Vas al formulario
clientes haces un filtro por formulario y seleccionas los de determinada edad y
nivel de estudios, abres listaprv y pulsas el botón añadir todo, te
pasas al formulario ventas por productos que tiene un subformulario donde figura
la fecha y el cliente, seleccionas el producto que querías, abres listaprv y
pulsas el botón añadir todo, te pasas al formulario agencias, quizás en otra
base de datos, con su subformulario clientes, seleccionas la agencia X, abres listaprv
y pulsas el botón añadir todo, en pagos, filtras los clientes problemáticos,
abres listaprv y pulsas el botón "quitar según" y dejas sólo
los que no te coincidan con ese formulario, finalmente, en clientes buscas a la
mujer del jefe, a sus amigas y a fulanita y, una por una, las metes en la lista.
Aunque sean miles de registros, apenas has tardado unos minutos.
La lista resultante
puede ser el filtro de cualquier otro formulario, simplemente llamando a listaprv
y pulsando "usar como filtro", pero también puede intervenir en
cualquier consulta, pues, al inicializarla en la base de datos activa, el
asistente ha vinculado la tabla listaprv y está disponible. Es una
herramienta pensada para que el programador desarrolle otras cosas a partir de
ella.
Llamadas
a procedimientos
Listaprv
tiene tres procedimientos públicos y una función pública:
Sub Listaprv:
abre el formulario listaprv si es la primera vez que lo hace, abre un
asistente de inicialización.
Sub Listaprv_BorraForm("Nombre
del formulario"): Borra las referencias en Listaprv.mde al formulario de la
base de datos activa que se indique. Está pensado para eliminar referencias que
se hayan inicializado erróneamente.
Sub Listaprv_BorraBase
("Nombre de la base"): "): Borra las referencias en Listaprv.mde
a la base de datos que se indique y de todos los formularios de ésta; si
"Nombre de la base" es nulo, borra las referencias a la base de datos
activa. También está pensado para eliminar referencias que se hayan
inicializado erróneamente.
Function macroprv().
Está pensada para ser llamada desde una macro de teclado. Se puede importar
desde Listaprv.mde una macro de teclado que la llama. Si no está abierto el
formulario Listaprv, lo abre, le pasa el foco, le añade un elemento
desde el formulario activo y devuelve el foco al campo del formulario activo que
lo tenía antes. En combinación con una macro de teclado (p.ej. Mayús+F9)
puedes ir buscando en un formulario y, cada vez que pulse Mayús+F9, añades a
la lista el cliente por el que vayas y vuelves al control en el que estabas.
Funcionamiento
El funcionamiento
interno de Listaprv es fácil de entender:
Para cada base de
datos nueva pregunta en que tabla se van a basar los datos y la vincula, luego
pregunta cuál es el identificador único de esa tabla y, a partir de él, crea
una tabla llamada listaprv (listaprv1, listaprv2... según corresponda) con un
único campo idéntico al identificador único: esa es la verdadera lista donde
se van a ir añadiendo y quitando datos.
Pregunta también
qué otros campos se quieren mostrar en la ventana de la lista y almacena sus
nombres. Toda la información que va pidiendo la va almacenando en un registro
para cada base de datos.
Cuando llamamos a
Listaprv desde un formulario, es necesario saber cuál es el nombre del campo
identificador único con el que va a trabajar la lista, y si se trata de un
formulario o de un subformulario. Por eso necesita inicializar cada formulario y
almacenar esa información en un registro para cada formulario, vinculado al
registro de base de datos.
Como cada base de
datos está identificada por el nombre, si trabajamos con una copia con otro
nombre, Listaprv no la reconocerá y abrirá el asistente de inicialización,
sin embargo, no es necesario repetir todo el proceso: el asistente nos muestra
una lista con todas las bases que tiene registradas, seleccionamos la original y
la opción "Copiar todas las especificaciones" y se copiarán automáticamente
todas las especificaciones de la base y de cada formulario.
A veces distintas
bases de datos tratan el mismo tema y por eso queremos compartir la misma Lista;
si en la inicialización elegimos una base ya registrado y seleccionamos
"Copiar las Especificaciones Generales", ambas bases compartirán la
misma lista y lo que se añada o quite en una así quedará en la otra y
viceversa.
ListaPrv funciona
perfectamente en red, incluso es aquí donde se puede obtener un mayor provecho
de ella, sin embargo es necesario realizar algunos ajustes. Si quieres usarla en
red, escríbeme.
Descarga
Descargar archivo .MDE
J.Bengoechea, 2 de septiembre de 1999
Listaprv es una herramienta con
la que llevo trabajando años. Para mí es muy útil y muy fácil de usar, estoy
seguro que a cualquiera que entienda su manejo le resultará también útil y fácil.
Sin embargo, no sé si sé explicar en qué consiste y cómo es el manejo de
algo que, por ser para mí tan familiar, no conozco sus pegas. Si la probáis,
agradecería que me escribierais con vuestra opinión sobre la herramienta y con
las dificultades que habéis encontrado para entenderme. Gracias.
|