Allora, ho fatto così:
Eseguo due interrogazioni al database.
Nella prima interrogazione mi ricavo i tre id (raggruppandoli) con le tre date minori.
codice:
sql_src = "SELECT Top 3 ID_tab_principale,Min(Data) FROM MiaQuery WHERE data >= " & DataOggi & " GROUP BY ID_tab_principale ORDER BY MIN(Data) ASC"
Poi, con un ciclo, mi ricavo due stringhe, con 3 (o meno se non li trova) valori ognuna, separati da virgola rispettivamente degli id e delle date.
codice:
StrQry1=ID_tab_principale1, ID_tab_principale2, ID_tab_principale3
StrQry2=Data1, Data2, Data3
Nella seconda interrogazione seleziono i tre record filtrati dai valori ricavati nell'interrogazione precedente.
codice:
sql = "SELECT * FROM MiaQuery WHERE ID_tab_principale IN (" & StrQry1 & ") AND Data IN (" & StrQry2 & ")"
Non so se sia il metodo migliore, ma funziona. Se qualcuno mi sa consigliare qualcosa di meglio, magari utilizzando una sola interrogazione, accetto volentieri.