Access - Asignar primer hueco libre en cajas de almacenaje

 
Vista:

Asignar primer hueco libre en cajas de almacenaje

Publicado por Miguel Cid (1 intervención) el 28/11/2016 16:00:23
Hola,
Estoy haciendo una base de datos de muestras biológicas. He hecho una tabla con su formulario asociado en el que se registran cada una de las muestras y se les asigna un código, Ahora quiero poner un boton en el formulario que me añada el próximo hueco a ser rellenado en las cajas de almacenaje (son cajas de 9x9 posiciones) y que entonces busque cual es el último relleno para que me asigne el siguiente con el valor correspondiente en los campos "caja" "fila" y "columna". Hice una consulta que me ordena estos tres campos con lo cual la última fila de la consulta sería el último hueco ocupado. El botón debería coger los datos de esa última fila de la consulta y sobre eso añadir 1 a la columna, pero si la columna es ya 9 tendría que añadir uno a la fila y ponerse en 1 la columna y si tanto fila como columna son 9 tendría que aumentar uno a la caja y poner la fila y la columna en 1.
No se si conseguí explicarme bien.
Un saludo y muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Asignar primer hueco libre en cajas de almacenaje

Publicado por Jesús Manuel (375 intervenciones) el 29/11/2016 13:58:37
Supongamos que tu consulta se llama qrCajas y que tienes los siguientes campos: Caja, Fila, Columna. Los campos son tipo número, ya tienen que venir definidos en la tabla como tal.

Como no termino de entender que vas a hacer con los datos, te lo muestro en un cuadro de texto y luego puedes modificar tu el código a tu gusto. En el formulario tendrías un cuadro de texto, txtCaja, y un botón en el que tendrías el siguiente código en el evento clic:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Dim MaxCaja As Integer
Dim MaxFil As Integer
Dim MaxCol As Integer
 
If IsNull(DMax("[caja]", "[qrCajas]")) Then
    MaxCaja = 1
    MaxFila = 1
    MaxCol = 1
    Me.txtCaja = "Caja: " & MaxCaja & " / Fila: " & MaxFila & " / Col: " & MaxCol
Else
    MaxCaja = DMax("[Caja]", "[qrCajas]")
    MaxFila = DMax("[Fila]", "[qrCajas]", "[Caja]=" & MaxCaja)
    MaxCol = DMax("[Columna]", "[qrCajas]", "[Caja]=" & MaxCaja & " and [Fila]=" & MaxFila)
 
 
    Me.txtCaja = "Caja: " & MaxCaja & " / Fila: " & MaxFila & " / Col: " & MaxCol
 
    If MaxCol + 1 > 9 Then
        MaxCol = 1
        If MaxFila + 1 > 9 Then
            MaxFila = 1
            MaxCaja = MaxCaja + 1
        Else
            MaxFila = MaxFila + 1
        End If
    Else
        MaxCol = MaxCol + 1
    End If
 
    Me.txtCaja = Me.txtCaja & "  ---- Caja: " & MaxCaja & " / Fila: " & MaxFila & " / Col: " & MaxCol
End If


Lo que hace el código es buscar el máximo valor para Caja, si es nulo, implica que no hay datos y asigna el valor a 1 para Caja, Fila y Columna. Luego busca el máximo valor para Fila dentro del máximo valor de la Caja y el máximo valor en Columna con la máxima Caja y la máxima Fila.

A partir de aquí es un bucle de If para ver si el valor de columna o fila es superior a 9 para voler a 1 y aumentar una fila o una caja.

Por el camino guardo los valores máximo y el nuevo valor aumentado en txtCaja
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar