Una famiglia di sistemi di gestione per database relazionali di Microsoft progettati per semplificare l'uso.
Ciao Vladimiro,
prova a valutare la seguente funzione che, apparentemente, restituisce un risultato corretto sulla base delle evidenze precedenti.
Option Compare Database
Option Explicit
Private iContaP As Integer
Public Function fCalcolaRitardi(ByVal dData As Date, ByVal dOra As Date) As Integer
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim dDataPrec As Date
Dim dOraPrec As Date
Dim sGGPrec As String
Dim iRitardo As Integer
Set db = CurrentDb
'Set rst = db.OpenRecordset("SELECT Data, Ora, GG From tRitardi " _
& "WHERE cdbl(Data) + cdbl(Ora) <= " & Replace(CDbl(dData) + CDbl(dOra), ",", ".") _
& " ORDER BY Data, ORA")
Set rst = db.OpenRecordset("SELECT Data, Ora, GG From tRitardi " _
& "WHERE CDbl(([Data]) + Cdbl([Ora])) <= " & Replace(CDbl(dData + dOra), ",", ".") _
& " ORDER BY Data, Ora")
With rst
iContaP = 0
Do While Not .EOF
Debug.Print !Data; !Ora; !GG
If !GG = "V" Then
If sGGPrec = "V" Then
iRitardo = 0
Else
iRitardo = iContaP + 1
End If
Else
If sGGPrec = "V" Then
If dDataPrec <> !Data Then
iContaP = iContaP + 1
Else
If iRitardo > 0 Then
iContaP = 0
Else
iContaP = 1
End If
End If
iRitardo = 0
Else
iRitardo = 0
End If
End If
dDataPrec = !Data
dOraPrec = !Ora
sGGPrec = !GG
.MoveNext
Loop
Debug.Print "Data: " & dDataPrec; " | Ora: " & dOraPrec; " | GG: " & sGGPrec; _
" | Ritardo: " & iRitardo; " | ContaP: " & iContaP
End With
fCalcolaRitardi = iRitardo
rst.Close
db.Close
Set rst = Nothing
Set db = Nothing
End Function
David