Sumar registros nulos en una Consulta

Comentar que soy de Chile.
Mi duda pasa por sumar 3 datos donde uno de ellos a veces es nulo.
Y lo que quiero es que me convierta el valor nulo a cero y me arroje la suma de los 3 registros sin problema.
Donde: productos comprados = x
            productos vendidos = y
            productos consumidos por dueño = z
Por tanto Stock debe ser = x - (y+z)
Donde z, a veces, para un determinado producto, es nulo.

1 respuesta

Respuesta
1
Hay varias formas de resolver esto:
La primera y más cómoda es que en la definición de la tabla indiques que el valor por defecto para nuevos registros sea cero en estos campos. Y luego actualices todos los valores nulos a cero. Con eso evitaras problemas en el futuro y simplificaras en código.
La otra, más complicada, es usar la función isNull para comprobar si es nulo y en caso afirmativo cambiarlo por un cero
Algo como iif(isnull(z), 0, z)
Pero mejor la primera opción.
Ok probaré ambas formas a la vez, hoy por la noche acá, y te comento como me ha ido.
Saludos
Se se ha resuelto la duda, cierra y puntúa la respuesta que me sigue apareciendo como activa.
Hola comentarte que probé las dos modalidades pero, las consultas de Access no aceptan sumar datos cuando uno de estos es nulo. Solucioné el problema mediante código VB.
1.- Cada vez que se retira un producto por el dueño o se vende, se produce una actualización del campo Stock en la tabla Productos.
Private Sub CódigoProducto_AfterUpdate()
Dim Filtro As String
Dim UC As Long   'Unidades compradas
Dim UV As Long   'Unidades vendidas
Dim UR As Long   'Unidades retiradas por el dueño, consumo propio.
Dim SQL As String
Filtro = "CódigoProducto = " & Me!CódigoProducto
UC = Nz(DSum("UnidadesCompradas", "CompradeProductos", Filtro), 0)
UV = Nz(DSum("Cantidad", "DetalledeVentas", Filtro), 0)
UR = Nz(DSum("Cantidadretiros", "DetalledeRetiros", Filtro), 0)
Stockreal = ((UC) - (UV + UR))
SQL = "UPDATE Productos " & _
           "SET Sock = Stockreal " & _
           "WHERE CódigoProducto = Filtro;"
DoCmd.RunSQL SQL
End Sub
Nota: Indicar que parte del WHERE aún la estoy afinando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas