Ciao David,
intanto grazie, si è la soluzione che fa per me, ho riscontrato questo problema se uso il reminder recordset cliccando sull'ultimo appuntamento mi esce un errore di run time 3021
Private Sub Form_Timer()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim sSQL As String
'Imposta i minuti di anticipo per l'avviso
Const iReminder As Integer = 15
Dim iContact As Integer
Dim sMessage As String
Set db = CurrentDb
sSQL = "SELECT * FROM tAppuntamenti " _
& "WHERE Eseguito = 0 AND " _
& "DataAppuntamento = Date() AND " _
& "DateDiff(""n"", Time(), OraAppuntamento) <= " & iReminder
Set rst = db.OpenRecordset(sSQL, dbOpenSnapshot, dbReadOnly)
With rst
.MoveLast
iContact = .RecordCount
End With
If iContact = 0 Then
If CurrentProject.AllForms("fAppuntamenti").IsLoaded = True Then
DoCmd.Close ObjectType:=acForm, _
ObjectName:="fAppuntamenti", _
Save:=acSaveNo
End If
Exit Sub
End If
If CurrentProject.AllForms("fAppuntamenti").IsLoaded = False Then
If iContact = 1 Then
sMessage = "Attenzione hai " & iContact & " persona da chiamare nei prossimi" & vbCrLf _
& iReminder & " minuti. Vuoi visualizzarla?"
ElseIf iContact > 1 Then
sMessage = "Attenzione hai " & iContact & " persone da chiamare nei prossimi" & vbCrLf _
& iReminder & " minuti. Vuoi visualizzarle?"
End If
If MsgBox(Prompt:=sMessage, _
Buttons:=vbQuestion + vbYesNo, _
Title:="AVVISO") = vbYes Then
'Scegli cosa vuoi fare
' 'Apri un report
' DoCmd.OpenReport "listapp", acViewPreview
'oppure
' 'Apri una maschera
DoCmd.OpenForm FormName:="fAppuntamenti"
Forms("fAppuntamenti").Form.RecordSource = sSQL
'oppure
' 'Apri una query
'DoCmd.OpenQuery "nomeQuery"
End If
Else
'Scegli cosa vuoi fare
' 'Apri un report
' DoCmd.OpenReport "listapp", acViewPreview
'oppure
' 'Maschera già aperta, aggiorno il recordsource
Forms("fAppuntamenti").Form.RecordSource = sSQL
'oppure
' 'Apri una query
'DoCmd.OpenQuery "nomeQuery"
End If
rst.Close
db.Close
Set rst = Nothing
Set db = Nothing
End Sub