Access - Consulta de mivimientos

 
Vista:

Consulta de mivimientos

Publicado por Fernando (5 intervenciones) el 12/12/2021 01:19:14
Hola a Todos.

Arme una consulta a fin de obtener los saldos resultantes entre los ingresos de dinero y las salidas de gastos, tanto los ingresos como los gastos tienen una tabla en la cual se ingresan los registros por fecha, moneda, origen de ese ingreso y el importe, el problema se genera que la consulta me trae los registros en forma repetida, tengo ingresos en tres fechas diferenes y un solo registro de gasto pero al hacer la consulta me repite ese gasto para todas las fechas de los ingresos,

Como se puede ver soy un usuario de access basico.

Desde ya les agradezco la ayuda que me puedan dar con este problema.

Saludos
Fernando
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Consulta de mivimientos

Publicado por Anonimo (3316 intervenciones) el 12/12/2021 04:30:00
Una tabla con dos campos clásicos (debe, haber) o una tabla para compras y otra para gastos?.

Forzar relaciones para casar datos puede dar lugar a problemas como ese (a los registros 'que no tienen pareja' les deja bailar con la de otro registro).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de mivimientos

Publicado por Fernando (5 intervenciones) el 12/12/2021 22:19:46
Hola Anonimo

Ya tengo una tabla de gastos y otra de ingresos (no son compras sino movimientos de dinero, pero la idea basicamente es la misma), lo que quiero es unir las dos tablas para que me sume los inresos y reste los egresos por día, el problema esta en que me repite un miismo gasto para varios dias que no corresponden.

Gracias por tú interes

Saludos

Fernando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de mivimientos

Publicado por Anonimo (3316 intervenciones) el 13/12/2021 00:08:54
Lo clásico seria una sola tabla con tres columnas: la fecha y un campo para las ingresos y otro para los egresos: en una de las columnas los ingresos, en otra los egresos.

Con esas dos tablas, si lo que se necesita es un resultado por día, lo adecuado es utilizar consultas intermedias:

.- Una consulta (por tabla) que agrupe por fecha y sume importe.
.- Obtenidas estas consultas se utilizan en lugar de las tablas para crear una tercera consulta.
.- En esta tercera consulta se las relaciona por el campo fecha y .... aparecen tres columnas: la fecha, la suma de los egresos de ese día y la suma de ingresos del mismo día.

También se pueden hacer cálculos con los datos (sumarlos, restarlos ...)

Si no conoces la función NZ, lee sobre ella, te ayudara con los cálculos si en alguna de las tablas no existe una fecha relacionada en la otra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de mivimientos

Publicado por Fernando (5 intervenciones) el 13/12/2021 14:55:07
Gracias Anonimo, vere de implementar lo que comentas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Consulta de mivimientos

Publicado por Eduardo (317 intervenciones) el 13/12/2021 16:28:04
La respuesta NO es correcta porque necesariamente las 2 tablas no contienen las mismas fecha, explico:

CONSULTAS AGRUPANDO POR FECHA

INGRESOS VALOR
01/12/2021 7500
02//12/2021 10000
03/12/2021 4000

GASTOS VALOR
01/12/2021 3000
02/12/2021 3500
04/12/2021 1500

Si hago un LEFT JOIN de la consulta de la izquierda con la de la derecha obtengo:

FECHA INGRESOS GASTOS
1/12/2021 7500 3000
2/12/2021 10000 3500
3/12/2021 4000

¿Qué pasa con el día 4/12/2021 que tiene gastos por 1500?. Es decir si en un día hay gastos pero no hay ingresos no se mostrarán estos días.

Igualmente si hago un RIGHT JOIN con la consulta de gastos no aparecerán los INGRESOS de la fecha que si hay GASTOS.

Le dejo este link del maestro Mantilla:

http://www.accessaplicaciones.com/ejemplos.html

El ejemplo es: Resumen ingresos / gastos multi anual

Sintetizando este es el problema de utilizar los datos en tablas diferentes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Consulta de mivimientos

Publicado por Anonimo (3316 intervenciones) el 13/12/2021 19:06:19
Si faltan fechas (por la falta de datos de ventas o compras) o son tablas de diferentes orígenes, solo es necesario crear una lista de fechas, por ejemplo así:

1
2
3
4
SELECT Fecha
FROM gastos;
UNION SELECT fecha
FROM ingresos;

La consulta final seria esta:

1
2
SELECT Xfechas.fecha, Ingresos.Valor, Gastos.Valor
FROM Gastos RIGHT JOIN (Ingresos RIGHT JOIN Xfechas ON Ingresos.[Fecha] = Xfechas.fecha) ON Gastos.[Fecha] = Xfechas.fecha;

Tablas diferenciadas, sin todos los datos: la tienda vende los sábados pero no compra los sábados ni los jueves .... y no vende los lunes por descanso del personal.

Pero a Access le da igual: se puede calcular
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Consulta de mivimientos

Publicado por Eduardo (317 intervenciones) el 13/12/2021 22:05:51
Le complemento la respuesta de ANONIMO, que es muy acertada con el este ejemplo completo:

TABLAS

union_tbling

union_tblegr

Con estas tablas creamos una consulta de UNION para obtener todas las fechas. Vaya a Crear, Diseño de Consulta. Se le mostrarán las tablas y consultas, haga clic en Cerrar. Ahora haga clic en la cinta en Diseño de Consulta y haga clic en Unión, como muestra la figura siguiente.

union_00

Copie el siguiente texto:

1
2
SELECT fechamov FROM tblingresos UNION SELECT fechamov FROM tblegresos
ORDER BY fechamov;

Guarde la consulta como qryUnionFechas

Al ejecutar esta consulta debe obtener algo como:

union_01

Ahora ya podemos crear la consulta final, puede hacerlo mediante SQL o con la cuadricula. Se lo explico con la cuadricula.

Vaya a Crear, Diseño consulta y adicione la consulta de unión y las siguientes tablas, algo como:

union_query_01

Debe relacionar la consulta con cada una de las tablas con base en el campo fechamov, pero se debe editar el tipo de relación, como muestra la imagen siguiente:

union_query_02

Debe hacer lo mismo con la otra tabla.

Observe necesitamos que se nos incluyan "todas las fechas", es decir vamos a utilizar LEFT JOIN . Si todo es correcto la consulta en vista SQL debe quedar así:

1
2
SELECT qryUnionFechas.fechamov AS FECHA, tblIngresos.Valor AS INGRESOS, tblegresos.Valor AS GASTOS
FROM (qryUnionFechas LEFT JOIN tblegresos ON qryUnionFechas.fechamov = tblegresos.fechamov) LEFT JOIN tblIngresos ON qryUnionFechas.fechamov = tblIngresos.fechamov;

Por último, guarde la consulta como qryResultado, este es el resultado al ejecutar la consulta.

union_query_03
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo

Consulta de mivimientos

Publicado por Eduardo (317 intervenciones) el 14/12/2021 13:53:42
Hay inconsistencia en el resultado, por ahora no tenga en cuenta lo explicado, voy a revisar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar