Función Nz

Tengo que sumar dos subformularios, uno de ellos puede tener un valor null es por esto que en la consulta he creado la siguientes expresión:
TotalFcd: Nz([PrecioUnidadfcd],0)*Nz([CantidadFcd],0)*Nz([FactorFcd],0)
Le he cambiado la forma decenas de veces, llevo tres días y no he podido conseguir que cuando uno de los formularios no tiene registros me de valor cero para poder hacer la suma y me muestre los valores correspondientes. Cuando ambos formularios tienen valores esto sale perfecto.
Te agradezco de antemano tu ayuda, generalmente trato por mis medios investigar y solucionar mis problemas, pero esta situación me sobrepasa porque la función Nz es bastante simple y clara y no logro entender porque no me funciona.

3 respuestas

Respuesta
1
Necesitas describir un poco más el problema que tienes.
Si estás multiplicando tres campos y uno es nulo, la función Nz() evitará un error, pero el resultado será siempre 0
Hablas de sumas, ¿en dónde realizas esas sumas?
Si tienes formularios y subformularios hay reglas para referirse a los mismos en funciones y código.
Cuéntame cómo tienes estos para que me dé una idea
Tu fórmula es correcta.
Mencionas que tienes una consulta y que en esta tienes el campo calculado TotalFcd. Basándome en esto:
No podrás mejorar esta fórmula como tal porque estás en una consulta y al usar la función Nz() te devolverá una cadena de longitud cero " "
Tu fórmula no tiene error porque en el argumento Valor si es Nulo estás poniendo el "0" que es necesario en una consulta para que no te devuelva cadenas longitud cero.
Por lo mismo, el error puede estar al momento de poner este campo el el form o subform.
Estoy a pendiente para que me especifiques y podamos solucionarlo.
El primer subformulario es una tabla de productos:
PrecioUnidad
Cantidad
Descuento
Total
Los Cuatro campos son numéricos: donde el subtotal de la factura es
=Suma(Nz([Total],0))
Tengo un segundo subformulario idéntico solo que se trata de unidades comprados directamente en el almacen de la ezquina y no codificadas.
Tengo que sumar estos formularios que cuando tienes valores ambos funcionan a la perfectamente. El problema esta cuando uno de ellos no tiene nada.
Si deseas me das tu email y te mando la base.
El problema es tan simple, pero que la función Nz no funcione me tiene medio loco.
Te agradeceré que por favor me ayudes a ver que pasa, por qué no funciona.
Un saludo afectuoso, atentamente
Eugenio Paz
[email protected]
Luego de verificar comentamos en este hilo la experiencia.
Esto porque TodoExpertos sirve también para que otros aprendan, seguramente a alguien más se le presenta el mismo problema que a ti.
Listo! Te he enviado de vuelta tu aplicación.
Revisando rápidamente tu base de datos te comento que la función Nz() no es tan efectiva cuando tiene que calcular nuevos registros. Recuerda que no es lo mismo un valor Nulo, una cadena de longitud cero, cuando está vacío y cuando tiene el valor 0.
Para esto es necesario la función SiInm() En ocasiones se puede mezclar con IsError() pero en este caso no fue necesario.
Todo se resolvió entonces utilizanso SiInm() y corrigiendo la propiedad ValorPredeterminado.
La propiedad Valor Predeterminado en un campo calculado crea muchos problemas cuando actualizas datos, más si lo haces por VBA
En tu base tenías asignado Valor Predeterminado a algunos campos calculados y esto causaba ciertos errores en el cálculo.
Revisa el ejemplo que te envío.
Como verás cuando lo abras, sólo tiene unos cuantos objetos de los originales (dejé los que dependían con el form que daba problemas), esto para que localizara el error más rápido.
Hay tres forms adicionales (llamados Ejemplo...) que cree para eliminar posibilidades de errores de otro tipo. Estos los puedes quitar. Te recomiendo que sólo copies y pegues a tu base de datos los tres forms que corregí (previo backup de tu base de datos), o que sólo actualices las propiedades y los campos calculados con sus respectivos controlsource.
Me cuentas si abre bien el archivo porque creo que utilizas Access 2000 y yo te lo prepraré en 2010 con compatibilidad.
Respuesta

Se que es mucho tiempo después, pero tomando en cuenta lo que dicen que sirve para que otros que tengan el mismo problema, me atrevo a dar mi humilde opinión:considero que el problema no es de la función nz() si no más bien matemático cuando sumas 0 + n es igual a "n" esto es 0 + 1 = 1 pero siempre que multipliques por n * 0 es igual a 0 que creo que es lo que trataba de explicar betomejia, para corregir

Nz([PrecioUnidadfcd], 0)*Nz([CantidadFcd], 0)*Nz([FactorFcd], 0)

pónganlo así

Nz([PrecioUnidadfcd], 1)*Nz([CantidadFcd], 1)*Nz([FactorFcd], 1) - Azra el

Respuesta

This is due to the fact that blockpost is helpful for others to learn, as someone else undoubtedly has the same issue as you.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas