Te ofrecemos un sencillo truco para realizar sumas en subformularios de Access y luego presentarlas en el formulario principal, un ejemplo clásico es en un formulario de facturas o albaranes cuando tenemos que presentar la suma del importe de todas las lineas de factura.
Supongamos la clásica factura que tenemos en un formulario de Access y en dicho formulario tenemos incluido un subformulario donde presentamos las líneas de las facturas, como es lógico tenemos que tener un cuadro de texto en el formulario donde obtengamos la suma del importe de todas las lineas del subformulario, para ello tenemos que hacer los siguientes pasos:
- Creamos un cuadro de texto independiente en el pié del subformulario lineas de factura, éste cuadro de texto lo vamos a llamar txtSuma (ojo, no la itequeta del cuadro de texto).
- Como origen del control ponemos:
=Suma([unidades]*[precio])
donde «unidades» es el campo cantidad de artículos de una determinada línea de factura y «precio» es el campo precio del artículo. - Ahora nos vamos al formulario principal y creamos un cuadro de texto que vamos a llamar txtTotal y cuyo origen del control va a ser:
=[forLineasFactura].[Formulario]![txtSuma]
donde «forLineasFactura» es el nombre del subformulario donde tenemos las líneas de factura y «txtSuma» es el nombre del cuadro de texto del subformulario donde anteriormente hemos hecho la suma.
Este truco funciona bien con controles independientes pero si el resultado de la suma tenemos que insertarlo en un control dependiente (con origen de datos) tendremos que usar otro método y es usando la función Dsum:
- En el evento «Despues de actualizar» del subformulario ponemos el siguiente código:
Parent!txtSuma = DSum(«Importe», «conFacturasLin», «NroFactura = Parent!NroFactura»)Donde:
Parent!txtSuma es el control dependiente que queremos actualizar del formulario principal.
Importe es el nombre del campo.
conFacturasLin es el nombre de la tabla o consulta donde tenemos el campo anteriormente citado.
NroFactura = Parent!NroFactura es el criterio que le pasamos a la función Dsum, que quiere decir que nos sume el campo Importe de la tabla o consulta conFacturasLin cuando el campo NroFactura sea igual al control NroFactura del formulario principal.
Con ésto tenemos solucionado el sumar en subformularios y que tenemos que presentar en el formulario principal, el ejemplo está realizado en Microsoft Access 2003 en español, recuerda que si es en inglés tienes que cambiar el nombre de la función Suma por Sum y Formulario por Form.
Para cualquier duda dejamos los comentarios abiertos.
Gracias por esta respuesta
Muchas gracias por esta solución ha este problema, ya me estaba complicando mucho con otras soluciones, pero este tema me pudo ayudar mucho, espero que sigas compartiendo buenas resoluciones.
GRACIAS
MIL GRACIAS, LLEVO BUSCANDO SOLUCIÓN AL PROBLEMA DESDE HACE TIEMPO, Y CON ESTO TODO RESUELTO!!!
Aclaracion sobre el articulo anterior
Aunque lo he leido varias veces me cuesta entender la explicación relacionada con un campo dependiente. No comprendo el criterio de la funcion Dsuma. Si no fuera mucho pedir podrías intentar ampliar la explicación.
Estoy buscando durante mucho tiempo lo que explicas en tu artículo aunque yo solo necesito traspasar la suma de los registros no de un campo específico del mismo.
Te agradezco cualquier ayuda que puedas ofrecerme.
Saludos
Pregunta
Q TAL ESTA MUY INTERESANTE TU APOYO PERO TANBIEN EXISTE UNA FUNCION PARA LA RESTA ENTRE CAMPOS?.
GRACIAS