A family of Microsoft relational database management systems designed for ease of use.
Thanks for the detailed background; it puts your questions into context. Let's look at a few specific points.
<QUOTE>
This final screen should be "full screen" and could be modal, though there is no need for it to be a pop-up window and, I suspect, might make best use of limited tablet screen realestate if it were a regular window rather than a pop-up window.
</QUOTE>
It seems to me that you don't in fact want dialog mode. Modal would work for you, or you could present a form that occupies the whole Access window (which may or may not be full-screen, as you choose), and can only be closed by making a selection or clicking a Cancel button.
<QUOTE>
In this particular instance, I don't think I need to deal with multiple instances of a form being open.
</QUOTE>
I agree; from your description, I don't see why you would need multiple instances of the same form. I've used that technique in applications where one wants to see multiple related entities of the same type together, as for example an employee and his supervisor, or a school child and each of his parents. But so far as I can see, your application drills down to a single specific question, then displays it -- one question at a time.
<QUOTE>
I don't even know if it is practical / possible to have multiple instances of a form open at the same time in Access, but I have done so in other application frameworks and, if it is possible, I would like to know how to do it in Access and, as much as possible write my applications to open forms in a way that is independent of whether or not there are any instances of the form already open.
</QUOTE>
It is both possible and practical, under the right conditions, though you have to manage the forms yourself. However, you mention using SharePoint and web deployment, and I don't think you can do it with Access web forms. I could be wrong, but the only way I know of to do it involves forms with VBA code behind them, and Access web forms can't have VBA code, so that method won't work.
Since you asked, the non-web method for opening multiple instances of an Access form only works for form's with VBA code, because forms with VBA have class modules, and you can create what is called a non-default instance of the form -- or any number of such instances -- by using VBA to create a new instances of that class module, as with code similar to this:
Dim frm As Form_MyFormName
Set frm = New Form_MyFormName
frm.Visible = True
The form instance will close automatically and be destroyed when the last refernce to the class instance goes out of scope. This generally means that you need to maintain a global collection of form references, adding each new instance to the collection when you create it, and removing the reference from the collection when you want to close the form or when you detect that the user has closed it.
To locate a specific instance from among several, you could either assign a specific key to each instance when you add it to the collection, or else loop through the collection members checking properties of each instance, such as the .Caption property, until you find the one you want.
Unfortunately, as I said, this method creating multiple instances won't work with Access web forms. If there's another method that you could use with web forms, I don't know about it, but I haven't yet spent any time working with the new web features of Access 2010.
As for writing your application "to open forms in a way that is independent of whether or not there are any instances of the form already open", I'm not sure that it's worth stepping outside of the built-in functionality of Access unless you really want to allow multiple instances of the same form open. Access assumes that, if you say "open form X" and form X is already open, all you want to do is bring form X to the front. However, you can easily write your own form-opening routine that determines whether the form you requested is already open, and if it is, does whatever you want to it: close and reopen, or filter to a different record, or set various properties, or whatever. It's simple to tell if form X is already open; just write:
If CurrentProject.AllForms("X").IsLoaded Then
If you need to determine what "view" the form is open in, you can check properties of the form for that.