Newsgroup: it.comp.appl.access
Titolo: sottrazione progressiva date

Ho letto la soluzione data a Salvatore il 10 gennaio relativamente alla
sottrazione progressiva di alcuni campi. Io devo fare un cosa simile .Ho una
query così fatta
Data Macchina
13/04/2003 3
14/05/2003 4
7/09/2003 5
18/10/2003 3
30/11/2003 7
.... ...
Come faccio a calcolare la differenza di date relative ad una stessa
macchina??
Grazie tante in anticipo!!
Elena
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Elena
Per prima cosa creati una query nella quale ordini i record per Macchina e
Data, in modo da avere la seguente sequenza di record:
13/04/2003    3
18/10/2003    3
14/05/2003    4
07/09/2003    5
30/11/2003    7
Poi inserisci nella query un campo calcolato che per determinare la
differenza tra la data del record e quella del record precedente a
condizione che il record precedente sia relativo alla stessa Macchina.
Per far riferimento in una query a campi del record precedente, vai sul Sito
Comune (link qui sotto) e fai il download al database di esempi che trovi
allegato alla FAQ della Sezione Queries intitolata "Esempi di utilizzo e
creazione di queries".
Apri il database scaricato, seleziona il Topic intitolato Referring to a
Field in the Previous or Next Record, pigia il pulsante di comando Show
Example: ti verranno mostrati 4 esempi di quello che ti serve.
Per maggiori dettagli di come tali esempi siano stati realizzati, vai al
link:
http://support.microsoft.com/default.aspx?id=101081
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Ho fatto come hai detto tu. Il sito degli esempi di database non si apre.
Sono riuscita a fare una sottrazione progressiva delle date ma solo
relativamente a tutte le macchine. Ovvero utilizzando
[Datarichiesta]-DLookUp("[datarichiesta]";"schedaguasto";"[idguasto]=" &
[idguasto]-1)
ottengo gli intervalli di tempo tra i guasti anche di macchine diverse.
idguasto è l'identificativo progressivo di ogni guasto.Datarichiesta è la
data di cui ti avevo dato l'elenco parziale l'altra volta. Ho fatto la query
ordinata come mi avevi suggerito e quindi immagino che nel DlookUp non ci
vada l'idguasto perchè quando vado a prendere il precedente mi prende
chiaramente il guasto precedente anche se si riferisce ad una macchina
diversa. Non so davvero come impostare la cosa.
Sono qui a chiederti ancora una volta una mano.
Scusa per il disturbo.


 Scusa per il disturbo.



Non mi odiare ti prego. Ho aggiunto i riferimenti (ho access 2003) andando
su VisualBasicEditor-Strumenti-Riferimenti e ho selezionato Microsoft DAO..
Si fa cosě?
Poi ho fatto sia la query che il modulo ma quando vado a eseguire la query
mi dice "nome ambiguo all'interno di
 IIf(PrevRecVal("Query1","idguasto",[idguasto],"Macchina")=[Macchina],[Datari
chiesta]-PrevRecVal("Query1","idguasto",[idguasto],"Datarichiesta"),Null)
. Scusa ma non so come fare.



ho risolto il problema cheti dicevo nell'ultimo messaggio. Adeesso ne ho un
altro, simile.
Se ho una query ( chiamata tempointervento) così fatta
idguasto
tempointervento
macchina
e voglio calcolare il tempo totale di intervento relativo a ciascuna
macchina posso utilizzare la stessa funzione che ho memorizzato nel modulo
per l'altro problema facendo poi una query chiamata Query1 con un codice sql
così fatto:
SELECT tempointervento.IDGUASTO,tempointervento.tempointervento,
tempointervento.MACCHINA,
IIf(PrevRecVal("query1","idguasto",[idguasto],"Macchina")=[Macchina],[tempointervento]+
PrevRecVal("query1","idguasto",[idguasto],"tempointervento"),Null) AS
Intervallo
FROM tempointervento
ORDER BY tempointervento.MACCHINA, tempointervento.tempointervento;
???
Ho provato, non mi da nessun errore ma quando eseguo la query nella colonna
dove ci dovrebbe essere il totale non ci compare niente!!
Grazie per tutto quello che hai già fatto!!


Non mi odiare ti prego.
nell'ultimo messaggio ti ho scritto una cavolata. infatti non devo fare
quello che ti ho detto ( che poi sarebbe anche tornato).
Ho una query chiamata Tempo Intervento da cui ho ricavato questo:
IDGUASTO tempointervento MACCHINA
3 240 3
5 1080 3
7 165 4
4 45 5
9 80 8
10 1530 8
2 1530 8
6 40 10
8 35 13
1 335 17
Ora quello che mi servirebbe sarebbe calcolare la media dei tempi
d'intervento relativi a ciascuna macchina ovvero ottenere
i seguenti valori
660 (macchina 3) ((240+1080)/2)
165 (macchina 4)
45 (macchina 5)
1046,6 (macchina 8) ((80+1530+1530)/3)
40 (macchina 10)
35 (macchina 13)
335 (macchina 17)
Dovrebbe essere l'ultima cosa di cui ho bisogno. Spero che tu mi aiuti.
Grazie ancora.


 ha scritto nel messaggio
news:151Z27Z6Z95Y1...@usenet.libero.it...

Questo è molto più semplice da risolvere: è sufficiente crearsi una query di
raggruppamento su MACCHINA e quindi fare la media di tempointervento.
Prova con una query di raggruppamento che abbia il seguente codice SQL:
SELECT [Tempo Intervento].MACCHINA, Avg([Tempo Intervento].tempointervento)
AS TempoMedio
FROM [Tempo Intervento]
GROUP BY [Tempo Intervento].MACCHINA;
