Consulta calculo debe haber en access - Saldo final

Tengo una base de datos en access y en un apartado necesito que haga el calculo automáticamente del saldo anterior pero no se me ocurre como hacerlo.

Necesito que en el apartado débito se descuenten los valores que agregue y en crédito que sumen al saldo final.

En el campo SALDO tengo que se haga [CLASE_CREDITO] - [CLASE_DEBITO] pero esto solo me sirve para calcular linea por linea y no toma el saldo anterior obviamente porque no sé como expresarlo.

Espero haberme explico y que me puedan ayudar. Dejo una captura para que se pueda entender un poco mejor.

Respuesta
1

La respuesta de Julián es acertada cuando el campo SALDO está en la tabla, por lo general estos campos se obtienen mediante consultas. He preparado un ejemplo para obtener el saldo mediante una consulta.

El ejemplo consta de 3 tablas y 2 formularios.

FORMULARIO CONSULTA CLASES Y SALDOS

CÓDIGO DEL COMBO BOX Alumno

Tiene como fin actualizar el origen de datos del subformulario.

Le repito este ejemplo es solo para consultar cuando la tabla no tiene el campo "saldo", pero si usted necesita actualizar el campo saldo debe seguir el ejemplo de Julián.

Si quiere el ejemplo puede solicitarlo a [email protected] favor hacer referencia de acuerdo con la consulta.

Así es mi estimado, al principio no me guardaba el resultado porque no tenia el campo saldo y al crearlo me había permitido lograr lo que quería.

De todas formas agradezco muchísimo tu método ya que es otra alternativa que me podría funcionar en un futuro.

Muchas gracias nuevamente y felices fiestas.

Y es el método a utilizar le serivira cuando migre a un servidor de datos como MariaDB MySql o PostgreSQL porque allí no le servirán algunas instrucciones de Access como Dsum(). Le recomiendo no utilizar el campo SALDO sobra desde el punto de vista de un buen diseño de tablas.

Y se me olvida decirle que hacer los cálculos con Dsum() por cada registro se van tornando lentos en la medida que aumente el número de registros, por ejemplo, 10.000.

Buen dato, sobre todo al uso que quiero darle, ya que unos 10mil se llega bastante fácil.

Muchas gracias por la info, lo voy a tener en cuenta.

1 respuesta más de otro experto

Respuesta
1

Si tengo el formulario Alumnos basado en la tabla del mismo nombre, con el subformulario Tabla1 basado en la tabla Tabla1, los he relacionado por IdAlumno. A medida que voy poniendo Debitos y Creditos

En las propiedades del cuadro de texto Debito- en la solapa Eventos- Después de actualizar crea un procedimiento de evento y ponlo como

Private Sub Debito_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Saldo = DSum("nz([debito])", "tabla1", "idalumno=" & Me.IdAlumno & "") - DSum("nz([credito])", "tabla1", "Idalumno=" & Me.IdAlumno & "")
End Sub

Y en las propiedades del cuadro de texto Credito, lo mismo, exactamente lo mismo

Private Sub Credito_AfterUpdate()
DoCmd.RunCommand acCmdSaveRecord
Saldo = DSum("nz([debito])", "tabla1", "idalumno=" & Me.IdAlumno & "") - DSum("nz([credito])", "tabla1", "Idalumno=" & Me.IdAlumno & "")
End Sub

Es decir, súmame los Debitos de la tabla Tabla1 correspondiente a ese Idalumno y réstale la suma de creditos de ese mismo alumno y el valor ponlo en el control Saldo.

¡Muchísimas gracias, Julián!

Todo muy claro y explicativo, aprendí algo más hoy y te lo agradezco nuevamente.

Saludos y felices fiestas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas