Como calculo saldos

Te platico lo que tengo que hacer
1) Tengo una tabla donde tengo los sig. Campos:
ID, Programa, Partida, Autorizado, Monto
2) El monto debe restarse de autorizado para generar un saldo
3) Al saldo se le seguirán restando montos posteriores para generar saldos actualizados

1 Respuesta

Respuesta
1
Tendrás que tener un campo por donde ordenar (por ejemplo una fecha) y un campo donde meter el saldo... Te envío una función que tengo para calcular un saldo:
Tabla Saldos, campos: Fecha, SaldoAnterior, Debe, Haber, Saldo actual
El código sería:
Function CalcularSaldo()
Dim db As Database
Dim rs As Recordset
Dim vSaldo As Double
Set db = CurrentDb()
Set rs = db.OpenRecordset("Select * from Saldos order by Fecha")
Do While Not rs.EOF
vSaldo = rs!SaldoAnterior
rs.Edit
rs!SaldoActual = vSaldo + rs!Debe - rs!Haber
rs.Update
vSaldo = rs!SaldoActual
rs.MoveNext
If rs.EOF Then
Exit Do
End If
rs.Edit
rs!SaldoAnterior = vSaldo
rs.Update
Loop
End Function
Me cuentas.
Gracias Angeles, pero se me paso comentarte que es a través de un formulario como se captura la información, ¿el código que me enviaste lo pongo en el formulario?
Gracias de nuevo
Me tendrás que comentar que hace exactamente el formulario y a que tabla pasa los datos.
El código que te envié es para calcular el sado en TODA la tabla, pero si utilizas un formulario para introducir los datos, seguramente sería conveniente ir calculando el saldo en el momento.
Me cuentas.
Gracias por tu atención Angeles, te explico lo que hay que hacer:
1) Tengo una tabla donde tengo los sig. campos:
ID, Programa, Partida, Autorizado, Monto, saldoActual
Los programas son 12 (300,3099,2388,1888, etc.) no se repiten
Las Partidas 100, 200,300, 400, etc (se repiten en algunas en cada programa)
El Autorizado es el el presupuesto inicial para cada partida
Tengo un formulario en base a la tabla donde
2) El monto debe restarse de autorizado para generar un saldo
3) Al saldo se le seguirán restando montos posteriores para generar saldos actualizados
Gracias de antemano por tu ayuda y espero tu respuesta
Que tengo que hacer para calcular el saldo actualizado cada vez que consulto por partida para poder hacer un nuevo cargo a dicha partida en base al saldo actualizado
Espero haberme explicado, gracias por tu atención
En la tabla, que llamaré Saldos, los campos Programa, Partida, Autorizado, Monto, Saldo, FxMovimiento. He añadido un campo fecha porque creo que si en algún momento quieres hacer un informe o tener constancia de cuando se hizo el monto este campo te lo puede dar, lo llenaremos con la fecha del día.
Un formulario independiente (es decir, no está basado en ninguna tabla ni consulta)
Un cuadro combinado que llamaremos selPrograma para elegir el programa en el que vas a añadir un monto. En el origen de la fila: SELECT Programa FROM saldos GROUP BY Programa ORDER BY programa;
En la acción al hacer clic ---> Procedimiento de evento ---> picas en el cuadrado de la derecha, el de los ... y pones:
Me. Refresh
Form! TxtMontoNuevo. SetFocus
Varios cuadros combinados para visualizar la Partida, Autorizado, suma de montos y saldo actual, los llamaremos:
TxtPartida-->Origen del control:
=DBúsq("[Partida]";"[Saldos]";"Programa=FormselPrograma.Value")
txtAutorizado ...> Origen del control:
=DBúsq("[Autorizado]";"[Saldos]";"Programa=form!selPrograma.value")
txtMontos ---> Origen del Control:
=DSuma("[Monto]";"[Saldos]";"Programa=form!selPrograma.value")
txtSaldo ---> Origen del Control:
=Formulario!txtAutorizado.Valor-Formulario!txtMontos.Valor
A estos 4 cuadros de texto yo les pondría Punto de Tabulación=No ya que en el cuadro combinado selPrograma, al hacer clic, le mandamos el foco al último cuadro de texto que vamos a crear, el cuadro de texto en el que meterás el importe nuevo:
TxtMontoNuevo (no pongas nada en origen del control ya que vamos a meter el valor que queramos.
Por último un botón que llamaremos Enviar, en la acción al hacer clic el código:
DoCmd.RunSQL "Insert Into Saldos (Programa, Partida, Autorizado, Monto, Saldo, FxMovimiento) Values ('" & Form!selPrograma.Value & "', '" & Form!txtPartida.Value & "', '" & Form!txtAutorizado.Value & "', '" & Form!txtMontoNuevo.Value & "', " & Form!txtSaldo.Value & "-" & Form!txtMontoNuevo.Value & ",date())"
Form!txtMontoNuevo.Value = "0"
Form! SelPrograma. SetFocus
Me. Refresh
Es decir, primero ejecutamos una consulta de insertar datos en la tabla saldos con los valores de los cuadros de texto, después ponemos el valor del cuadro de texto txtMontoNuevo a 0 y mandamos el foco al cuadro combinado por si queremos seguir insertando datos en este u otro Programa, por último actualizamos el formulario.
Me cuentas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas