"Best Practices" question related to Popup Menu and Page Panels

Having recently done quite a bit of work in FileMaker, I have a question about how best to show the user a fairly large but not enormous number of options for selecting the data to go into a field. Specifically, I am working on an American History project where I need to associate an Native American’s individual record with the particular Tribe AND Subtribe they are a member of. Example would be Lakota Tribe and Oglala Subtribe. I have a Tribe table with all (most) Native American Tribes and an additional table with the Subtribes.

I have a foreign key field in the individual’s record to link to the tribe and I have considered 2 alternative ways of presenting these to the user. The first would be to use Page Panels and just have a listbox populated with all of the rows from the Tribe table on a page that is shown when they click the select button. The second would be to populate the values of a Popup Menu with the Tribes.

What would be the most efficient/preferred method to do this? I mentioned FileMaker because it is very easy to populate a value list from all the rows in a table to present the user.

Thanks in advance,

The preferred way is what works for your UI. Another option would be to have the user select the Tribe and have a dynamic list of radio buttons to select the Subtribe. You can do that pretty easily using a control set. Here is some code I use to load a list of servers in a restaurant pos system. There is a groupbox with a single radiobutton “rbServer” set up as a control set. I have an array of server names which is built using a query when the app launches. It is a multicolumn list so there is some extra calculating going on for that. In your case you would delete the exisiting list and repopulate based on your subtribe query.

[code] Dim i, count , iTop, iLeft, reset, colCount As Integer

Dim rb As RadioButton

reset = 15 ’ number of servers per column

count = ServerNames.Ubound
iTop = rbServer(0).Top
iLeft = rbServer(0).Left

rbServer(0).Caption = ServerNames(0)

For i = 1 to count

colCount = colCount + 1

iTop = iTop + rbServer(0).Height + 10

If colCount mod 14 = 0 then
  iLeft = iLeft + rbServer(0).Width + 10
  iTop = rbServer(0).Top
End if

rb = New rbServer

rb.top = iTop
rb.Left = iLeft
rb.Caption = ServerNames(i)


Thank you Peter, that would work quite well since the number sub-tribes associated with each tribe would be pretty small.

thanks again