Como hacer una condicional si su valor es igual a cero

Tengo una pregunta donde su valor es 0 y si es así lo que debe resultar es Cancelado

Ejemplo:

Resultado: SiInm([Residuo]>0;"DEBE";SiInm([Residuo]=0;"Cancelado";SiInm([Residuo]<0;"Crédito";"POR PAGAR")))

Respuesta
1

Trate en lo posible no utilizar Siinm(), toda vez que el código se vuelve confuso. Una opción más legible es crear una función que reciba como parámetro el residuo y con base en éste retorne el texto. Esta es la función:

La ventaja es que la puede llamar la función desde cualquier parte, como en una consulta, formulario, reporte y desde código.

Ejemplo de llamada desde una consulta:

Resultado:

Ahora, si cambiamos el resultado por 0:

Ahora, si cambiamos el resultado por -2:

También puede llamar la función para darle un formato al texto, por ejemplo:

¿

? Residuo(10,1) ----- Retorna --- "DEBE"

¿

? Residuo(0,2) ----- Retorna --- "cancelado"

¿

? Residuo(-10,3) ----- Retorna --- "Crédito"

El segundo parámetro es opcional en donde:

1= Texto en mayúsculas

2= Texto en minúsculas

3= Texto la primera letra en mayúsculas.

en relación a utilizar código no lo quise realizar así ya que por ese modo no tengo problema alguno en crearlo, lo que si me doy cuenta es que nunca se cumple el SIINM cuando el valor es 0, y es por esto mi pregunta los invito a realizarlo o es que estoy haciendo algo mal.

Resultado: SiInm([Residuo]>0;"DEBE";SiInm([Residuo]=0;"Cancelado";SiInm([Residuo]<0;"Crédito";"POR PAGAR")))

Por eso mi pregunta y duda.

esto es lo que resulta aplicando lo anterior

Está mal la instrucción, sobra el tercer Silnm(). Debe ser:

Resultado=SiInm([Residuo] > 0;"DEBE"; SiInm([Residuo] = 0; "Cancelado"; "POR PAGAR"))

Ahora, si quiere reemplace "POR PAGAR" por "Crédito"

Utilizando su sugerencia este es el resultado

Resultado: SiInm([Residuo]>0;"DEBE";SiInm([Residuo]=0;"Cancelado";"POR PAGAR"))

Que pena pero lo probé en un formulario debe estar haciendo algo mal.

1 respuesta más de otro experto

Respuesta
2

No sé cual es la pregunta, pero en principio la tienes bien, aunque sobraría el último Siinm. A menos que sea que si Residuo esté en blanco lo considere como cero sería

Resultado:Siinm([residuo]>0;"Debe";siinm(nz([residuo])=0;"Cancelado";"Por Pagar"))

Corrijo, no había leído lo de <0

Pero, la última condición no se va a cumplir nunca. Verás, primero le dices

Si residuo>0

Luego

Si Residuo=0

Luego

Si Residuo <0

Por tanto, ya no puede tener más opciones, o es mayor, igual o menor a algo.

Pero igual a cero nunca se cumple has solo la condición para que te des cuenta que no se cumple y es mi duda...

Te digo lo que haría. ¿Para qué esperar a que la tabla tenga datos, para que te pueda hacer el cálculo?

Vamos a suponer que con ella, vacía, haces un formulario( da igual único o continuo, pero este último se ve mejor). Por lo que parece, el cero también lo escribes. En ese caso, en las propiedades del cuadro de texto Abono- Eventos-Después de actualizar crea un procedimiento de evento y entre Private Sub y End Sub pon

residuo=total-abono

select case residuo

case is>0 

Resultado="DEBE"

case is=0

Resultado="Cancelado"

case is<0

resultado="Crédito"

case else

resultado="Por pagar"

end select

De forma que cuando escribas algo en Abono, automáticamente te hace el cálculo, te rellena los cuadros de texto Residuo y Resultado.

Chevere tu respuesta pero el problema es que a través de código no tengo problema de hecho hace tiempo que lo hice en VBA to access, pero en relación a SIINM quiero saber porque no acepta el monto en cero y de ser así cual es la alternativa pero a través de condicional

Pero es que la condición "Por pagar" no se puede dar nunca. Un número o es mayor que cero o es igual a cero o es menor que cero. No hay mas.

Si tengo la tabla, donde he puesto los posibles casos y con ella construyo una consulta como

Cuando la abro

De todas formas, en tu imagen pones ($9,48) y eso no es número, es texto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas