Newsgroup: it.comp.appl.access
Titolo: Somma di durata

Grazie Gabriele per l'interessamento ma l'espressione che hai postato
non mi funziona.
Ho una query con i campi:
OraInizio: data/ora ora estesa
OraFine: data/ora ora estesa
Durata:  Format$(IIf([Ora fine]-[Ora inizio]>0;[Ora fine]-[Ora
inizio];1+[Ora fine]-[Ora inizio]);"hh:nn:ss")
l'espressione mi funziona bene, quello che vorrei fare è riuscire a
sommare tutti i campi Durata ma non mi riesce. Grazie

 non mi funziona.
Forse era meglio se continuavi il thread precedente, almeno si manteneva 
maggiore chiarezza.
Comunque, questa è la query che ti ho postato io:
SELECT 
  tbl01.ID, 
  tbl01.OraInizio, 
  tbl01.OraFine, 
  IIf([OraInizio]>[OraFine],FormatDateTime(1+[OraFine]-[OraInizio],3),FormatD­ateTime([OraFine]-[OraInizio],3)) 
AS Differenza 
FROM tbl01; 
In che senso non funziona?
Ti restituisce un errore?
E' erronea?
Maggiori info per migliori risposte.
--
PBsoft di Gabriele Bertolucci
www.pbsoft.it

Scusa per il post.
Fatto la query con i tre campi:
IDtbl01: chiave
OraInizio: data/ora
OraFine: data/ora
Quando inserisco la tua espressione (anticipata da Durata:) mi dà
errore di sintassi nell'espressione..  operatore o operando mancante,
carattere o virgola... etc

 carattere o virgola... etc
Nel QBE il separatore dei parametri è carattere di punto e virgola, non la 
virgola, quindi la mia query diventa:
SELECT 
  tbl01.ID,
  tbl01.OraInizio,
  tbl01.OraFine,
  IIf([OraInizio]>[OraFine];FormatDateTime(1+[OraFine]-[OraInizio];3);FormatD­ateTime([OraFine]-[OraInizio];3)) 
AS Differenza
FROM
  tbl01


Non è chiaro?
Ho omesso qualcosa?

 Ho omesso qualcosa?
Hai già provato il codice con il punto e virgola al posto della virgola come 
separatore di parametri?


ok
con i punto e virgola l'espressione mi funziona e mi calcola la durata.
(non sto lavorando a codice ma sulla struttura della query)
la funzione AS Differenza....etc?  la metto di seguito?

 la funzione AS Differenza....etc?  la metto di seguito?
Se lavori con il QBE non ti serve quell'alias. Se tu hai nominato la colonna 
come "Durata:", quello è il tuo alias.


Lo sapevo di aver omesso qualcosa...
abbi pazienza ma sono un neofita.
ok ora ho la mia durata.
In pratica io ho una serie di records ognuno con la sua durata
Come faccio per sommare le durate di vari records?

> Come faccio per sommare le durate di vari records?
Quanti e quali record vuoi sommare?
Sei su una maschera?
Stai facendo una query?
Vuoi realizzare una stampa?
Vuoi lavorare con il codice VBA?
Preferisci manipolare SQL?
Stai lavorando con un MDB o con un ADP?
Non occorre che rispondi a tutto, ma il messaggio vuole essere: CHIAREZZA!!!!!!
Va bene che stai imparando, ma devi spiegare meglio quello che vuoi fare 
e devi descrivere la situazione in cui ti trovi.
Ricordati che noi non siamo alla tua tastiera, e soprattutto non vediamo 
il tuo monitor :-)


Spero di imparare anche ad essere più chiaro..
Sto lavorando su un mdb per archiviare programmi televisivi
Ho una tabella con 2 campi:
OraInizio:  nel quale inserisco l'ora di inizio di un programma
OraFine:   nel quale inserisco l'ora di fine dello stesso
Ho circa 10.800 schede (o record) di programmi televisivi differenti
Ho creato una query inserendo (oltre ai campi "OraInzio" e "OraFine")
un campo "Durata" che mi calcola la durata del singolo programma
attraverso questa espressione:
Durata:Format$(IIf([Orafine]-[Orainizio]>0;[Orafine]-[Orainizio];1+[Orafine]-[Orainizio]);"hh:nn:ss")
o meglio questa:
Durata:IIf([OraInizio]>[OraFine];FormatDateTime(1+[OraFine]-[OraInizio];3);FormatD­­ateTime([OraFine]-[OraInizio];3))
che mi hai dato tu.
Ora vorrei, se è possibile tramite query (se non è possibile anche
con una maschera), sommare tutti i valori nel campo  "Durata"
In pratica avere un "TotaleDurata" di tutte le schede relative ai
programmi televisivi.
(sta volta mi sono impegnato).

Cerco di essere più chiaro possibile
Lavoro su un mdb nel quale archivio dati riguardanti programmi
televisivi.
Ho circa 10.800 schede (o record) ognuna con i dati di un singolo
programma tv.
Ho una tabella con 2 campi:
OraInizio: nel quale inserisco l'ora inizio di un programma
OraFine: nel quale inserisco l'ora di fine dello stesso
Ho creato una query con 3 campi: "OraInizio", "OraFine" e "Durata"
Il campo "Durata" ha la seguente espressione (che mi hai postato tu):
Durata:IIf([OraInizio]>[OraFine];FormatDateTime(1+[OraFine]-[OraInizio];3);FormatD­­ateTime([OraFine]-[OraInizio];3))
Ok. ora vorrei creare una campo "TotaleDurate", sempre nella stessa
query (ma se nn è possibile in alternativa anche con una maschera),
che mi calcoli il totale dei valori contenuti nel campo "Durata"
In pratica il totale delle durate di tutti i programmi televisivi.
Spero di essere stato più chiaro di prima.

Pardon ho postato 2 volte.

 (sta volta mi sono impegnato)
E quando ti impegni i buoni frutti si vedono. Bravo.


Il codice SQL della query è questo:
SELECT tbl01.IDtbl01, tbl01.OraInizio, tbl01.OraFine,
IIf([OraInizio]>[OraFine],FormatDateTime(1+[OraFine]-[OraInizio],3),FormatDateTime([OraFine]-[OraInizio],3))
AS durata
FROM tbl01;
GRAZIE MILLE

[CUT]
Provando a realizzare la cosa, mi sono accorto che quello che volevo fare 
non č cosě banale.
Alla fine ho partorito quanto segue.
Aggiungi una colonna alla query, che diventa quindi:
  SELECT
    tbl01.ID,
    tbl01.OraInizio,
    tbl01.OraFine,
    IIf([OraInizio]>[OraFine],FormatDateTime(1+[OraFine]-[OraInizio],3),FormatDateTime([OraFine]-[OraInizio],3)) 
AS Differenza,
    IIf([OraInizio]>[OraFine],1+[OraFine]-[OraInizio],[OraFine]-[OraInizio]) 
AS DifferenzaNumerica
  FROM
    tbl01
Nel corpo della maschera hai sicuramente un controllo che visualizza la Durata. 
Bene.
Nel pič di pagina della maschera metti un controllo dello stesso tipo, ed 
imposti la sua origine controllo al seguente valore:
=FormatDateTime(Somma([DifferenzaNumerica]);3)
La maschera dovrebbe quindi visualizzarti quello che ti serve.


Solo 2 parole:
PERFETTO!
GRAZIE.
Ragionandoci su ho capito (forse) che è impossibile far visualizzare
ad una query che contiene più di 10.800 record un record
riepilogativo.
P.S. La stessa cosa funziona anche con un report?
(scusa ma mi hanno chiesto ora di poter stampare il tutto)
Se chiedo troppo trattami male :-)

 Se chiedo troppo trattami male :-)
L'importante è cercare di utilizzare i consigli che il newsgroup cerca di 
dare e farne tesoro per il futuro :-)


Ho creato un report.
Nel "piè di pagina report" ho inserito il controllo:
Totale Durate   =FormatDateTime(Somma([DifferenzaNumerica]);3)
Era quello che cercavo!
GRAZIE ANCORA
:)