@Alex ha scritto:
La cosa è semplice... anche in Access io farei una funzione così
Function DTA(Data1 As Date, data2 As Date) As String
Dim a As Integer
Dim m As Integer
Dim g As Integer
Dim Ndm As Date
Dim Ndg As Date
a = DateDiff("yyyy", Data1, data2, vbMonday, vbFirstJan1)
Ndm = DateAdd("yyyy", a, Data1)
m = DateDiff("m", Ndm, data2)
Ndg = DateAdd("m", m, Ndm)
g = DateDiff("d", Ndg, data2)
DTA = "a=" & a & " m=" & m & " g=" & g
End Function
Olivotto ha scritto:
Tranquillo figurati....cercherò di studiare il problema nel caso rimaniamo in contatto. Se vuoi sono anche su fb olivotto marino.
Ciao
Integrazione al codice di @Alex
...
a = DateDiff("yyyy", Data1, data2, vbMonday, vbFirstJan1)
If DateAdd("yyyy", a, Data1) > data2 Then
a = a - 1
End If
Ndm = DateAdd("yyyy", a, Data1)
m = DateDiff("m", Ndm, data2)
If DateAdd("m", m, Ndm) > data2 Then
m = m - 1
End If
...
Prova a fare "calcoli estremi" (con inizio e fine mese) per vedere se il risultato ti soddisfa.
Per capire il comportamento della funzione, sia in versione iniziale sia modificata, riporto la spiegazione presa da qui
http://office.microsoft.com/it-it/access-help/funzione-datediff-HA001228811.aspx
"Quando si esegue il confronto tra il 31 dicembre e il 1 gennaio dell'anno immediatamente successivo, la funzione DateDiff per l'anno ("aaaa") restituisce 1 anche se è trascorso un solo giorno."
Stessa cosa per il mese: DateDiff in mesi tra 30/06 e 01/07 è 1 mese.