Ho risolto in questo modo:
nella tabella tblAttivita ho inserito un campo calcolato “Duplicati” con l'espressione:
[ID] & "-" & [data_attivita]
e sull'evento dopo aggiornamento del controllo data_attivita questo codice:
Private Sub data_attivita_AfterUpdate()
If Not IsNull(DLookup("Duplicati", "TblAttivita", "Duplicati = " & Chr$(34) & Me!Duplicati & Chr$(34))) Then
MsgBox "Attenzione! Data già esistente per questo Utente, cambiare data!", vbCritical, "Data Duplicata!"
Me.Undo
Me.note.SetFocus
Me.data_attivita.SetFocus
End If
End Sub
e tutto funziona perfettamente. non si può usare la stessa data per lo stesso ID ma si può usare per un altro ID che non l'abbia già usata. Può sembrare strana la doppia istruzione SetFocus, ma era l'unico modo per fare ritornare il cursore sul campo data_attivita, altrimenti cancellava la data errata ma andava al campo successivo.
Contento se può servire a qualcuno
grazie a tutti.