Resultado de una consulta sumar continuadamente según el año que este en el formulario

Tengo una bd de contabilidad interna. Necesitó sumar un campo sacado de una consulta. Quiero una sumatoria desde principios de año de dicho campo. Cada mes seria un registro

Si estoy en el año 2017 y tengo dos resultados de ese campo mes noviembre 100 y mes diciembre 100, al estar en el formulario en el mes noviembre salga 100 al pasar a diciembre sume 200. Al pasar al año 2018 empiece a sumar desde 0

Enero 50

Febrero 45

Marzo 10

Si en el formulario estoy en Febrero muestre 95 y si estoy en marzo 105.

He conseguido con ayuda sumar el total del año pero si el campo a sumar es el resultado de un campo calculado no logro que en sume, si es un campo normal si, eso si no es una suma continuada.

Alguna sugerencia

Campos que tengo

Id, fecha, ingresos gastos, efectivo, Caixa

En una consulta tengo la suma de efectivo y caixa llamada Mes

Y en otra columna de esa consulta llamada Mes2Mes1 saco la resta de ese registro con el mes anterior

Mes2Mes1: Abs([Mes]-((DSuma("Mes";"Tabla";"id<=" & [id]-1))-Nz(DSuma("Mess";"Tabla";"id<=" & [id]-2);0)))

El campo a sumar sería Mes2Mes1

2 respuestas

Respuesta
2

Carlos: En mi opinión para ir mostrando importes de meses y años y el acumulado parcial, es muy adecuada una consulta de Referencias cruzadas y sobre ella si quieres un Formulario y/o Informe.

Mira si quieres éste enlace de un ejemplo que tengo en Mediafire.

http://www.mediafire.com/file/gjg9euk8odytbpx/RefCruzadasMesesA%25C3%25B1os.rar/file 

Mis saludos >> Jacinto

Y se me ha pasado ponerte otro ejemplo que ya tiene el Formulario.

http://www.mediafire.com/file/0488ij1xv9krs87/RefCruzadasFuerzaCeros.rar/file 

Un saludo >> Jacinto

¡Gracias!  Voy a ver si puedo adaptarlo a mi bd, el.segundo ejemplo (RefCruzadasFuerzaCeros.rar/) no puedo abrir  el fichero.

Carlos: ¿No puedes abrir el fichero comprimido o no puedes abrir la Base de Datos?

Un saludo >> Jacinto

Hola extraigo el fichero, pero al abrirlo me da error

Carlos te adjunto el enlace de una copia que he subido sin comprimir y que he abierto antes sin problema:

http://www.mediafire.com/file/lss1tk284y0qb5s/RefCruzadasFuerzaCeros.accdb/file 

Un saludo >> Jacinto

Gracias, sigo sin poder abrir dicho fichero, sera que uso access 2007. Pero no se preocupes

He conseguido adaptar que me salga la suma total en el formulario, no la continua según el año

Actualmente tengo una consulta llamada Sumas relacionada con otra llamada Cálculos (de ahí saco el campo Mes2Mes1)

Quedando así

Consulta Sumas

Actual: Año([Tabla].[Fecha])

Agrupar Por

Totales: Mes2Mes1

Cálculos

Suma

Y en el formulario

=DBúsq("[Totales]";"Sumas";"Actual=" & Año([fecha]))

Esto me muestra el total acumulado del año, que me podría vale, pero como puedo hacer que me muestre la suma continuada según el mes.

Gracias

Carlos: Por lo que deduzco, más que guardar esos datos, quieres "Mostrarlos".

He leído la respuesta de ICUE, y me parece muy buena, partiendo de una tabla vacía e ir llenando en la medida que vayas haciendo apuntes.

Una alternativa para mostrar los valores del Mes/MesAnt/Diferencia/Acumulado año, la tienes en el ejemplo de éste enlace, que para evitar problemas de apertura lo he puesto en formato .mdb

http://www.mediafire.com/file/sbdbmgpx4kdd0pa/FiltroMesA%25C3%25B1oYCalculos.rar/file 

Un saludo a los dos >> Jacinto

¡Gracias! por contestar, lo he intentando pero ando atascado en algo tan simple como introducir el código que ICUE, pero no se donde. Sobre le fichero que me adjunta, es algo muy lioso para mi intentare comprender y a ver si soy capaz de extraer lo que quiero

Respuesta
1

Si la tabla no tiene datos, te aconsejaría que la hicieras de la forma de la imagen, más o menos

Le pongo lo de la fecha para saber exactamente que día se hizo el ingreso o movimiento.

Luego construyes un formulario, en este caso lo hago continuo, y a medida que voy poniendo ingresos, en el momento que pongo la fecha, me rellena el campo MesAño y en cuanto pongo la cantidad ingresada, en el control Acumulado, me va poniendo la suma de ese mes.

En cuanto cambia de mes, inicia un nuevo "conteo"

El código es simplemente,

Y así, puedes hacer los informes que quieras. Si desearas que sólo te mostrara el último registro de cada mes, podrías usar

Dlast...

y te ahorras consultas, etc.

¡Gracias! Mañana pruebo y le  comentó

Hola hago todos los pasos, pero sinceramente y dados mis pocos conocimientos, ¿donde debería poner el código?

A la tabla la llame Tabla1

y al Formulario Tabla1

pero no encuentro la opción de vista sql :(

Private Sub Fecha_AfterUpdate()
MesAño= Month([Fecha]) & "/" &Year([Fecha])
Ingreso.SetFocus
End Sub

Private Sub Ingreso_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Acumulado = Dsum ("ingreso", "ingresos", "format((fecha),""mm/yyyy"") like ´" & Me.MesAño & "´"
End Sub

Ahora mismo ya no tengo los cuadros de texto, pero es lo mismo. En vista diseño del formulario selecciono el cuadro de texto, en tu caso, primero selecciona Fecha y pulsa el botón Propiedades. En la solapa Eventos pon el cursor en el rectángulo blanco a la derecha de Después de actualizar y te aparecen dos botones. Haz clic en el de pinta de flecha y selecciona Procedimiento de evento. Luego pulsa el botón de los tres puntos

Y se abre el editor de VB, y entre Private Sub y End Sub pones lo que te había mandado

MesAño...

Ingreso.set...

Cierras el editor y repites lo mismo con el cuadro de texto Ingreso.

Debe haber un error o algo estoy haciendo mal

Al entrar el campo fecha en el formulario da error y al depurar sales esto:

Lo mismo pasa con el campo ingreso

El código copiado y pegado

Option Compare Database

Private Sub Fecha_AfterUpdate()
MesAño = Month([Fecha]) & "/" & Year([Fecha])
Ingreso.SetFocus
End Sub

Private Sub Ingreso_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Acumulado = DSum("ingreso", "ingresos", "format([fecha],""mm/yyyy"") like ´" & Me.MesAño & "´")
End Sub

me voy  volver loco :(

Gracias

Os adjunto imagen se me paso, capturo formulario, tabla y error de código, gracias

Creo que lo mejor es que me mandes 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 Carlo LII ya que si no sé quien me escribe no los abro.

¡Gracias! 

Hola finalmente conseguí lo que quería gracias Icue, por supuesto, mi nivel era muy bajo, finalmente con código desde un formulario y sin consultas
La tabla se llama contabilidad
Campos de la tabla
id, fecha, ingresos, gastos, analisis, gasoil, efectivo y caixa
Los campos que se calculan son
Efectivo+Caixa
AhorradoMes
AhorradoAño
Ocio
Al introducir el campo caixa me realiza los 4 calculos
Como indique al usar el software de contabilidad wallo, no meto apuntes varios, gastos de salir a comer/cenar fines de semanas etc...
Ingresos-Gastos debería ser AhorradoMes, pero no seria así, para calcular lo ahorrado del mes en curso lo resto con el AhorradoMes del mes anterior
Luego para calcular el Ocio lo hago así, la resta de Analisis-AhorradoMes= a gastos Ocio
Así quedo el código:
Private Sub Caixa_AfterUpdate()
Me.[Efectivo+Caixa] = Nz([Efectivo]) + Nz([Caixa])
AhorradoMes = Efectivo + Caixa - DLast("efectivo+caixa", "contabilidad", "id<" & Me.id & "")
Me.Refresh
DoCmd.RunCommand acCmdSaveRecord
AhorradoAño = DSum("AhorradoMes", "contabilidad", "format([fecha],""yyyy"")=format(#" & Me.Fecha & "#,""yyyy"")")
Me.Refresh
Me.[Ocio] = Abs(Nz([Analisis]) - Nz([AhorradoMes]))
Me.Refresh
End Sub
Así consigo el campo AhorradoAño me salga una suma acumulada y no me sume el total del año al entrar y salir de la bbdd, eso me pasaba con las consultas.
Graciass

Me alegro que lo hayas solucionado. No conozco ese sistema Wallo porque tengo el mejor programa de contabilidad doméstica que se haya hecho jamás. Mi mujer. No se le escapa ni un euro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas