Contabilidad casera en Access: tabla donde registrar vencimientos y otros pagos

Tengo una pequeña contabilidad casera con una tabla donde registro los egresos y quiero poder registrar los egresos a futuro, es decir vencimientos en cuotas u otros y que en la fecha correspondiente se agreguen a la tabla de egresos. Como lo hago.

1 Respuesta

Respuesta
1
Para hacer lo que comentas, para no complicar la cosa con demasiado código VBA, te propongo lo siguiente (por seguridad, como vamos a modificar y eliminar registros, te recomiendo que lo pruebes en una copia de tu BD para no tocar el original):
Tú tienes una tabla, según comentas, donde metes los egresos de cada día. Imaginemos que esa tabla tiene tres campos: "Fecha", "Egreso" e "Importe". A esa tabla la llamaremos "TEgresos"
Créate otra tabla que tenga la misma estructura, con los campos "FechaVencimiento", "EgresoFuturo" e "ImporteFuturo". A esa tabla la llamaremos "TEgresosFuturos"
En esta última tabla irás metiendo los futuros vencimientos. ¿Ok?
Ahora creas una consulta basada en la tabla "TEgresosFuturos". Si no sabes cómo se hace te lo explico:
- Le das al botón de menú "Diseño de consulta"
- Te aparecerán las dos tablas. Seleccionas "TEgresosFuturos" y aceptas
- Arrastras, uno por uno, los campos de esa tabla al grid de la consulta.
A continuación, en esa consulta, haces lo siguiente:
- En la columna donde tienes el campo "FechaVencimiento", en la línea "Criterio", le escribes lo siguiente (sin comillas): "<=Fecha()"
- En la barra de menú conviertes esa consulta a una "consulta de datos anexados"
- Te saldrá una ventana pidiéndote a qué tablas quieres anexar los datos. Eliges la tabla "TEgresos" y aceptas.
- Ahora te ha aparecido una línea más ("Anexar a") en el grid de la consulta. Te vas campo por campo y estableces las correlaciones:
... FechaVencimiento->Anexar a Fecha
... EgresoFuturo->Anexar a Egreso
... ImporteFuturo->Anexar a Importe
- Guardas la consulta con el nombre CAnexaEgresos
Ahora tenemos que crear una segunda consulta que elimine los egresos futuros que se han contabilizado ya. Para ello copias la consulta que acabamos de hacer y la pegas. Cuando te pide el nombre le pones CEliminaEgresos
- Abres esa nueva consulta en vista diseño y le cambias el tipo de consulta. Seleccionas "consulta de eliminación".
- El grid de la consulta te cambia ligeramente. Lo dejas como está. Cierras y guardas los cambios.
Ahora tenemos que crear un formulario con un botón para que, al hacer click en él, te contabilice los egresos futuros y te borre los que acaba de contabilizar. Para ello creas un formulario en blanco y añades un botón de comando en él (todo esto en vista diseño). Cancelas el asistente que te saldrá al crear el botón de comando. Le das click con el botón derecho del ratón y seleccionas la opción "Generar evento...". En la siguiente pantalla le dices que quieres generar código. Finalmente, en la pantalla que te sale, le pones el siguiente código:
---
Private Sub Comando0_Click()
    DoCmd.SetWarnings = False
    DoCmd. OpenQuery "CAnexaEgresos"
    DoCmd. OpenQuery "CEliminaEgresos"
    DoCmd.SetWarnings = True

End Sub
---
La primera línea que te salga no la tienes que tocar: la dejas así como te salga. Lo que está en negrita es el código propiamente dicho.
Y ya está. Cuando hagas click sobre ese botón te pasará los egresos futuros que sean de fecha inferior o igual a la actual a la tabla "TEgresos", y a la vez se eliminarán de la tabla "TEgresosFuturos" (para evitar duplicidades).
Ante cualquier duda o problema me lo comentas e intento explicártelo con más detalle.
Otra vez!
Acabo de detectar que hay un pequeño problemilla en el código. Esto pasa por escribir de cabeza y no testearlo. Además, cuando lo ejecutes no sabrás si ha pasado algo o no. Por eso cambia el código que te comentaba por este otro:
---
Private Sub Comando0_Click()
    DoCmd.SetWarnings False
    DoCmd. OpenQuery "CAnexaEgresos"
    DoCmd. OpenQuery "CEliminaEgresos"
    DoCmd.SetWarnings True
    MsgBox "Proceso realizado correctamente", vbInformation, "OK"
End Sub
---
Ahora sí. Ya me dirás qué tal te ha ido.
Muchas gracias por la respuesta, pruebo y te confirmo.
OK.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas