A rainy Paris is (still) a good Paris.
I'm going to follow this, I have a similar situation archiving objects in Drawers and Sections (within each drawer). My situation is more complicated in that the sections occupy more or less space in the drawer, depending upon what is in the section, but could be indexed by Type of object (a finite number of Types).
I do have a table of Drawers, with a portal showing what is in each drawer, with the section recorded as part of the Object record, so displaying in the portal.
I have no way at present to indicate "empty" places, but sounds interesting.
That individual records approach that you don't want to do is probably your best option. With individual records for each storage location, you gain a great deal of flexibility that you will not have with other options.
Paris is sunny now, and in the mean time, my mind cleared up on this issue too. PhilModJunk's comment assures me. I did finally create the suggested separate table, that has one record for each possible storage location, with an "available/occupied" indicator. A relationship to this table from a global field containing the text "available" provides a list of "empty" locations in the "vials" table. I just had to develop a looping script for creating the storage records, that I chose to do by scripting the creation of new "racks" whenever needed.
Thank you for your input, and for making me feel less stupid ...