Buongiorno.
Sto diventando matto con il confronto delle date in un modulo VBA, ma forse sto diventando vecchio e mi sto perdendo qualcosa.
Uso un database SQL server, ma l'applicazione è MsAccess.
Nel database ho una tabella che si chiama Matricole. 
In Access estraggo per mezzo di una query che chiamo QryMatricoleCollaudate alcuni campi della tabella Matricole
SELECT Matricole.ID_Operatore, Matricole.ID_Matricola, Matricole.NumeroMatricola, Matricole.DataInizioCollaudo, Matricole.DataFineCollaudo, Matricole.TempoCollaudo, Matricole.TempoAttesaCollaudo
FROM Matricole
WHERE (((Matricole.ID_Operatore)>0) 
AND ((Matricole.DataInizioCollaudo) Is Not Null) 
AND ((Matricole.DataFineCollaudo) Is Not Null))
ORDER BY Matricole.ID_Operatore, Matricole.DataFineCollaudo DESC;
La query ovviamente mi mostra i dati corretti. Sia DataInizioCollaudo che DataFineCollaudo sono definite Datetime (Data+Ora).
All'interno del modulo per elaborare i dati che mi servono ho il seguente codice
    strSQL = "SELECT * FROM QryMatricoleCollaudate WHERE ID_Matricola = " & ID_Matricola
    Set rsMatr = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)
    If rsMatr.EOF = False Then
        
        strSQL = "SELECT * FROM QryMatricoleCollaudate "
        strSQL = strSQL & " WHERE ID_Operatore = " & rsMatr!ID_Operatore
        strSQL = strSQL & "   AND ID_Matricola <> " & rsMatr!ID_Matricola
        strSQL = strSQL & "   AND DataFineCollaudo <= #" & rsMatr!DataInizioCollaudo & "#"
        
        Set rsMaPre = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)
        If rsMaPre.EOF = False Then dtDataInizioIntervallo = rsMaPre!DataFineCollaudo
        rsMaPre.Close
        Set rsMaPre = Nothing
Succede che se il valore di rsMatr!DataInizioCollaudo è per esempio 11/01/2023 16:03:10 , la query mi estrae anche date superiori.
Cosa mi sfugge? Dove sbaglio?
Grazie