I’m going to give you a two part answer. For the first part, I’ll assume that your “creating the Text List” on demand idea is necessary (it’s not, but I’ll save that for the second part).
There are two ways you could could construct this object on demand:
- using constructlistmatrix
- using newformobject
You want to pick #2, for 2 reasons. First, as you have surmised, constructlistmatrix doesn’t give you complete detailed control over the object being created. Only basic options are available.
But more importantly, #1 is significantly slower. It works by first parsing and analyzing the tags you give it, and then building a blueprint. It then uses newformobject to actually create the object.
So by picking #2, you are skipping the parsing/analyzing of tags and going straight to the newformobject phase. You get all the power/flexibility of newformobject, and without the performance penalty. Win/win. The performance penalty is not too bad if you do it once when laying out a form, but it will be onerous creating a form dynamically over and over.
The easy way to use newformobject is to first create the object (either manually and/or with a constructor), and then right click on it and view the Blueprint. Then copy the blueprint code - that’s exactly the code you need to create the object dynamically! You don’t have to write any code at all - just copy and paste it into your procedure. This is the method that you say “got too crazy” but it’s actually simple as pie. (Of course a simpler solution is to just close the form, and only open it when the data sheet is closed. But in the next section you’ll see neither of these techniques are necessary.)
Now let’s revisit your assumption that “we are not able to have both the Data Sheet open while also having a Text List open”. This statement is far too broad, you can certainly have both open under many circumstances. What you don’t want to do is have a Text List that duplicates the navigation function of the data sheet. In other words it displays the same data as the data sheet in that database (not another database), and when you click on the Text List, it navigates to the clicked record. When all those conditions are met you’ll get spinning beachballs because the data sheet and the Text List will “fight” each other over who has control of the navigation of the database. But that’s not the situation you have. I think it would be fine in your case to have both the Text List and the database open at the same time. (By the way, in the situation where it’s not fine, the solution is not to create the Text List on the fly - simply make sure that the data sheet and the form containing the Text List aren’t open at the same time.)
As for your new problem, I can’t really analyze that too closely because you haven’t provided any code. So I have no idea what “interrogate” means. But your list has duplicate entries, so of course there’s going to be weird behavior around selection. In this case I believe the Text List is actually operating on an array, not the second database directly (the array is built from the second database, but once the array is built the second database is not involved further - this is why it works ok with the data sheet). The array has duplicate values, there is no way to tell them apart. You need to devise a method to have all unique values - perhaps by including the appointment time, or some other unique component of each appointment. Right now your system could never work because you don’t have a 1:1 relationship between the items in the list and the records in database B. I’m assuming that Jaxon Allen really had 3 appointments on March 9, and there are three records for those appointments in database B. You need to pull in additional data into the text list to be able to make a unique key.
Note that Panorama’s relational features are of no use to you here. Panorama knows how to set up a relation between two databases - but not how to set up a relation between a database and an arbitrary Text List. That can be done - but it has to be done by you.