"Sumar Si" en formulario access 2003

Tengo un formulario access que muestra los datos de una consulta de selección. Dicho formulario tiene un campo numérico [IMPORTE] y un campo texto [SUMINISTRO]. Mi intención es incluir en el pie del formulario un cuadro de texto que devuelva la suma de todos los importes que correspondan a registros donde el campo SUMINISTRO sea distinto de "gas". Vamos como un SumarSi de excel.

1 respuesta

Respuesta
1

No se como andas de código pero te aseguro que es lo mejor.

Supongamos que el formulario tiene su origen en la consulta Ventas, en el origen del control del cuadro de Texto Total puedes poner

=Dsum("importe","Ventas";"suministro<>""Gas""")

¡Gracias de nuevo! ¡Funciona!

Hola de nuevo Icue. Y de nuevo gracias por tu atención.

Me acabo de dar cuenta de que no funciona como yo quiero, y me explico:

Tengo un formulario principal [Clientes] con datos generales, en el que he insertado varios subformularios que muestran información específica. Uno de ellos es [AD Solo Suministros].

En el pie del subformulario [AD Solo Suministros], que tiene su origen en la consulta [Solo Suministros], inserto dos cuadros de texto: uno suma los valores del campo importe =Suma([IMPORTE]). Otro suma los valores del campo importe, PERO SOLO LOS QUE CUMPLEN DETERMINADA CONDICIÓN, =DSuma("IMPORTE";"Solo Suministros";"AYUDA<>""BUTANO"""). Pues bien, devuelve la suma de TODOS los registros de la consulta de origen, pero lo que necesito es que sume los registro correspondientes al cliente activo en el formulario principal y sólo esos.

Gracias. Un saludo.

Prácticamente no uso consultas, pero entonces, tienes que anidar otro criterio más. Supongamos que el formulario y el subformulario están relacionados por Idcliente( no es necesario que sea este campo), entonces tendrías que poner como criterio. En el diseño de la consulta añádele el campo Idcliente y debajo en criterios pones

ayuda<>""Butano"" and idcliente=" & me.idcliente & "")

En caso de que el campo que quieras usar no sea el que relaciona ambos y el criterio está en el formulario, también podrías poner como criterio

....Ayuda <>""Butano"" and yoquese=me.parent!campodelformulario")

Lo siento no entiendo tu respuesta. Lo que pretendo es sumar un campo numérico del subformulario llamado IMPORTE. En un cuadro de texto la suma de todos sus valores y en otro distinto las suma de aquellos de sus valores incluidos en registros que en campo AYUDA contengan algo distinto de la cadena "Butano".

Gracias. Perdona mi torpeza.

Si yo quiero saber las ventas que le he hecho a un cliente, tendré que decirle que me sume las ventas de ese cliente en particular, sea formulario sea subformulario. Por ejemplo vamos a suponer que tienes un formulario Ventas, con Idcliente, Fechaventa, ImporteTotal, etc y tienes un subformulario Detalleventa con Idcliente(para relacionarlos), Producto, Precio, Cantidad, Subtotal

Si pones un cuadro de texto en el pie del subformulario y le dices simplemente que te sume los subtotales de la tabla DetalleVenta, te sumará los subtotales del cliente Pepe, Juan, Pedro, María, etc. Tendrás que decirle que te sume los subtotales pero SÖLO de el cliente que está en pantalla. Por eso te decía lo de

TextoX= dsum("subtotal","detalleventa","Idcliente=" & me.idcliente & "")

Las condiciones AND o OR se pueden anidar, por ejemplo

TextoX=dsum("importe","detalleventa","producto=""patatas"" and idcliente=" & me.idcliente &"")

TextoX=dsum("Importe","detalleventa","producto=""Patatas"" or producto=""Naranjas"" and idcliente=" & me.idcliente & " and Fecha like [escriba una].....

La otra cosa que te decía es que si algo que vayas a utilizar como criterio está sólo en el formulario, por ejemplo, un cuadro de texto Cuanto, pero no está en el subformulario puedes usar

textoX=dsum("subtotal","detalleventas","cantidad=me.parent!cuanto")

De todas formas, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo.

Si lo haces, en el asunto del mensaje pon tu alias Franktrouble, ya que si no sé quien me escribe ni los abro.

Creo que ahora si lo entiendo. La función Dsum admite varias condiciones a la hora de filtrar los datos. Pues bien, yo escribo =DSuma("IMPORTE";"Solo Suministros";"AYUDA<>""GAS""" Y "DNI=" & me.DNI &"") pero me da error. Lo que intento decir es: suma los valores del campo IMPORTE de la consulta Solo Suministros siempre que en el campo AYUDA de esta consulta no ponga GAS y en el campo DNI ponga lo que pone en el cuadro de texto DNI de mi formulario. No se si he escrito el código mal.

Gracias por tu paciencia Icue.

Construyo una tabla con los registro que puedes ver(daría igual que fuera una consulta)

Si sumas, los registros de Pepe verás que los que no son Gas suman 710 €. Si tengo un formulario como el de la imagen( da igual que sea único o continuo) y le pongo un cuadro de texto Al que he llamado Total y que he puesto en el costado pero daría igual lo pongas donde lo pongas)

y escribo 500, pero te recuerdo que son de Gas, y pulso Enter

El código se lo he puesto en el evento Después de actualizar del cuadro de texto Importe.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas