Está en la página 1de 5

GESTIN ALMACN- ADENDA 41

Bueno... Lo que empez con una simple gestin de almacn


ya, gracias a vuestras consultas, se est convirtiendo en
una sper-aplicacin de control de inventarios... je, je...
Cul es el problema que resuelve esta adenda? Hasta
ahora, inicialmente, dbamos de alta un artculo y sobre l
realizbamos unas entradas y una salidas, y nuestro
programa controlaba sus existencias (ejemplo inicial y
adendas 1 y 2). En la adenda 3 se aada la complejidad de
que el artculo poda tener varias referencias asignadas. Y,
finalmente (o no?), en esta adenda se profundiza en la
problemtica de las referencias y cmo dar entrada y salida
no slo del producto, sino de las referencias del producto.
En realidad podramos decir que es el ejemplo de la adenda 3 pero un poco ms automtico.
En este caso sera una salvajada (al menos para m, que os lo tengo que escribir), empezar
de cero, por lo que la sistemtica va a ser la siguiente: voy a partir de lo que ya est hecho en
el ejemplo de la adenda 3 y, desde ah, os indicar qu es lo que debemos eliminar, aadir o
modificar para llegar a un nuevo sistema.
Dicho esto... pues... pongmonos manos a la obra!

MODIFICANDO LA TABLA TREFERENCIAS


Lo primero que haremos ser modificar la estructura de la tabla TReferencias. Esta
modificacin ser muy simple, puesto que lo nico que tenemos que hacer es aadir un campo
llamado [doySalida] de tipo S/No, asegurndonos que el valor predeterminado de ese campo
sea False.
La nueva estructura de TReferencias sera la siguiente:

Por aqu todo listo.

CREANDO NUESTRA CONSULTA CREFERENCIASIN


Vamos a crearnos una consulta basada en TReferencias que nos filtre por todas aquellas
referencias para las que an no se ha producido salida. La guardaremos con el nombre de
CReferenciasIn. En esta consulta aadiremos un filtro sobre el campo [doySalida]
precisamente para filtrar las referencias que an siguen en stock.

La BD de ejemplo os la podis bajar aqu

Vistame en http://neckkito.siliconproject.com.ar

La estructura de dicha consulta ser la siguiente:

Si os fijis he realizado una ordenacin de los dos primeros campos para que, cuando miremos
la lista de referencias disponibles, estas nos salgan ordenadas de A Z, con lo que su
localizacin debera ser ms sencilla, al menos tericamente ;)

CREANDO NUESTRO FORMULARIO FREFERENCIASOUT


Sobre la anterior consulta nos crearemos un formulario que guardaremos con el nombre de
FReferenciasOut. La construccin de este formulario deber ser utilizando Formularios
continuos (varios elementos).
Nos debera quedar algo tan simple como:

Un par de operaciones sobre el formulario:


- Veis que el campo [IdProd] lo he situado en un rincn a la derecha, he borrado su etiqueta y
lo he redimensionado a fin de hacerlo pequeito. Ello es as porque este campo no se va a
ver en el formulario. Para ello, situamos su propiedad Visible (Pestaa Formato Visible) en
NO.
- Como no nos interesa que nadie nos cambie el cdigo de la referencia vamos a bloquear el
campo [Referencia]. Para ello sacamos sus propiedades Pestaa Datos Bloqueado: S.
- Finalmente, como no sera bueno que el usuario tuviera la posibilidad de utilizar este
formulario para dar de alta referencias lo que haremos ser sacar las propiedades del
formulario Datos Permitir agregar. NO; y tambin modificamos la propiedad Permitir
eliminaciones: NO.

Vistame en http://neckkito.siliconproject.com.ar

De esta manera el usuario slo tendr que marcar el check de la referencia que quiera dar de
salida.
La idea es que este formulario se nos convierta en un
subformulario del form FSalidas.

OPERANDO SOBRE FSALIDAS


Nuestro formulario FSalidas tiene un subformulario basado
en FReferencias. Lo que vamos a hacer es sustituir ese
subformulario por el nuevo que acabamos de crear. Los
pasos que debemos seguir son los siguientes:

Eliminamos el subformulario de FSalidas.


Insertamos un subformulario. Cuando nos aparezca el asistente lo configuramos de la
siguiente manera:
Usar un formulario existente, y seleccionamos FReferenciasOut.
Definimos nuestra propia relacin: campo del formulario [IdProd]; campo del
subformulario [IdProd]
Dejamos el nombre que nos aparece por defecto y finalizamos el asistente.

A m me ha quedado una cosa as:

Ahora tenemos que cambiar el cdigo del botn Contar referencias (cmdContarReferencias).
As pues, accedemos a su cdigo y lo modificamos por este otro:

Private Sub cmdContarReferencias_Click()


'Declaramos las variables
Dim nRef As Long
Dim rst As DAO.Recordset
'Clonamos el recordset del subformulario
Set rst = Me.FReferenciasOut.Form.Recordset.Clone
'Recorremos los registros. Si tienen el check marcado los sumamos
With rst
.MoveFirst
Do Until .EOF
If .Fields("doySalida").Value = True Then
nRef = nRef + 1
End If

Vistame en http://neckkito.siliconproject.com.ar

.MoveNext
Loop
End With

'Escribimos el valor en la cantidad de entrada


Me.CantS.Value = nRef
'Llamamos al procedimiento del evento "Despus de actualizar" de
[CantS]
Call CantS_AfterUpdate
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing
End Sub

Aprovecho para comentaros que he detectado una pequea pifia en el botn Cerrar del
formulario. Su cdigo debera ser el siguiente:

Private Sub cmdCerrar_Click()


'Declaramos las variables
Dim resp As Integer
'Comprobamos que haya valor en la cantidad de salida
If IsNull(Me.CantS.Value) Then 'No hay valor. Pedimos confirmacin de salida
resp = MsgBox("No hay valor en la cantidad de salida. Es correcto?", _
vbQuestion + vbYesNo, "AVISO")
If resp = vbYes Then 'Si es correcto...
'Salimos del formulario y volvemos a men
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "FMenu"
End If
Else
'Si hay valor salimos
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "FMenu"
End If
'En caso contrario nos quedamos en el formulario para corregir la incidencia
End Sub

MODIFICANDO NUESTRA CONSULTA CREFSALIDAS


Con el nuevo sistema nuestra consulta CRefSalidas nos ha quedado obsoleta. Por suerte para
nosotros (y para m) arreglarla es muy fcil. Lo nico que debemos hacer es situar la consulta
en vista diseo, aadir el campo [doySalida] y filtrarlo por TRUE. As:

Vistame en http://neckkito.siliconproject.com.ar

Y problema arreglado.

PARA FINALIZAR EL EJEMPLO


He testeado la BD y, en principio, no he podido encontrar
ningn error. Pero como esto es una modificacin de algo
que ya estaba hecho cabe la posibilidad de que se me haya
escapado algn detalle. Si detectarais algo que no funciona,
o la aparicin de un error, os agradecera que me lo
comentarais en mi libro de visitas (con la descripcin de
qu es lo que funciona mal, lgicamente). As intentar
ponerle remedio.
Espero que este ejemplo os sea til.
Un saludo, y...
suerte!

Vistame en http://neckkito.siliconproject.com.ar

También podría gustarte