Determinar saldo actual y saldo anterior en access

Estimados tengo 2 tablas de gastos la 1 cabecera con los campos numero, fecha, valor y la 2 con el detalle de los gastos numgasto, fechagasto, detallegasto, valgasto, la relacion es por el numero y numgasto, en el formulario gastos va los datos de la cabecera y en subformulario el detalle, entonces cuando ingreso un gasto con valor de 50, este se va restando a medida que realizo los ingresos de los gastos en el detalle y todo esta bien, ahora lo que necesito es que cuando vaya a ingresar otro gasto en la cabecera este me sume el saldo del gasto anterior y que a ese nuevo avlor se le vaya restando los detalles de este nuevo valor de gasto, espero este claro

1 respuesta

Respuesta
1

Siempre que se trabaja con Saldos actuales o anteriores, debes tener un campo especialmente con ese fin. En este caso, no veo en las tablas el campo "SALDO" por ningún lado.

La tabla de detalle debería contener los siguientes campos (como mínimo):
Numgasto, Fechagasto, Detallegasto, Valgasto, Saldo.

De este modo, siempre que ingreses un gasto, el saldo será igual al Saldo del registro anterior, menos el valor del gasto, y deberías ponerlo en el campo "Saldo", y así, tendrías fecha a fecha, el saldo de ese momento.
Para calcular el saldo del registro, es tan sencillo como este código:
If Me.NewRecord Then
      SaldoAnterior= DLast("[Saldo]", "[TablaDetalle]", "NumGasto=" & NumGasto - 1)
      Saldo = SaldoAnterior - Saldo
End If

¡Gracias! un millón de gracias

En que evento debería ir el código

Debería ir en el evento "Al Perder el enfoque" justo en el campo en el que introduces el importe del gasto. En ese momento, cuando el cursor salta al siguiente campo, recogería el saldo anterior y lo colocaría en la casilla "Saldo" del registro actual restando el importe del saldo anterior...

antes que nada te agradezco tu gentileza, te explico bien cual es el inconveniente, lo que tu me indicas esta perfecto, pero en realidad mi problema es arrastrar el saldo que sobra de un caja chica cuando voy a generar un nueva caja chica, por ej.

la caja chica #1 la cree el 1/08/2017 con 50 dls. tabla  ccajachica

en le transcurso de ese mes hice 3 gastos el 01/08/2017 por 25dls, el 18/08/2017 por 10dls y el 30/08/2017 por 5 dls en totalñ de los 50 dls que puse ´para esos gastos he gstado solo 40dls. tabla detgasto. Para los siguientes gastos ingreso una nueva caja chica el 01/09/2017 con  40dls pero como en la caja chica anterior tenia 10 dls de saldo, el nuevo valor debe ser de 50 dls y a partir de ahi empiezo a generar mis gastos hasta una nueva reposición o ingreso de una caja chica # 3. lo que quiero saver es coomo arrastrar ese saldo de la caja chica anterior, no del gasto.

Lo que yo te proponía es lo siguiente:

Saldo Caja Chica #1
  Fecha      Concepto               Importe        SALDO
01/08/17   Ingreso en Caja #1         50$            50$
01/08/17   Gasto nº 1                -25$            25$
18/08/17   Gasto nº 2                -10$            15$
30/08/17   Gasto nº 3                 -5$            10$
01/09/17   Ingreso en Caja #1         40$            50$

De esta manera, siempre conocerías el saldo en cualquier fecha. Si por ejemplo, necesitas conocer el saldo al 29/08/17 (no existe fecha... pero te buscará la anterior a esa fecha), tendrías que hacer algo como esto:
SaldoAfechaX = DMax("[Saldo]", "Tabla-Saldos", "[Fecha] <= #29/08/17#")
Esta Funcion, va a sacar el VALOR MAYOR (por eso es Dmax) de la tabla "Tabla-Saldos" que le has indicado (Fecha<= 29/08/07) - Y en este caso, de todas las fechas menores del 29/08/17 la más alta será el 18/08/07... y de ahí, sacará el campo "SALDO"

Como puedes ver, es una función muy útil usando solo una línea de código y te resultará muy interesante cuando desees ver saldos a una determinada fecha.

En programación, lo que prima es estructurar bien la información, precisamente para evitar tener datos repetidos o tener que hacer larguisimos programas para extraer los datos...
Este formato de saldos que te he explicado, es el estandard que usan los bancos...

buenos días, gracias por tu atención, si esa alternativa ya la aplique, pero el ejercicio que tengo que resolver exige que sea utilizando 2 tablas con una relación a través de un campo clave, tal cual como lo expuse, y que en la tabla principal ccajachica se guarden los saldos de cada caja chica con la que se generan los gastos  y que este saldo final  sea  sumado al saldo inicial de la nueva caja chica que se ingrese.  y he probado de todo pero no lo puedo solucionar todavía, por eso recurro a ustedes que son bastante buenos en este tema de access

Ok, no entiendo bien tu planteamiento, ni porqué necesitas usar dos tablas, pero creo que la única solución sería usar un campo para saber si es un ingreso o un gasto (yo lo proponía haciéndolo en negativo o positivo).
De esta manera, así le puedes decir que sume todos los campos que sean del mismo tipo. Cogiendo el ejemplo que te puse anteriormente, sería algo así:

Saldo Caja Chica #1
  Fecha      Concepto               Importe       Ingreso/Gasto
01/08/17   Ingreso en Caja #1         50$              I
01/08/17   Gasto nº 1                -25$              G
18/08/17   Gasto nº 2                -10$              G
30/08/17   Gasto nº 3                 -5$              G
01/09/17  Ingreso en Caja #1 40$ I

y de este modo, podrías usar la función que te dije anteriormente para sumar los ingresos o los gastos, tal que así:

SumaGastos= DMax("[Importe]", "Tabla-Saldos", "[Ingreso_Gasto] = 'G' ")
SumaIngresos= DMax("[Importe]", "Tabla-Saldos", "[Ingreso_Gasto] = 'I' ")

Saldo= SumaIngresos - SumaGastos

Espero que esto te de una idea... Es dificil entender lo que quieres hacer sin verlo.

Por otro lado, a veces es más facil reestructurar el programa, que crear un montón de programación extra para hacer lo que quieres hacer, bien sea por la funcionalidad, bien sea por el trabajo extra que acarrea empeñarse en hacer una cosa de la forma que la has pensado. -No todos los lenguajes de programación están pensados para hacer de todo y aunque Access y VBA es muy potente, hay cosas que serían demasiado complicadas de hacer. Planteáte si lo que pretendes hacer es una de esas cosas.

Si me ayudas con un correo te envío el programa que estoy haciendo de pronto ahí lo puedas entender, la lógica de solución tuya es la ideal, pero yo debo ajustarme a un requerimiento de un profesor, el requerimiento del ejercicio es utilizar las 2 tablas para utilizarlas en un mismo formulario. y es una de mis notas finales

No acostumbro a resolver los problemas que ponen los profesores... Para eso hay que estudiar y debes ser tu quien resuelva el problema, al margen, de que te prestemos un poco de ayuda los que estamos por aqui...

Pero con gusto le echaré un vistazo a tu programa y te diré lo que falla.

[email protected]

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas