Documente Academic
Documente Profesional
Documente Cultură
INTRODUCCIN
Como bien indica su nombre, vamos a crear una aplicacin
para gestionar los movimientos de un almacn. Sin
embargo, nuestra aplicacin no slo registrar entradas y
salidas, sino que, en el momento de sacar un producto, nos
dejar sacarlo siempre y cuando haya existencias del
mismo. Aprovechando la programacin tambin avisaremos
si el stock queda por debajo de una cantidad crtica. De la
misma manera, podremos calcular el stock existente en el
momento actual.
El funcionamiento ser muy sencillo (aunque la mecnica interna quiz no lo sea tanto).
Tendremos un formulario donde daremos recepcin a los materiales que entren en el almacn,
y otro formulario que nos permitir sacar los productos del almacn (no utilizaremos
subformularios para este ejemplo porque ello lo complicara demasiado, pero si sois capaces de
adaptar el ejemplo funciona igual de bien).
Yo voy a utilizar, para el ejemplo, unos campos que considero mnimos, pero ello no es
obstculo para que, lgicamente, en vuestra aplicacin aadis todos los campos que queris.
La finalidad es que os quedis con la idea de cmo puede ir Access controlando las salidas, y
de qu manera podemos conseguir un informe sobre el stock global o de un producto en
concreto.
Vmonos pues...
Una tabla donde tengamos los productos Con un formulario para darlos de alta
Una tabla donde tengamos las entradas de productos Con un formulario para dar de
alta dichas entradas.
Una tabla donde tengamos las salidas de productos Con un formulario para dar de
alta dichas salidas.
Vistame en http://siliconproject.com.ar/neckkito/
IMPORTANTE
a) Punto 1
Fijaos que he puesto un autonumrico como identificador del registro. Lo he puesto as porque
he dado por supuesto que el cdigo del producto ser un cdigo alfanumrico, y por ello he
tenido que crear el campo [CodProd], de tipo texto.
Poner un campo de tipo texto como clave principal no es recomendable, y slo lo debemos
utilizar siempre y cuando no tengamos otra opcin. Esto es simplemente un consejo.
Si nuestro cdigo de producto fuera de tipo numrico no importara incluir un autonumrico,
puesto que el propio cdigo de producto nos servira. En definitiva, que la estructura de la
tabla podra quedarnos as:
Vistame en http://siliconproject.com.ar/neckkito/
Ordenamos por el campo que ms til nos sea. Yo he ordenado ascendente por la
descripcin del producto.
Guardamos la tabla.
Ahora, para ser puristas, deberamos identificar las relaciones entre las tres tablas. Para ello:
Sacamos la ventana Relaciones (doy por supuesto que sabis dnde est)
No entraremos, en este ejemplo, a explicar como definir a fondo las relaciones. En la web, en el apartado Objetos Tablas, podis
encontrar una explicacin para este asunto.
Vistame en http://siliconproject.com.ar/neckkito/
Veremos que ambos campos se nos han unido por una lnea: ya tenemos establecida la
relacin.
Nos debera haber quedado una cosa as:
Como vemos, el cdigo nos cierra el formulario en el que estamos en ese momento (que ser
FProductos) y nos abre el formulario FMenu, que an no hemos creado pero que crearemos en
breve.
Por ejemplo, a m me ha quedado una cosa as:
3
4
De ahora en adelante, si os indico le ponemos de nombre, me estar refiriendo al nombre del control, no a su ttulo. Y cmo
ponemos nombre a un control? Sacamos sus propiedades y nos vamos a la Pestaa Otras Nombre, y ah le escribimos el nombre.
Para generar cdigo nos ponemos en la parte en blanco junto al evento que queramos, y veremos cmo nos aparece un pequeo
botn de puntos suspensivos. Si hacemos click sobre l nos aparecer una ventana. Le decimos que queremos generar cdigo.
Se nos abrir el editor de VB, con dos lneas por defecto (Private Sub... y End Sub). Esas dos lneas no deben tocarse. El cdigo lo
escribimos entre dichas lneas
Vistame en http://siliconproject.com.ar/neckkito/
NOTA:
Con este formulario podremos dar entrada a los productos que ya estn dados de
alta, pero, as como lo tenemos, si el producto no est dado de alta... pues mal lo tenemos
(deberamos salir del formulario, darlo de alta y volver a registrar la entrada). La solucin a
este problema sera estudiar el ejemplo Alta en form desde form de la web y aplicar las
enseanzas de ese ejemplo a nuestra aplicacin.
NOTA: Si queremos ser muy puristas con el tema de diseo os recomiendo tener un simple
archivo txt (o algn sucedneo de bloc de notas) para ir anotando los elementos que queremos
tengan un aspecto homogneo en nuestra aplicacin. Por ejemplo, si sacamos las propiedades
del botn cerrar y nos vamos a la pestaa Formato veremos dos propiedades, Alto y Ancho,
con unos valores. Si tomamos nota de esos valores podemos aplicar los mismos valores a
todos los botones cerrar que creemos (lo que nos libra de dibujarlos con cuidado) en el
momento de crearlos: dibujamos el botn a lo rpido y le establecemos los valores que
tenemos apuntados; el botn se redimensionar segn esos valores. Lo mismo podramos
hacer, por ejemplo, con las dimensiones del campo para el cdigo de producto, el campo para
la fecha, etc.
Vistame en http://siliconproject.com.ar/neckkito/
Si observis el cdigo veris que el argumento acFormAdd lo que nos permite es abrir el
formulario preparado para la introduccin de nuevos productos.
2.- Copiamos el botn que hemos creado y lo pegamos (CTRL+C / CTRL +V). Nos aparecer
abajo. A este nuevo botn le ponemos de nombre cmdAltaEntradas y le generamos el siguiente
cdigo:
3.- Copiamos este ltimo botn y lo volvemos a pegar, para que nos aparezca abajo. A este
nuevo botn le ponemos de nombre cmdAltaSalidas y generamos el cdigo:
NOTA:
Si quisiramos poder abrir el formulario, sin ms, y navegar por los registros y
poder aadir registros nuevos la lnea de cdigo que abre el formulario sera, simplemente,
DoCmd.OpenForm "NombreFormulario"
Si quisiramos abrir el formulario slo para editar los datos, pero no poder aadir registros
nuevos, las lneas deberan ser:
DoCmd.OpenForm "FSalidas", , , , acFormEdit
6
Vistame en http://siliconproject.com.ar/neckkito/
Forms!FSalidas.AllowAdditions = False
Y si quisiramos abrir el formulario slo para consultar los registros (pero no poder editarlos o
aadir nuevos)
la lnea sera
DoCmd.OpenForm "FSalidas", , , , acFormReadOnly
Lgicamente, podramos, en FMenu, crear tantos botones
como necesitramos.
Si hacemos click sobre esa opcin nos aparecer una ventana que nos pedir el tipo de
combinacin. Debemos marcar la tipo 2
Vistame en http://siliconproject.com.ar/neckkito/
Por qu hacemos esto? Para forzar a la consulta para que nos d la informacin de todos los
productos que haya en la BD, independientemente de si han tenido algn movimiento de
entrada o no.
1c.- Arrastramos al grid de la consulta el campo [CodProd]. En la segunda columna del grid
vamos a escribir, en la primera lnea (la correspondiente a Campo:), la siguiente expresin:
Entrada: SiInm(EsNulo([CantE]);0;[CantE])
En definitiva, esto:
Ya tenemos los datos como queramos: todos los detalles de los productos que han salido y, si
no han salido, indicados con valor cero, que es lo que devuelve la funcin SiInm()
Guardamos la consulta.
2a.- Creamos una nueva consulta en vista diseo, que guardaremos con el nombre de
CEntradas2. Aadimos la consulta que acabamos de crear.
2b.- Aadimos los dos campos de que consta la consulta, y la convertimos en una consulta de
totales. En el campo [Entrada] indicamos que queremos agrupar por suma.
Vistame en http://siliconproject.com.ar/neckkito/
Guardamos la consulta.
Ahora vamos a hacer lo mismo, pero con los datos de la tabla TSalidas.
3a.- Creamos en vista diseo una consulta que llamaremos CSalidas, basada en la tabla
TProductos y TSalidas. Su diseo sera el siguiente:
Vistame en http://siliconproject.com.ar/neckkito/
4 a.- Creamos una ltima consulta, que estar basada sobre la tabla TProductos, CEntradas2 y
CSalidas2. Guardamos esa consulta con el nombre de CStock.
Hacemos click sobre el campo [CodProd] de <TProductos> y lo arrastramos sobre el mismo
campo en CEntradas2. Hacemos lo mismo con TProductos y CSalidas2. Se nos deberan crear
dos lneas de relacin entre las tres tablas.
10
Vistame en http://siliconproject.com.ar/neckkito/
Borrar su etiqueta
Fijaos que no podis ver mi campo [Id]. Ello es as porque est escondido detrs del campo
[CodProd] (si os fijis bien se le ven cuatro pelillos... je, je...).
Cuando quede a nuestro gusto cerramos y guardamos el informe.
PROGRAMACIN DE FMENU
Vamos a situar nuestro formulario FMenu en vista diseo. Vamos a aadir un cuadro
combinado y un botn para poder abrir nuestro informe con toda la informacin o filtrado.
As pues:
1.- Aadimos un cuadro combinado. Cuando se nos inicie el asistente lo configuramos de la
siguiente manera:
Vistame en http://siliconproject.com.ar/neckkito/
Aadimos los tres campos que hay en esa tabla. Dos campos si no hemos utilizado [Id]
2.- Sacamos las propiedades del cuadro combinado y nos vamos a Pestaa Otras Nombre, y
ah escribimos cboProd
3.- Insertamos un botn de comando. Le ponemos de nombre cmdAbreRStock.
Por ejemplo, el diseo de estos dos controles yo lo he ideado as:
Un par de comentarios:
El informe, con este cdigo, se abre en vista preliminar. Si lo que queremos es enviarlo
directamente a la impresora debemos cambiar el argumento:
12
Vistame en http://siliconproject.com.ar/neckkito/
acViewPreview
por
acViewNormal
Y con esto nuestro formulario FMenu ya est listo para salir
del horno.
PROGRAMANDO FSALIDAS
Vamos a establecer un control en FSalidas, para evitar que podamos dar salida a un producto
que del cual no hay stock. Aprovecharemos para lanzar un mensaje de advertencia si quedan,
por ejemplo, 10 o menos unidades de ese producto.
1.- Situamos FSalidas en vista diseo. Seleccionamos el campo [CantS] y sacamos sus
propiedades. Nos vamos a Pestaa Eventos Despus de actualizar, y generamos el siguiente
cdigo5:
El cdigo utiliza DAO, por lo que debemos asegurarnos de que tenemos la referencia registrada. Para ello, en el editor de VB, nos
vamos a Men Herramientas Referencias, y debemos tener marcado el check de la librera Microsoft DAO 3.6 Object Library. Si
no la tuviramos debemos buscarla, marcar su check y aceptar.
13
Vistame en http://siliconproject.com.ar/neckkito/
Como veis el cdigo est comentado y he intentado ir explicando lo que hace cada lnea de
cdigo.
Y ya tenemos, con esto nuestro FSalidas preparado para supervisar nuestras salidas y darnos
un tirn de orejas si intentamos sacar material que no existe.
Pues eso... Nuestra aplicacin de gestin de inventario ya est totalmente operativa. Espero
que os sea de utilidad y que podis adaptar algunas cosillas de las aqu explicadas a vuestras
aplicaciones.
Un saludo, y...
suerte!
14
Vistame en http://siliconproject.com.ar/neckkito/