Poner nulos a 0 en SQL para VB

En una función en VB para access he intentado ejecutar una sentencia SQL. El problema esta en que en esa sentencia inserto 1 columna con el nombre y 3 columnas con números en una tabla, pero quiero que en una ultima columna de la tabla haga la suma de las 3 anteriores (todo en la misma sentencia SQL). Creo que lo e hetxo bien, pero el problema esta en que si alguna de las columnas tienen un valor nulo, ya no hace la suma de las otras 2. Es decir, que o tienen algún valor todas las columnas o no hace la suma. ¿Me puedes decir que tengo que poner en esta sentencia SQL para que coja las columnas nulas como 0?
DoCmd. RunSQL "insert into Principal (IDMATERIAL, STOCK, SALIDAS, SALIDAS_WZ, PEDIDO_SUGERIDO) SELECT Stock.F1, Stock.F4 as STOCK, Salidas1.CANTIDAD AS SALIDAS, Salidas2.CANTIDAD AS SALIDAS_WZ, STOCK-SALIDAS-SALIDAS_WZ FROM Stock, Salidas1 Salidas2;"
Se ke existe la posivilidad de usar un recorset para que vaya linea a linea de la tabla haciendo un update, pero mi idea es evitar eso en la medida de lo posible, ya que este proceso hace ke el tiempo de ejecucion aumente mas de lo ke me gustaria.

4 Respuestas

Respuesta
1
Este problema se resuelve fácilmente con la instrucción IIF (condición, Valor1, Valor2) esta función te regresa un valor. Lo que tienes que hacer es lo siguiente:
SumaColumna3 = iif(IsNull(Campo1), 0, Campo1) + iif(IsNull(Campo2), 0, Campo2)
Despues la instruccion SQL
Insert Campo1, Campo2 , SumaColumna3
Respuesta
1
Para realizar la suma tienes que poner sentencias siinm
De modo que si a <>0 entonces a si no "0", y así sumara un cero.
No se si me explique correctamente.
Si tienes algún problema me lo dices.
Te agradezco la rapidez en responder, pero lo que yo pido es como modificar la sentencia SQL que e puesto en la pregunta de forma que ponga 0-s en la columnas donde el valor sea null. Pero eso que me has puesto tu, debería ir fuera de la sentencia SQL, ¿no? Y eso es precisamente lo que intento evitar. ¿Alguna otra idea?
Gracias.
Aquí tienes un ejemplo en SQL:
SELECT caja.fechacaja, caja.precio, caja.ivacaja, IIf([precio]<>0,[precio],0)+IIf([iva]<>0,[iva],0) AS alfa
FROM caja
Donde suma precio+iva si son distintos de 0, en caso de ser nulos les pone un 0 para poder sumar.
Respuesta
1
Te pongo un ejemplo parecido; nulos a 0 dentro de la suma de dos campos
---
SELECT MuchosDatos.Campo1, MuchosDatos.Campo2, IIf(IsNull([campo1]),0,[campo1])+IIf(IsNull([campo2]),0,[campo2]) AS suma
FROM MuchosDatos;
---
Respuesta
1
En realidad no es necesario que uses un campo de la tabla para poner datos calculados.
Todos los datos calculados se manejan desde la consulta, por ejemplo si deseo sumar dos columnas en otra columna mediante SQL, la instrucción sería así:
SELECT Facturas.No_Factura, Facturas.Cuenta1, Facturas.Cuenta2, [Cuenta1]+[Cuenta2] AS Total
FROM Facturas;
Y esa consulta la puedes usar desde un form o Report.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas