Valor 0 cuando no hay registro en formulario Access

Como siempre agradeceros vuestra inestimable ayuda.

Tengo un formulario para el control del pago de las rentas de los inquilinos, los suministros y el pago final al propietario con la cuenta resultante.

Dentro de este formulario hay un subformulario con los datos de la factura de algún servicio finalizado pero no cobrado. En este subformulario hay un campo que calcula el sumatorio de los importes de estas facturas pendientes de pago. El problema es cuando no hay ninguna factura pendiente de pago y en este subformulario no se recoge ningún dato de ningún registro.

En el formulario se especifican varios campos con las distintas cantidades (mencionadas al principio) y un campo que recoge la suma total de lo que hay que transferirle al propietario, teniendo en cuenta el valor del campo de suma de facturas pendientes del subformulario.

He probado de varias maneras (Silnm, Nz, IIF) pero no consigo que cuando no hay registros en el subformulario muestre el valor 0 en el campo que recoge los datos en el formulario.

El campo del subformulario se llama [SumaFacturasPendientes], el campo que recoge este valor, en el formulario, se llama [TotalFacturasPendientes] y el campo que recoge la suma de todos los valores [ImporteaLiquidar]

De nuevo muchas gracias!

4 respuestas

Respuesta
1

Como siempre agradecer la ayuda de los sabios.

Después de probar varias opciones he dado con la tecla y reconozco que había una simpleza que me lo impedía.

Dejo aquí la solución por si a alguien le puede servir.

El subformulario siguiente:

Tiene que tener permitido agregar registros, de manera que en lugar de no mostrar nada muestra la opción de introducir un registro (que nosotros realmente no necesitamos, pero que habilita el campo para que el resultado sea 0)

El campo que recoge el valor sumatorio de las facturas pendientes he utilizado la propuesta de Sveinbjorn en otro hilo:

=SiInm(EsNulo(Suma(Nz([TotalFactura];0)));0;Suma(Nz([TotalFactura];0)))

De esta manera el campo señalado en naranja indica 0 si no hay ningún registro.

El campo que está en el formulario recoge el valor del campo del subformulario con esta referencia: =[FacturasPendientes].[Formulario]![TotalFacturasPendientes], y asunto solucionado.

Respuesta
1

Igualmente, si me envía su base de datos a [email protected] trato de colaborarle.

Le envíe a su correo la base de datos editada.

Respuesta
1

Si no tiene datos confidenciales, ¿podrías mandarme una copia a [email protected]

Es para ver el diseño de los campos, ya que personalmente usaría otra fórmula tipo

Al activar registro

TotaLiquidar=Dsum......................,tabla, "pendiente=true")

Gracias Julián. Sí, tiene datos, pero preparo una de ejemplo y te la envío.

Gracias de nuevo.

No tengas prisa, el mundial de fútbol no vale la pena.

Respuesta
1

En base a este párrafo:
...

El problema es cuando no hay ninguna factura pendiente de pago y en este subformulario no se recoge ningún dato de ningún registro.
...

Si el campo del subformulario se llamase 'Total de la factura' la referencia a el seria esta:

IIF (IsNumeric([Total de la factura]), [Total de la factura],0)

Al no tener registros el subformulario, no se crea el campo calculado y por ello la referencia a él dará error, si se utiliza la función 'IsNumeric' se puede controlar, esta función (que es un control de errores) permite emular al clásico Nz.

Gracias Enrique, sustituyendo por el nombre del campo en concreto me quedaría esta expresión:

=Silnm(EsNum([TotalFactura]);Suma([TotalFactura]);0)

Este valor está recogido en el campo dentro del subformulario que lanza el valor del sumatorio de los importes de las facturas pendientes de pago, pero cuando entro en un inmueble que no tiene ninguna factura, el campo aparece vacío, no 0. Lógicamente estaré indicando algo mal, te agradecería tu ayuda.

El campo señalado en naranja es el que recoge este valor.

Si el campo no llega a crearse, no puede tener valor (cero es un valor) la existencia de una etiqueta (valor estático) no implica la existencia del dato (valor dinámico).

Normalmente esa expresión se utiliza para el cálculo, no para sustituciones estéticas, para ello (no lo he verificado en la práctica) se podría utilizar la propiedad formato del cuadro de texto.

Inténtalo así (consciente de que, si se visualiza el cero, es solo una ilusión óptica):

En la vista diseño del formulario, en el cuadro de texto y como formato:

#,00;-#,00;,0,00

Hay cuatro parámetros de formatos, el primero para números positivos, el segundo para negativos, el tercero es para el valor cero y el cuarto para el valor NULL, verifícalo con estos formatos (y asignándole valores)

"Positivo"; "Negativo"; "Cero"; "NULO"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas