I'm not sure if this is an option for you or not, but the simplest way to do this would be to assign the period number (which I assume is a primary key on period table) to a int field on the transactions table. After that's done, it's a simple matter of a basic update query and you're good to go.
If you are using Access 2000 or higher, you can always use THETA JOINS (this means that you can establish relations between tables using any comparison operator, not only =):
SELECT [Facts].[IdNo], [Facts].[Date], [Intervals].[Description]
FROM Facts LEFT JOIN Intervals ON ([Facts].[Date]<=[Intervals].[DateEnd]) AND ([Facts].[Date]>=[Intervals].[DateSt]);
I made it a OUTTER join in order to retrive records from the Facts table even if they do not match any interval that tou have defined in the intervals table.
By the way, I presume that the key field of the Interval table is the DateSt field. It's not a good idea to define an integer filed in intevals table to be its primarykey, because you have no nedd for it (you always have DateSt), but if you do so then you will complicate your life:
Imagine that the foreign key in facts table would be "so called" IntervalID field. Then when you will enter a new record (or update the value of Date field for an existing record) in you facts table you have to retrive the appropiate value for IntervalID foreignkey based upon the value of you Date field.