Error en suma en access si el campo es null

Tengo un conujunto de subformularios y campos realizando la suma
código:
=[TT_PA].[Formulario]![TOTAL_PAGO_PA]+[TT_PB].[Formulario]![TOTAL_PAGO_PB]+[TT_PE].[Formulario]![TOTAL_PAGO_PE]+[TT_PH].[Formulario]![TOTAL_PAGO_PA]+[TT_PS].[Formulario]![TOTAL_PAGO_PS]+[TT_PV].[Formulario]![TOTAL_PAGO_PV]
Pero me manda #Error en la mayoría por que los campos están vacíos solamente saca el total de la suma si los campos están llenos, necesito corregirlo asignando un valor de cero en caso de que el campo este vacío.
Pero no se el código :( ayuda please...

1 respuesta

Respuesta
3
Debes diferenciar entre Null e inexistente.
El caso que expones es bastante típico y el problema estriba en que, al menos en uno de los subformularios, no hay registros. ¿Voy bien, verdad?
En ese caso, el control que realiza la suma ni siquiera llega a crearse, por lo que no es ni siquiera Null... lo que nos impide la utilización de la función Nz.
Así pues debemos tomar otra táctica: evaluar si hay un error y obrar en consecuencia. Lo que debes hacer es cambiar cada referencia "a pedal" que tienes de los distintos campos TOTAL por expresiones que evalúen el posible error y lo sustituyan por 0.
En esencia se trata de utilizar la función SiInm combinada con la función de inspección IsError.
(Aviso: el origen del control queda muuuuuuy largo)
=SiInm(IsError(=[TT_PA].[Formulario]![TOTAL_PAGO_PA];0;=[TT_PA].[Formulario]![TOTAL_PAGO_PA]) + ..... te dejo el resto para ti.
Gracias de hecho ya había intentado esa fórmula de =silnm(iserrror()) y =slinm(nonulo()) pero no me funcionaron y fue porque me faltaron paréntesis =(silnm(iserrror())+(silnm(iserrror())... y así sucesivamente por si las flys dejo el código en caso de que alguien necesite info de esto:
=(SiInm(IsError([tt_pa].[formulario]![total_pago_pa]),0,[tt_pa].[formulario]![total_pago_pa]))+
(SiInm(IsError([tt_pb].[formulario]![total_pago_pb]),0,[tt_pb].[formulario]![total_pago_pb]))+
(SiInm(IsError([tt_pe].[formulario]![total_pago_pe]),0,[tt_pe].[formulario]![total_pago_pe]))+
(SiInm(IsError([tt_ph].[formulario]![total_pago_ph]),0,[tt_ph].[formulario]![total_pago_ph]))+
(SiInm(IsError([tt_ps].[formulario]![total_pago_ps]),0,[tt_ps].[formulario]![total_pago_ps]))+
(SiInm(IsError([tt_pv].[formulario]![total_pago_pv]),0,[tt_pv].[formulario]![total_pago_pv]))
Los expertos deberían de dejar sus emails para ser más rápidos pro en fin gracias Experto por responder! (Espero llegar a ser experto :D)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas