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