Consulta suma datos no deseados

Buenos días,
Tengo una bd de access 2003 que utilizo para hacer presupuestos. En mi caso los presupuestos de componen de un epígrafe genérico que es desglosado en componentes, eje epígrafe pc 125 desglose cpu, pantalla y teclado, el caso es que puedo dar un precio genérico para el epígrafe, es decir, ¿pc 125 600?, o tener que dar un precio por componente del epígrafe, cpu 300, pantalla 200 etc., además en un mismo presupuesto tengo varios epígrafes y sus desgloses relacionados.
El problema que tengo es que tengo una consulta que utilizo para filtrar el presupuesto que imprimiré mediante un informe. En la citada consulta cuando pongo un precio para un epígrafe, por lo tanto no valoro los componentes, me hace que cada línea de el desglose tenga el mismo valor que su epígrafe por lo que cuando en el informe hace la suma me da un importe erróneo, este es mi problema.
Adjunto código sql como referencia.
select cab_presupuesto.numerop, cab_presupuesto.cliente, cab_presupuesto.fecha, cab_presupuesto.obra, cab_presupuesto.direccionobra, cab_presupuesto.epigrafe, cab_presupuesto.detalle, li_presupuesto.descripcion, li_presupuesto.metros, li_presupuesto.precio, li_presupuesto.linea, cab_presupuesto.val_epi, cab_presupuesto.m2_epi, cab_presupuesto.opcion, li_presupuesto.total, cab_presupuesto.tot_epi, iif([val_epi]<>0,[m2_epi]*[val_epi],iif([precio]<>0,[precio]*[m2_epi],0)) as totalizador
from li_presupuesto inner join cab_presupuesto on (li_presupuesto.epigrafe = cab_presupuesto.epigrafe) and (li_presupuesto.presupuesto = cab_presupuesto.numerop)
where (((cab_presupuesto.numerop)=[formularios]![presupuestos]![numerop]))
order by li_presupuesto.linea;

1 Respuesta

Respuesta
1
Si tienes una regla lógica de cálculo del valor aplícala a las consultas igual:
Sólo existe valor por componente si no existe valor por epígrafe, o, siempre tomo el valor por epígrafe excepto cuando lo tengo por componentes.
Realiza las consultas igualando por el epígrafe, deberías tener dos campos por cada epígrafe, el valor que tiene el epígrafe y el valor que tiene por suma de los componentes. Deberás realizar tres consultas, para cada una de ellas, y luego una consulta UNION de la tres
- Tiene valor por epígrafe, y tiene valor por suma de componentes: --> valor por epígrafe
- No tiene valor por epígrafe (0 o null), y tiene valor por suma de componentes --> valor por componentes
- Tiene valor por epígrade, no tiene valor por suma de componentes (0 o null) --> Valor por epígrafe
Las dos segundas son una variante de la primera, la puedes hacer con el asistente de consulta de no coincidentes, y cuando le cojas el aire variar desde la primera
Haces una consulta UNION a las tres y deberías tener el valor de cada una, bien por epígrafe o bien por suma de componentes.
En cuanto a las líneas, cuerpo y cabecera del informe, te aconsejo que lo hagas por subinformes en lugar de una consulta que tiene todo a la vez. Tendrás consultas más sencillas y podrás manejar mejor el informe.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas