The answer is different depending on whether you need to actually store the
location because you need its value to be historically static or whether you
can look up the location and always view the current location regardless of
whether you are looking at an old record or a new one.
1. Storing the value:
Use a combo that includes the location field. it is not necessary for the
field to be visible so you can make its length 0 to hid it in the
ColumnWidths property. In the AfterUpdate event of the combo, add a single
line of code:
Me.Location = Me.YourComboName.Column(2)
The number in .Column(x) represents the position of the location field in a
zero-based array. Therefore, position 1 = .Column(0), position 2 =
..Column(1), etc.
Unless you need to allow manual overrides of the location field, you should
set its locked property to yes and its tabStop property to No to prevent the
value from being changed and to prevent the cursor from tabbing into the
field at all.
2. Referencing the current value:
Create a query that joins the main table with the lookup table and select
all the fields you are currently using from the main table plus the location
value from the lookup table. Use this query as the RecordSource for your
form. As long as you didn't change any column names, you can just replace
the existing value with the name of the new query. Then to avoid
accidentally updating the location from this form, set the locked property
to yes and the tabStop property to No.
Keep in mind that in most situations, option #2 is the technically correct
solution. Do not store duplicate data unnecessarily. You can easily obtain
lookup data by using a query that joins to the lookup table as the
RecordSource for your forms and reports.