Hello, Ramsay. I can't offer consulting services (contractor issue for military sites) but since I work with the U.S. Navy Reserve, I fully understand your requirement. We have something similar at our shop.
There are a few ways to achieve your goal. Some are easier than others. I will suggest one simple way to do this. NOTE: If you can have multiple records entered for the same UIC on the same day, this method could cause a problem requiring a second "adjustment" to what you delete and when.
Add a numeric field to your record, call it "Ordinal" or some other arbitrary name. INTEGER or BYTE might be adequate. LONG might be overkill, but if you have room, LONG is probably better.
Now write an update query that you would run at a time when nobody is doing any record additions. Be kind to yourself by assuring that such a time exists. Access probably isn't robust enough to do this while the DB is active to your users in the field.
You might need to look up DCount function for this. The help files will tell you what you need to know. Remember that the Criteria argument of DCount is like a WHERE clause in a SELECT query.
Update the new field to show you how many records with the same UIC have dates NEWER than the current record. (The DCount function can count them for you, and DCount can legally occur in a query.) For dates, NEWER = Greater Than. The newest date will have zero records newer than itself. The next-newest should have 1 newer record. The next-next-newest, 2 newer records, and so on. BE WARNED: This isn't necessarily very fast if you have thousands of records. On the other hand, you aren't likely to have that many UICs if your army units are like our navy units. Hundreds, yes. Thousands, unlikely.
Next, write a delete query that deletes all records for which this new field has a value greater than 1 (or 2, depending on exactly how you write the update query.) This is where having multiple updates in the same date might cause trouble.
The method I described above is an example of "divide and conquer." This style works well with Access. Make one pass to MARK records and a second pass to DELETE records.
This separation also gives you a chance to apply other queries that would filter out options such as "OLDEST record not old enough yet" - which is how you would detect multiple changes on the same day. Run the queries to "unmark" (reset to 0) the marker field for any record you wanted to keep longer because of secondary limits. Run the "unmarker" queries between the initial marker query and the final deletion query.
Hope that helps.