If you define this relationship:
Main::Date < Dates::Date
and sort the related dates record via the sort setting in the Edit Relationship dialog into ascending order...
then, from the record in Main, you can simply refer to Dates::Date to access the future date that is nearest to the date specified in Main.
I like the clean easy fix. Unfortunately, I would want the resulting date to be the closest one, not necessarily the next date in the future.
That can still be done though your screen will be slower to update.
Define Main::gDate as a field with global storage.
Define a calculation field in Dates, cInterval as: abs ( Date - Main::gDate )
Use this relationship:
Main::anyField X Dates::anyField
And sort it in ascending order by cInterval
But if you have a lot of records in Dates, this relationship may be very slow to update and return a value. If you know that the interval will always be a certain number of days or less, you can set up a relationship that matches to a listed range of dates and this should then evaluate and update more quickly.