Calcular consumo combustible vehículos Access

Necesito calcular el consumo de combustible /100 km de varios vehículos.

Tengo una base de datos con una tabla que se llama repostajes. Contiene entre otros campos: matrícula, fecha, hora, litros repostados, kilometraje al repostar.

Estos repostajes los obtengo descargándolos de las plataformas de 3 petroleras distintas, que son las compañías que utilizamos para repostar. Como cada una tiene un formato, tengo que adaptarlo un poco para poder pegarlo en Access.

Los datos son fiables y automatizados del ticket de la gasolinera excepto el kilometraje, pues éste lo indican los conductores al operario de caja al pasar la tarjeta que tiene cada vehículo que está asignada a cada matrícula. A veces cometen errores al indicar los kilómetros.

Esto es importante porque lo que necesito es calcular la diferencia de kilómetros del repostaje de un vehículo con el inmediatamente anterior de esa misma matrícula considerando fecha y hora. Con ese cálculo de kilómetros recorridos se hace la cuenta [litros repostados] / [km recorridos] * 100 y ya tenemos el consumo de l/100km.

Al final de cada mes cargo los repostajes de cada petrolera en la tabla, en condiciones normales sin pandemia, serán varios cientos cada mes por lo que no sería operativo introducirlos a través de un formulario. En las tres petroleras puede haber repostajes de todas las matrículas por lo que, al pegarlas, no van a estar en orden de fecha y hora.

Entonces lo que necesito es una consulta que ordene los repostajes de cada matrícula por fecha y hora y a continuación hacer el cálculo indicado anteriormente.

Tenemos el problema de que el repostaje más antiguo de cada matrícula que haya en la tabla no va a tener kilometraje de un repostaje anterior para hacer el cálculo, entonces si fuese necesario podría ponerse en otra tabla que se llama Vehículos el kilometraje inicial del anterior repostaje de cada vehículo.

Adjunto más abajo enlace con la base de datos y un ejemplo de lo que necesito, tal y como tenía en un programa de gestión anterior. El nuevo no dispone de esta función y es por eso que estoy tratando de hacerlo en Access.

La idea es ir viendo el consumo entre cada repostaje, que debe ser uniforme. Cuando el consumo sea disparatado o negativo, podré ver si hay un error en el kilometraje, lo cual trataré de corregir, o si por el contrario alguien está haciendo fraude con el combustible, lo que desgraciadamente ha ocurrido en ocasiones.

El informe o la consulta debería poder configurarse con un rango de fechas y/o selección de matrícula.

Disculpad que me haya extendido tanto, pero quería definir claramente lo que necesito controlar.

Si alguien me puede ayudar le quedaría muy agradecido.

https://1drv.ms/u/s!AlEUE7049u9GhPZN6Z5v3LrklhQb7Q?e=rDKXBd

1 Respuesta

Respuesta
1

De acuerdo con su información elaboré la respuesta. Este proceso consta de:

2 tablas, 1 consulta, 1 formulario y 1 módulo VBA. El proceso lo hice mediante DAO

Tablas

A esta tabla le adicioné 2 columnas, LitroConsumo, para guardar la diferencia de litros y kmsConsumo, para almacenar la diferencia de kms.

Formulario para hacer la consulta

Procesamos la información si es correcta obtenemos este mensaje:

Código del botón Procesar Consumo :

Resultado del proceso mediante la consulta:

Diseño de la consulta:

Observe el cálculo de los litros/kms*100 que se hace con IIF() porque hay valores cero (0).

Función que hace el proceso (Se puede pasar a un procedimiento)

Más práctico, exacto y ágil con SQL

SELECT T1.Matrícula, T1.Fecha, T1.kilometraje AS kms_actual, T1.Hora, T1.Litros, MAX(T2.kilometraje) AS kms_anterior, T1.kilometraje - MAX(T2.kilometraje) AS kms, Round(IIf(T1.Litros=0,0,T1.Litros/[kms]*100),2) AS Lts_100km
FROM Repostajes AS T1 LEFT JOIN Repostajes AS T2 ON (T2. Kilometraje< T1. Kilometraje) AND (T1.Matrícula = T2. Matrícula)
GROUP BY T1.Matrícula, T1.Fecha, T1.kilometraje, T1.Hora, T1.litros
ORDER BY T1. Matrícula, T1. Fecha, T1.Hora;

Se lo envíe a su correo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas