Newsgroup: it.comp.appl.access
Titolo: trovare massimo scostamento tra due record

Ho una tabella con un campo che contiene un data.
Vorrei trovare la differenza in giorni massima tra due date consecutive.
es.
 
Datap
11/10/2013
12/10/2013
15/10/2013
25/10/2013
27/10/2013
 
dovrebbe darmi come risultato 10.
E' possibile con una query, servono stored procedure o cose simili (che 
access non supporta)?
 
bye,
max 
 
 

Massimo explained on 13-11-13 :

Con un pugno di codice...
=====================================
Private Sub Max_DateDiff_Click()
Dim db As Database, RS As Recordset, SQL As String
Dim D As Integer, DateRef As Date, PreviousDate As Date
Dim SourceField As String, SourceTable As String
 
'---   Definizioni   -----
SourceTable = "Table3"
SourceField = "Data"
'-------------------------
 
Set db = CurrentDb
 
' Per esser certi che le date siano in ordine crescente...
SQL = "SELECT " & SourceTable & "." & SourceField & " FROM "
SQL = SQL & SourceTable & " ORDER BY "
SQL = SQL & SourceTable & "." & SourceField & ";"
Set RS = db.OpenRecordset(SQL, dbOpenDynaset)
 
PreviousDate = RS![Data]
D = 0
RS.MoveNext
Do Until RS.EOF
    If DateDiff("d", PreviousDate, RS![Data]) > D Then
        D = DateDiff("d", PreviousDate, RS![Data])
        DateRef = RS![Data]
        PreviousDate = DateRef
    End If
    RS.MoveNext
Loop
MsgBox D & "   " & DateRef
 
End Sub
=====================================
 
Bruno
 
 

 Con un pugno di codice...
 
Si ok, col codice lo so fare, volevo avere conferma che non si potesse fare 
con una query.
 
bye,
max 
 
 


Siccome dopo hai chiesto se si potrebbe farlo senza codice:
Sě, č possibile o con una sottoquery o una espressione ma
puo darsi che il codice sarebbe piů performante. p.e.
 
SELECT Max(DateDiff("d",DMax("Datap","Tabella","Datap<" & CLng([Datap]))
FROM Tabella
WHERE Datap Is Not Null
 
-- 
Ciao
Karl
*********
Access FAQ:  
http://www.donkarl.com/it
 
 
 


 
Mi da errore di numero errato di argomenti, penso che alla funzione datediff 
ne manchi uno...(a parte 2 parentesi chiuse).
Comunque non conoscevo la funzione Dmax, che tristezza ritornare niubbo :-(
 
bye,
max 
 
 

 niubbo :-(
 
Se non riesci, vai in vis. SQL della query e copia/incolla il testo SQL
nel prox messaggio.


 nel prox messaggio.
 
eccolo
 
SELECT Max(DateDiff("d",DMax("Datap","palestra","Datap<" & CLng([Datap]))))
FROM palestra
WHERE Datap Is Not Null
 
datediff deve avere 3 argomenti, manca il terzo
 
bye,
max 
 
 

 datediff deve avere 3 argomenti, manca il terzo
 
Quindi, perché non lo scrivi? ;-)
 
SELECT Max(DateDiff("d",DMax("Datap","palestra","Datap<" &
    CLng([Datap])), Datap))
FROM palestra
WHERE Datap Is Not Null
 


 WHERE Datap Is Not Null
 
Ho modificato la tua formula Karl, per mostrare
tutto il contesto... se fosse necessario.
 
SELECT (Max(DateDiff("d",DMax("Datap","palestra","Datap<" & 
CLng([Datap])),[Datap]))) AS DiffGiorni, palestra.[Datap]
FROM palestra
GROUP BY palestra.[Datap]
HAVING (((palestra.[Datap]) Is Not Null));
 
Bruno
 
 

 WHERE Datap Is Not Null
 
Ok funge, grazie!
Ora mi studio il senso di tutto questo.
 
bye,
max 
 
 

 ha scritto nel messaggio 
news:5283aae0$0$1372$4faf...@reader1.news.tin.it...

grazie Bruno, era effettivamente necessario :-)
 
bye,
max 
 
 

 era effettivamente necessario :-)
 
Siccome prima hai scritto che ti interessi il massimo, forse serve
un ordinamento:
 
SELECT Max(DateDiff("d",DMax("Datap","palestra","Datap<" &
    CLng([Datap])),[Datap])) AS DiffGiorni, palestra.[Datap]
FROM palestra
WHERE Datap Is Not Null
GROUP BY Datap
ORDER BY Max(DateDiff("d",DMax("Datap","palestra","Datap<" &
    CLng([Datap])),[Datap])) DESC
