Comparativas de Campos de Datos dentro de una tabla

A tod@s

He de realizar un proceso en el que he de dar resultado de ventas acumuladas por ejercicios.

Dispongo de una tabla la cual me agrupa por meses y años las ventas-compras realizadas.  [Mes/Ejercicio]  [Importes]

He de crear un Fomulario en la que han de aparecer una columna por cada Ejercicio y esta esta formada por cada uno de los meses del año con sus ventas acumuladas mensuales.

A su lado han de estar otras columnas de los siguientes ejercicios para hacer comprativas visuales de cada uno de los meses y años:

Algo asi ha de quedarme en el Fomulario

                   2010            2011           2012     ......    

                 Enero           Enero         ......

                 Febrero       Febrero     .......

                 Marzo          Marzo         ......

Os agradeceria me dieseis alguna idea de como poderlo montar.

                 ......

3 Respuestas

Respuesta
1

Creo que lo primero de todo sería saber que tipo de campo es el de Ejercicio, si es fecha o texto. Me explico, en access los campos fecha en realidad son números y los puedes ordenar, pero si el campo es texto Abril va antes que Enero.

Pero supongamos que es fecha, en forma 01/2015. Lo mejor es que con la tabla, que llamaremos Ventas (que original), crees una consulta y en el primer campo pongas

Año: año([ejercicio]), y le pones Ordenar Ascendente

Luego en otro campo pon

Mes: Mes([ejercicio]) y le pones Ordenar ascendente

En otro campo pones

Otromes: format([ejercicio];"mmmm")    así te pondrá Enero, febrero, etc

Y por fin añádele el campo Importe.

Cierra y guarda

Ahora, con el asistente de creación de consultas, elige de Referencias Cruzadas. En la primera ventana marca la casilla Consultas, con lo que arriba te aparecerá la colección de ellas. Eliges la que acabas de crear y pulsa Siguiente. En la siguiente venta pasa a la derecha Mes y otromes(los seleccionas, se pone en negro y pulsas el botón con un ángulo que hay en medio).

Pulsa siguiente y haces lo mismo con Año( que serán los encabezados) y pulsa siguiente. Verás que te pone cuenta(importe), pero tu selecciona a la derecha Suma. Pulsa Siguiente y colorín, colorao...

Con esa consulta ya puedes, con el asistente, hacer el formulario que quieras, pero eso sí, en el formulario no podrás poner datos, es de sólo lectura.

Si por el contrario, el campo Ejercicio fuera texto me lo dices y te explico como hacerlo.

He creado dos campos dentro de la Tabla uno por el Numero de Mes y otro por el año. No se exactamente como podría crear un solo campo que tuviese como me dices el dato de fecha en formato: 01/2015

No hace falta que crees dos campos, con uno llega. Una cosa es como te los guarda y otra como te los presenta. Ponlo como en la imagen

Con lo cual, cuando en Vista hoja de datos de la tabla pongas el cursor en el campo Ejercicio, te aparecerá

Y ahí ya puedes poner 03/2015, 09/2015, etc. Y si haces un formulario con esa tabla, como "hereda" sus propiedades, te aparecerá igual. Aunque lo guarde como 01/03/2015, 01/09/2015.

Respuesta
1

Jobe: Dado que me ha salido la pregunta sugerida te comento. Abre una consulta nueva, sin ninguna tabla. La pones en vista SQL y copias ésto:

TRANSFORM Sum(TablaOConsulta. Importe) AS SumaDeImporte
SELECT StrConv(Format([FechaEntrega],"mmmm"),3) AS MesConv, Sum(TablaOConsulta.Importe) AS Total
FROM TablaOConsulta
WHERE (((TablaOConsulta.Año)>2010))
GROUP BY TablaOConsulta.NumMes, StrConv(Format([FechaEntrega],"mmmm"),3)
ORDER BY TablaOConsulta.NumMes, TablaOConsulta.Año
PIVOT TablaOConsulta.Año;

Lógicamente, antes de abrirla en modo Diseño has de cambiar:

TablaOConsulta y los campos de>> Importe, FechaEntrega, Año y NumMes han de estar en la Fuente de Datos >> TablaOConsulta.

El filtro que te pongo del año 2010, lo puedes cambiar a tu necesidad.

Debería de quedarte algo así:

Espero haberte ayudado. Saludos >> Jacinto

Hola, muchas gracias de antemano por toda tu ayuda.

Tengo problemas de sintaxis. Esto es lo que he adaptado:

TRANSFORM Sum(RESUMENCOMPRASVENTAS. ImporteVentas) AS SumaDeImporteVentas
SELECT StrConv(Format([FechaApunte],"mmmm"),3) AS MesConv, Sum(RESUMENCOMPRASVENTAS.ImporteVentas) AS Total
FROM RESUMENCOMPRASVENTAS
WHERE (((RESUMENCOMPRASVENTAS.Año)>2010))
GROUP BY RESUMENCOMPRASVENTAS.NumMes, StrConv(Format([FechaApunte],"mmmm"),3)
ORDER BY RESUMENCOMPRASVENTAS.NumMes, RESUMENCOMPRASVENTAS.Año
PIVOT RESUMENCOMPRASVENTAS.Año;

Me da error de sintaxis en la primera linea:

TRANSFORM Sum(RESUMENCOMPRASVENTAS. ImporteVentas) AS SumaDeImporteVentas

Estos son los campos de la Tabla:

Tabla: RESUMENCOMPRASVENTAS

Campos Tabla:

IdApunte

 FechaApunte

ImporteVentas

ImporteFacturado

ImporteCompras

ImporteGastos

Hay solo un apunte mensual con el resumen de todo el mes y hay que sumar en Ventas los campos: [ImporteVentas]+[ImportesFacturado]. el apartado de Pagos [ImporteCompras]+[ImporteGastos], seria perfecto que saliese en la misma tabla en otra columna la Suma de los Pagos aunque si es complicado lo meteria en otra tabla.

Un saludo

No veo que tengas los Campos de NumMes y Año, y siendo así tendrás que "Fabricarlos"

Puedes hacerlo en la misma consulta si quieres con lo cual la SQL te quedaría así:

Transform sum(resumencomprasventas. ImporteVentas) AS SumaDeImporteVentas
SELECT StrConv(Format([FechaApunte],"mmmm"),3) AS MesConv, Sum(RESUMENCOMPRASVENTAS.ImporteVentas) AS Total
FROM RESUMENCOMPRASVENTAS
WHERE (((Year([FechaApunte]))>2010))
GROUP BY Month([FechaApunte]), StrConv(Format([FechaApunte],"mmmm"),3)
ORDER BY Month([FechaApunte]), Year([FechaApunte])
PIVOT Year([FechaApunte]);

Ya me comentarás. Saludos >> Jacinto

Me da error de sintaxis en esta línea

Sum(RESUMENCOMPRASVENTAS.ImporteVentas) AS Total

Me dice uso de ".","!" o () no válido en la expresión de consulta

Asegurate por favor que no haya ningún espacio entre el punto . y la letra anterior y posterior porqu no veo de donde puede venir el error, ya que en ésta ocsión i que en probado el código, que muchas veces no lo hago.

Dado que hay este atasco, te preparo un ejemplo y te Facilito el enlace.

Si con el repaso lo solucionas me comentas por favor. Saludos >> Jacinto

Jobe:

Este es el enlace del Ejemplo.

http://www.mediafire.com/download/gjg9euk8odytbpx/RefCruzadasMesesA%C3%B1os.rar 

Mis saludos >> Jacinto

Me saca bien ya los datos efectivamente habia un espacio entre los caracteres.

Hay alguna manera de sacar los nombres de los meses en la primera columna de la tabla de datos en la consulta.

Puedo sumar dos o varios conceptos en cada columna de datos, ya que he de sumar  [ImporteVentas]+[ImportesFacturado]

Son demasiadas preguntas?, gracias por tu amabilidad

Jobe: La columna Meses ya es la primera, pero igual te estás refiriendo a otra cosa.

En cuanto a sumar dos Campos de la Tabla, no debes tener problemas.

Ejemplo: donde Pone >> ImporteDeVenta, puedes poner:

QMoneda: [RESUMENCOMPRASVENTAS]![ImporteVentas]+[RESUMENCOMPRASVENTAS]![OtraVenta], pero entonces en el Campo Total >> has de Poner

Total:[QMoneda]

Mis saludos. >> Jacinto

No se exactamente en que línea he de colocar esto que me dices. Es en la línea: Sum(RESUMENCOMPRASVENTAS.ImporteVentas) AS Total, cambiarlo por la línea que me has indicado

Jobe: En la rejilla de la Consulta en Vista de diseño, estos son los dos campos que debes modificar.

Saludos >> Jacinto

Funciona perfectamente, solo un pregunta más si no te importa, el Total que me da es la suma por cada mes y año (suma de forma horizontal), podría realizar una suma al pie de la tabla que me diese el total anual por cada uno de los años (Suma de forma vertical).

Jobe: La verdad es que ignoro si hay algún modo de hacer lo que me comentas de forma directa. Se me ocurre que en el iforme de salida puedas hacerlo.

Saludos >> Jacinto

Respuesta
1

Si en tu tabla (o una consulta) puedes separar el campo [Mes/Ejercicio] en dos( mes y año), puedes hacerlo con una consulta de ref. Cruzadas siguiendo el asistente.


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas