Evitar el calculo en un formulario continuo en registros que están sin valor en un campo

Tengo un formulario en lo que intento evitar que se realice un calculo en los registros que no tengan valor uno de los campos:

El campo DIFERENCIAL no ha de calcular ni mostrar el resultado si el Campo COSTES esta sin valor, ya que el total del Form da resultados erróneos.

Este campo ha de quedar a 0 o bien sin valor.

2 Respuestas

Respuesta
2

Si los cálculos los haces cuando Diferencial recibe el enfoque puedes poner

If isnull([costes]) then

diferencial=""(para que lo deje en blanco) 

ó diferencial=Null

ò

diferencial=0

(elige el que quieras)

else

diferencial=importes-costes

end if

Efectivamente depende de donde hagas los cálculos.

Los cálculos los hago en los mismos campos Importe y Diferencial:

Importe=[PVP]*[Unidades]

Diferencial=[Importe]-[PCoste]

Ahora lo entiendo menos. ¿Es qué los cuadros de texto Importes y Diferencial son independientes?, algo que no puede ser ya que pondría el mismo valor en todos los campos y si no lo son es imposible que te sume un campo Nulo.

Mira, si tengo la tabla Otra

Con ella hago un formulario continuo

En el evento Después de actualizar de PVP le tengo puesto

Private Sub PVP_AfterUpdate()
Importes = Unidades * PVP
Diferencial = Importes - Costes
End Sub

Si relleno datos hasta PVP

En Diferencial no pone nada, ya que al ser Costes nulo, no efectúa la operación de importes-costes

Si por algún motivo en costes hubiera algún valor, por ejemplo

Cuando rellenara los datos

Entonces sí la efectuaría.

Respuesta
2

Tendrás que usar un condicional para analizar si el campo tiene o no valor y actuar en consecuencia.

Por ejemplo, si los cálculos los haces por código:

If Nz(Me.Costes;-3.14)=-3.14 Then 

Me.diferencial=Null

Else

Me.Diferencial=Me.Importe-Me.Costes .'Aquí los cálculos

End If

Si los cálculos los haces en una consulta o en el origen de control de l campo Diferencial:

IIF(Nz(Costes,-3.14)=-3.14, Null, Importe-Costes)

Pero al no saber cómo haces los cálculos, no puedo afinar más mi respuesta, pero la idea es ésa.

Un saludo.


Los cálculos los hago en los mismos campos Importe y Diferencial:

Importe=[PVP]*[Unidades]

Diferencial=[Importe]-[PCoste]

Pues:

Diferencial=IIF(Nz(Costes,-3.14)=-3.14, Null, Importe-Costes)

o

Diferencial=IIF(Nz(Costes,-3.14)=-3.14, Null, [PVP]*[Unidades]-Costes)

He probado el darle esos cálculos al Campo Diferencial y me da error de sintaxis

¿Qué has puesto y dónde?

Si lo haces por código, en algún evento, no te tendría que dar ningún error.

Si lo haces en el origen de control, te sobra el Diferencial, es decir, tendrías que poner tan solo

=IIF(Nz(Costes,-3.14)=-3.14, Null, Importe-Costes)

Y si tu access es "español", con configuración regional normal para España:

=IIF(Nz(Costes;-3,14)=-3,14; Null; Importe-Costes)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas