When you are building forms and have to create new database fields, best practice is to give the columns generic names so that you can use them again on other forms in the same form family. For example, if you need to link a tenth diagnosis (yes, the event_log has 9 diagnosis columns!) on a People Activities form, you should name it something like udf_diagnosis10_id
rather than for the specific form like udf_extradiagnosisforclinicprogressnote
. This will allow you to keep your database neat and help prevent running out of columns in your _x
tables.
You may have run into a situation where you setup a user defined foreign key field on one form and had it working beautifully. However, when you went and tried to re-use it on a second form, you found that you could not select any look-up tables to use with it. What happened there?
You missed a crucial step in creating a user-defined database field. Here’s how to avoid making that same mistake going forward.
When you got to create a user defined foreign key field, use the [Data] Foreign Key Column attribute. Like the column name and data type, this attribute is only available when you first create the new column. If you forget this step, you cannot go back, and it is the reason that you cannot link a look-up table on subsequent uses of this column on other forms.
What to choose?
This depends on what picklist(s) you want to use with this column.
For example, if we go with the initial scenario, the picklist I want to use will consist of diagnoses so the foreign key column I want to select is diagnosis_id
. This will allow me to reuse the column on additional forms as long as I use a picklist that is diagnosis-based.
User defined fields are commonly paired with a user defined look-up table. In order to re-use these, you should select the user_defined_lut_id
foreign key column. Since all of your user defined look up tables use the user_defined_lut
table, they all use the same column as their primary key.
If you need help figuring out which column to select, first select the look-up table you intend to use. In the picklist for look up tables, there is a column called “Table From”. Many of these will be views, but you should be able to figure out what the underlying table is in most cases. In our example, I want to use a look-up table from the diagnoses_view
and so I know that the diagnosis
table and therefore the diagnosis_id
column is what I should select.
Thanks for this, Dean. That was driving me up a wall.