Código para saldos acumulados en un formulario

Tengo 4 tablas de bancos con las siguientes Columnas y cada una tabla tiene un formulario con estas columnas "Cargos" "Abonos" y "Saldo" lo que se necesita es que el saldo sea acumulado en cada formulario (Cargos - Abonos = Saldo )

2 Respuestas

Respuesta

Si lo que se precisa el el total del conjunto, la función de dominio DSuma lo resuelve:

= DSum("Cargos"; "BANCO1") -  DSum("Abonos"; "BANCO1") 

Si se necesita línea a línea, es indispensable un dato auxiliar que indique el orden (sea una fecha o un numero de asiento) y utilizar ese dato como limite superior, algo como:

 = DSum("Cargos"; "BANCO1"; "Fecha < =" &  [campo con la fecha en esa línea]) - DSum("ABONOS"; "BANCO1"; "Fecha < =" &  [campo con la fecha en esa línea])

He dado por supuesto que la fecha no se repite y eso no siempre se cumple (puede haber mas de un movimiento en la misma fecha) por lo en ocasiones se añade también el ID (para mantener el orden y obtener los resultados individualizados)

La fecha se puede repetir por varios renglones... ¿y cómo se colocaría el ID?

¿Esto se hace por medio de una consulta? ¿O hay que poner esto en algún lado?

Si se necesita el ID (u otro campo) se tiene que añadir como una condición más y unir ambas con un AND, como muestra en una de las sumas (en negrita lo añadido):

 DSum("Cargos"; "BANCO1"; "Fecha < =" &  [campo con la fecha en esa línea]) &  " AND Id <= " & [ID])

Una nota a tener en cuenta, si se trabaja con fechas hay que tener cuidado con el formato (internamente Access utiliza el americano) o bien convertir la fecha a numero (el formato carecerá de importancia), lo anterior con esta variación (la fecha es una fecha 'Access' no un campo de texto):

 DSum("Cargos"; "BANCO1"; "Fecha < =" &  CDbl([X_fecha])) &  " AND Id <= " & [ID])

X_Fecha = campo de fecha de tipo Fecha/Hora

ID = Campo numérico ascendente que si es sincrónico a las fechas se puede utilizar en lugar de la fecha (el ID no se repite y las fechas si lo hacen, por ello se necesita otro más).

Si las fechas no son correlativas ascendente (como lo es el ID) se han de utilizar ambos.

El ejemplo con solo el ID:

DSum("Cargos"; "BANCO1"; "Id <= " & [ID])

La opción ideal es utilizando una consulta en lugar de la tabla (es más flexible y normalmente más rápida)
Si se opta por ese camino, publica los nombres de los campos y las condiciones (si hay ID y si las fechas son ascendentes sin interferencias) para poder aplicar la condición más sencilla.

nombre de la Tablas: 

Banco1

Bancos2

Bancos3

y todos tiene las siguientes columnas:

Cargos (Deposito)

Abonos (Pagos)

Saldo

y sus repectivo formularios de cada uno..

seria que en el formulario se llevara el saldo acumulado ...

Cargos (Deposito) - Abonos (Pagos) = Saldo (este se lleve acumulado)

Gracias

la idea es ir llevando el saldo de bancos en cada

Si no hay un dato que indique (cuando menos) la fecha o un dato que diferencie los apuntes (un ID), solo queda como opción de sumar los campos (en el pie del formulario) y restar los resultados obtenidos (será el saldo de todos los apuntes):

=Sum([Cargos]) - Sum([Abonos])

Perdón,,

Si hay estos campos

ID

FECHA DEL MOV

Vemos si permite una expresión,

Se genera una nueva consulta, se toma la tabla Banco1 y se bajan los campos Fecha, Cargos, Abonos, se ordena por fecha (se puede ordenar también por ID aunque este oculto) y como exresion que calcula el saldo se genera un dato calculado en una columna nueva se escribe el nombre (puede ser SALDO:) con los dos puntos y a continuación esto:

DSuma("[Cargos]-[Abonos]";"Banco1";"[Fecha del mov] <=" & CDoble([Fecha del mov]) & " And ID <= " & [ID])

Si el filtro del foro dejo publicar, se obtendrá una consulta con el saldo por apunte cambia el nombre del banco y ...

Respuesta

Está página ya no deja poner nada de código, ni imágenes. Así que si quieres, repito, si quieres, mándame un mensaje, sólo el mensaje, a [email protected] y te mando un ejemplo. Te anticipo que no necesitas para nada 4 tablas y 4 formularios. Basta con una tabla y un formulario.

Si lo haces, en el asunto del mensaje pon tu alias Alberto Mata, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas