Si se tratase del Saldo de cada movimiento, podrías abrir un recordset en el que añadieras un campo calculado (Ingreso - Pago As Saldo); pero como se trata del arrastre de todos los movimientos anteriores, creo que no te queda más remedio que añadir un nuevo campo "físico" en la tabla, de nombre "Saldo" y tipo Single, para poder presentarlo directamente, igual que presentas los otros dos campos.
Pero será necesario que hagas una previa actualización de ese campo:
1º.- Abres la base de datos
2º.- Creas un recordset (rs) con esos tres campos, ordenado por fecha (si es que existe ese campo...)
3º.- Dimensionas una variable para el arrastre (Dim nSaldo As Single) y la inicializas a cero.
4.- Haces un bucle, tal que
Código:
nSaldo = 0
While not rs.EOF
nSaldo = nSaldo + rs.Fields("Ingreso") - rs.Fields("Gasto")
rs.Fields("Saldo") = nSaldo
rs.Update
rs.MoveNext
Wend Por supuesto, a partir de ese momento, cada vez que hagas un cambio en un registro de esa tabla deberás, antes de nada, tomar los valores que tienes actualmente:
Código:
Dim nIngreso As Single, nGasto As Single, nDiferencia As Single
nIngreso = rs.Fields("Ingreso")
nGasto = rs.Fields("Gasto")
nSaldo = rs.Fields("Saldo")
' Si vas a añadir un registro nuevo, haces un rs.MoveLast y tomas ahí el valor
nSaldo = rs.Fields("Saldo")
nIngreso = 0
nGasto = 0 Ahora haces la modificación pertinente, y al grabas los cambios añades estas líneas:
Código:
nDiferencia = rs.Fields("Ingreso") - rs.Fields("Gasto") - nIngreso + nGasto
while Not rs.Eof
rs.Fields("Saldo") = rs.Fields("Saldo") + nDiferencia
rs.Update
rs.MoveNext
Wend Por favor, prueba este código, porque lo estoy haciendo a vuela pluma, y yo no lo he probado...