Access - Sumar registros de un mismo campo en access respetando un filtro

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Sumar registros de un mismo campo en access respetando un filtro

Publicado por Alejandro (5 intervenciones) el 07/08/2019 05:24:14
Hola soy nuevo en esto de VBA para aplicacion y necesitaría que me guien con algo que me esta complicando en access, necesito sumar un registro y sus 5 anteriores de un mismo campo (Escala) y el resultado ubicarlo en otro campo (Repeticion), es para llevar una evolución de un punto cada 6 meses/Registros , por lo cual por cada registro debe ejecutar la misma operación...el problema se presenta cuando ejecuto el codigo :

1
2
3
4
5
6
7
8
Private Sub btn_Calc_Click()
DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Me.Recordset.RecordCount
Repeticion = DSum("Escala", "BASE DATOS ZAFIRO", "id between " & Me.Id & " and " & Me.Id & "+5")
DoCmd.GoToRecord , , acNext
Next
End Sub

Recorre toda la tabla de datos pero no respeta el filtro del subformulario por lo cual me suma valores del campo "Escala" de otros puntos y no del mismo y el resultado no coincide con la suma de escala.-
Desde ya muchas gracias.-


Ejemplo de lo que necesito lograr


ejemplo

Ejemplo de lo que logre hasta ahora



mal2
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

Sumar registros de un mismo campo en access respetando un filtro

Publicado por Anonimo (1962 intervenciones) el 07/08/2019 11:25:31
Yo crearía una consulta tomando como base la tabla con los datos a calcular

La consulta tendría que cumplir estas características:
.- Seleccionar el tipo de registros a sumar (primer parámetro)
.- ordenarlos en modo ascendente
.- tomar la referencia de en que registro comenzar (segundo parámetro)
.- aplicar la clausula TOP con el numero de registros deseados

Si se ha hecho de forma correcta se obtendría una consulta que comenzaría el parámetro dos (según el orden puede ser el ID o la fecha o ….) y tendría el numero de registros que se le indicase con la clausula TOP, si se es hábil, se podría obtener la suma de los elementos y con un simple DLookup que utilizase como dominio la consulta obtener la suma calculada.

Siendo sincero, el código o acciones requerían un poco mas de esfuerzo para un buen acabado, por ejemplo: verificar que la selección devuelve los cinco registros (llegando al final, devolvería cuatro, tres, dos, uno y error por no haber datos suficientes), pero ese y otros posibles inconvenientes deberían ser puentes a cruzar cuando se llegue a ellos.

Nota: en plan avanzado y si se tiene soltura con el manejo de Recordset se podría utilizar el RecordsetClone del formulario, eso sustituiría al primer parámetro pues se supone que el conjunto presente en el formulario delimita al total de los datos de ese tipo, se da por supuesto que el formulario esta ordenado por lo que al recordsetclone también se le supone.

Delimitado ese conjunto de datos, verificar que hay cinco o mas a partir del actual no es un problema, sumar el contenido de un campo o cualquier calculo tampoco es un problema … y sumarlos de cinco en cinco (un clasico For … next) incrementando secuencialmente el inicio del For no supone un inconveniente.
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
sin imagen de perfil
Val: 10
Ha aumentado 1 puesto en Access (en relación al último mes)
Gráfica de Access

Sumar registros de un mismo campo en access respetando un filtro

Publicado por Alex (5 intervenciones) el 07/08/2019 16:09:31
Gracias por la respuesta , pero mi idea es completar el codigo ya que estoy cerca de lograrlo...ayer lo modifique logre que respete el filtro del subformulario pero ahora no realiza el calculo...supongo que voy a tener que seguir probando hasta dar en la tecla..

1
2
3
4
5
6
7
8
9
10
Private Sub btn_Calc_Click()
Me.Subform1.SetFocus
Me.Subform1.Form!Repeticion.SetFocus
DoCmd.GoToRecord , , acFirst
Dim i As Integer
For i = 1 To Me.Subform1.Form.Recordset.RecordCount
Me.Subform1.Form!Repeticion = DSum("Escala", "BASE DATOS ZAFIRO", "id between " & Me.Id & " and " & Me.Id & "+5")
DoCmd.GoToRecord , , acNext
Next
End Sub
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

Sumar registros de un mismo campo en access respetando un filtro

Publicado por Anonimo (1962 intervenciones) el 07/08/2019 16:37:41
Pues nada, animo y a por el éxito.

Cuando llegues a la meta y los datos aumenten con el uso, supongo que desearas rendimiento y la tara que suponen las funciones de dominio te lo pondrá muy difícil, tampoco desplazarse 'físicamente' por los registros generara alegría, pero ello no empañara el éxito alcanzado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar