Scusami se ti rispondo con altre domande.
Provo a riepilogarti quello che ho capito poi faro delle osservazioni.
___ Il DB è Access 2010
_____ La tabella si chiama Impiego
I campi della tabella sono:
___ mezzi _____________ testo ( c'è una tabella separata dei mezzi ??? )
___ DataImpiego ________ DataOra
___ ProgrammatoInizio ___ DataOra
___ Programmato fine ____DataOra
___ Programmato _______ Numerico ( Campo Calcolato )
Tu vuoi sapere per ogni mezzo quante ore e stato "Programmato"
fra 2 date
che andrai a fissare al momento
Giusto ???????
__________________________________________________ ________
Osservo che:
1) Non vedo il campo Identificatovo ( contatore o altro )
2) Dammi conferma se c'è una tabella separata con i mezzi e una
relazione fra le 2 tabelle
3) Data Impiego Non ti serve perche in ProgrammatoInizio e
Programmato fine
specifichi GIA la DATA e ora di inizio e fine
4) Programmato è semplicemente la differenza fra fine e inizio
ma NON deve essere nella tabella bensi lo calcoli successivamente
5) Anche se soggettivo e superfluo ti chiedo:
Perche dei nomi cosi lunghi che " mandano insieme gli occhi "
quando li usi ???
o almeno se ProgrammatoInizio lo scrivi attaccato
usa lo stesso criterio anche per Programmato fine
__________________________________________________ _____
Se il DB lo hai fatto te ti consiglio di reimpostare la tabella
secondo dei criteri di "Normalizzazione" in questo Modo:
ImpID_____Contatore_____Key
mezzi______Testo ( relazionato con altra tabella dove il mezzo è la Key )
ProgIni_____DataOra_____
ProgFin_____DataOra_____
Questo ti darà una gran mano nei calcoli successivi
__________________________________________________ ______
Se invece non puoi modificare il DB confermami almeno che i campi
ProgrammatoInizio e Programmato fine siano in formato DATAOra
che proviamo a fare uno "Sgarbuglio" di query
che senza tenere minimamente conto dei campi
DataImpiego e Programmato ti da il risultato che cerchi
la query potrebbe essere questa:
codice:
SELECT Impiego.mezzi, Sum(Round((([Impiego]![Programmato fine]-[Impiego]![ProgrammatoInizio])*24),2)) AS TotPr
FROM Impiego
GROUP BY Impiego.mezzi, Impiego.ProgrammatoInizio
HAVING (((Impiego.ProgrammatoInizio) Between [Da DataOra] And [A DataOra]));
_____ Fammi sapere_____