Access - Suma Condicionada en un Formulario

 
Vista:

Suma Condicionada en un Formulario

Publicado por Jesús González (16 intervenciones) el 25/04/2007 05:20:15
Saludos a todos los amigos de LWP, les escribo con el fin de que por favor me ayuden en un problemita que me tiene trancado. Quiero hacer en una caja de texto de un formulario se refle el resultado de la suma de los números de un campo, pero solo aquellos que cuamplan con las condiciones especificas de otro campo.

Ej: Valor del Producto: Código del Producto:
100 01
200 02
500 03
100 04
700 05

Resultado: Quiero que me muestre en una caja de texto del formulario el resultado de la suma, pero solo de los productos, cuyo código = 01,02,03. Valor de la Suma= 800

Espero puedan ayudarme, y quisiera que fuera de otra forma, que no sea usando la función "SiInm"

Muchas Gracias por su colaboración!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Suma Condicionada en un Formulario

Publicado por Marcelo (22 intervenciones) el 25/04/2007 06:51:19
La solución depende de como señales los registros a sumar, los códigos yo los colocaría como numéricos 1, 2, 3 no texto 01, 02, 03.

En todo caso una solución más optima sería indicando lo que quiero sumar como un flag(bandera) en un campo del tipo Sí/No (-1/0 respectivamente) o bien apartando los valores a sumar en una tabla auxiliar, así la discriminación sera más automática y con un criterio más flexible :

Codigo Valor Flag
100 1 -1
200 2 -1
500 3 -1
100 4 0
700 5 0

Para suma de Totales la experiencia me ha enseñado que los cuadros de texto se deben dejar independientes, hacer los cálculos en Visual Basic y una vez calculado, cargarlo en dicho cuadro.

Te envío un ejemplo, un saludo espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Suma Condicionada en un Formulario

Publicado por Chea (1015 intervenciones) el 25/04/2007 08:46:41
Una forma de sustituir SiIm(), muy apropiada para cálculos es multiplicar el valor que quieres usar por el resultado de una condición. Por ejemplo:

= Abs(Sum(Valor * (codigo = "01" or codigo ="02" or codigo= "03"))

Como verdadero = -1 y falso = 0, cuando se cumplan las condiciones el resultado será Valor * -1 y, cuando no se cumplan, Valor * 0, por tanto, sumando tendremos la suma de los valores que cumplen la condición, pero en negativo, por lo que, para convertirlo a positivo, tenemos que usar Abs().

Saludos
José Bengoechea Ibaceta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Suma Condicionada en un Formulario

Publicado por marcelo (22 intervenciones) el 25/04/2007 17:03:40
No te confundas José, en ningún momento he usado los valores 0 y -1 como factores de una multiplicación, son un campo a parte del tipo Sí/No con un valor lógico. A ese campo lo llamé Flag

Sí = 0
No=-1

Después se usa en una función agregada de dominio del tipo DSum() en Visual Basic

Total.Value = DSum("Valor" , "Tabla1" , "Tabla1.Flag = -1")

Se lee : Se carga en el Text Box Total.Value la suma del campo Valor de la Tabla1 para los campos cuyo Flag = -1, que equivale a un check en un campo Sí/No

Un Saludo
Marcelo Hidalgo Pellerano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar