Arrastrar saldos anteriores en cuentas de libros auxiliares

Colegas del foro, necesito obtener un libro auxiliar de contabilidad con saldos actualizados y mostrando saldos anteriores(resumen del saldo anterior a la fecha) al período consultado. Algo así
CUENTA DESCRIPCIÓN                DÉBITO                    CRÉDITO                     SALDO
110505 CAJA GENERAL
Saldos anteriores                          100.000                   25.000                         75.000
FXV 01 Factura de Venta             1.000                        0,00                             76.000
FXV 02 Factura de Venta             5.000                        0.00                             81.000
NXD 03 Nota de Débito                0,00                          2.000                           79.000
220501 NACIONALES 
Saldos anteriores                          500.000                   50.000                        450.000
...
...
...
Y asi sicesivamente con las clasificaciones de cuentas en cada cuenta saldría primero el saldo anterior y luego los documentos que sí pertenecen al período consultado con sus respectivos montos. Ya poseo el SQL para ir calculando los saldos parciales (SQL adaptado de lo que encontré en los foros) pero no he conseguido que me muestre también los saldos anteriores al principio de cada cuenta, antes de mostrar los demás documentos. Les agradecería su ayuda, he intentado hacerlo con UNION pero no muestra nada solo los mismos registros que la consulta sin UNION. Por ahora estoy usando access 2013.
Esta es mi consulta SQL sin saldos anteriores.

Código SQL [-]

SELECT DM.orden, movimientoscontables.fecha, DM.cuenta, movimientoscontables.numero_entero, CuentasPUC.nombre AS nombre_cuenta, 
       DM.detalle, DM.debito, DM.credito,DM.tercero,terceros.nombre AS nombre_tercero, DM.centro_costos, centros_costos.nombre AS nombre_subcentro, SUM(DM2.debito - DM2.credito) AS saldo
FROM (((((detalles_movimientos DM  INNER JOIN  detalles_movimientos DM2 ON DM.orden>=DM2.orden AND DM.cuenta=DM2.cuenta
      INNER JOIN movimientoscontables ON movimientoscontables.id=DM.id_movimiento) 
      INNER JOIN terceros ON terceros.identificacion=DM.tercero) 
      INNER JOIN centros_costos ON centros_costos.id=DM.centro_costos) 
      INNER JOIN CuentasPUC ON CuentasPUC.CodPUC=DM.cuenta) 
      WHERE movimientoscontables.impreso='S'
GROUP BY Dm.orden, movimientoscontables.fecha, DM.cuenta, movimientoscontables.numero_entero, CuentasPUC.nombre, DM.detalle, DM.debito, 
     DM. Credito, DM. Tercero, terceros. Nombre, DM.centro_costos, centros_costos. Nombre
ORDER BY DM. Cuenta, movimientoscontables. Fecha, DM.orden ASC

Muchas gracias de antemano por su ayuda, ya llevo varios días intentando y no he logrado sacar los saldos anteriores , cualquier idea o aporte será bienvenida.

1 Respuesta

Respuesta
4

Tus razones tendrás para poner tantas tablas, pero honestamente, no lo entiendo. Basta con dos tablas, una a la que llamaré Cuentas con Cuenta y Descripción y otra Movimientos, cuya estructura puedes ver en el formulario

De forma, que a medida que voy poniendo un movimiento, me va haciendo el saldo en función de la cuenta. También le he añadido un combinado donde elijo el mes que quiero ver, ya que no dices que fechas quieres ver. Elijo un mes

y me abre el informe

El código del formulario es

Private Sub Elegir_AfterUpdate()
DoCmd.OpenReport "movimientos", acPreview, , "mes like '" & Me.Elegir & "'"
End Sub
Private Sub Saldo_GotFocus()
DoCmd.RunCommand acCmdSaveRecord
Saldo = DSum("nz([debito])-nz([credito])", "movimientos", "cuenta=" & Me.Cuenta & "")
End Sub

Y el del informe es

Private Sub EncabezadoDelGrupo0_Format(Cancel As Integer, FormatCount As Integer)
Texto16 = DLookup("descripción", "cuentas", "cuenta=" & Me.Cuenta & "")
End Sub
Private Sub EncabezadoDelGrupo1_Format(Cancel As Integer, FormatCount As Integer)
Texto25 = DSum("nz([debito])", "movimientos", "fecha<reports!movimientos!texto37 and cuenta=" & Me.Texto39 & "")
Texto26 = DSum("nz([credito])", "movimientos", "fecha<reports!movimientos!texto37 and cuenta=" & Me.Texto39 & "")
Texto27 = CCur(DLast("nz([saldo])", "movimientos", "fecha<reports!movimientos!texto37 and cuenta=" & Me.Texto39 & ""))
End Sub

Donde texto 16 es el cuadro de texto donde aparece la descripción de la cuenta. Texto 25 es donde "calcula" la suma de débitos anteriores, texto26 la suma de créditos, y texto27 el "último" saldo antes del mes elegido.

De todas formas, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando un ejemplo. Si lo haces, en el asunto del mensaje pon tu alias Jesusnetnet, ya que si no sé quien me escribe ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas