Hi Folks -
I have a form that is used for both change requests and new requests for data elements for our Master Data Management System. I need to add a ComboBox to the form instead of converting an existing field to a dropdown as there are quite a few values so the end user needs to be able to search.
The ComboBox's data source a list of "Indications" called "RD_Indication_List" on SP.
My question is, can the ComboBox be inclusive of a Lookup formula?
For instance, if an end user is submitting a change request, it means the "Project Code" field (DataCardValue43.Text) is populated with a data element and existing in a SP list ("rdInvesments") and also is mapped to an indication using a column "IND_DESC". THerefore, I want to prepopulate the box with the current mapping, but still allow the end user to make a new selection if need be.
However, when I try to use this formula, it fails:
LookUp(rdInvestments, InvestmentId=DataCardValue43.Text, IND_DESC)
Here is the layout of the "rdInvestments" table:
Solved! Go to Solution.
In this scenario, you're going to want to have this ComboBox in a DataCard inside your EditForm. Although you can put it outside, there is a bit more "plumbing" that you'll have to do to connect, display, edit and update the data.
If you throw that in a custom DataCard in your edit form, the Formula I gave you last should work just fine.
Let me know how it goes.
Sorry, for some reason the last part my post was cut off. I asked if a Combo box perhaps couldn't handle a Lookup formula? If it can, what am I doing wrong?
Sorry, one last thing. The reason the formula is not working is because it doesn't recognize the "InvestmentId" column for someone reason. I realize the combobox has a idfferent data source than the form it has been added on, but I wouldn't think that would prevent the column in the lookup formula to not render?
@RandyHayes Thank you for that detailed reply!!
So, you are correct in your assumption - my apologies for my confusing post. However, there is still a misunderstanding on the different sources.
The forms data source is "rdInvestments" and has a table layout as shown in my screen shot. However, RD_Indication_List is a seperate list where I manage all the "Indications" and where I need to have the ComboBox values pull from (which it does).
However the issue is around the lookup formula. The "Project Code" (DataCardValue43.Text) value is mapped to the "IND_DESC value in the "rdInvestments" table (as shown in my screen shot). Therefore, I need to do the lookup on that table and return that value (if it exists, otherwise keep blank so the end user can then chose the approriate value).
Essnetially, when that linkage is made, I have a MS Access routine that then updates the "rdInvestments" table with the "Project Code" and "IND_DESC" value mapping.
Does that make sense? I know it's a bit unorthodox so please let me know if I need to explain anyhting further. Thank you so much!
So I believe then what I pointed you toward is correct.
In the scenario I gave you, your ComboBox control will be pulling its list of values from the RD_Indication_List (which you say it is). You want the default value to be whatever is in the Project Code (DataCardValue43.Text) control.
I believe you are saying that you want the ComboBox to have the IND_DESC column appear as the options and for the Default value to be the IND_DESC value corresponding to the current InvetmentId as it appears in the text control.
So, only a slight change in the previous message.
Your Items for the ComboBox will be RD_Indication_List and your DataFields will be ["IND_DESC"]
Your Default property will be set to, Lookup(RD_Indication_List, InvestmentId=DataCardValue43.Text)
That should give you what I believe you are looking for.
@RandyHayes HI Randy -
I still think i'm confusing you, and I'm sorry.
The table RD_Indication_List does not have "InvestmentId" or "IND_DESC" columns - it's the table rdInvestments that does.
RD_Indication_List has a column called "Alias" (which i'm using as the fied to display in the combobox) which corresponds to the column "IND_DESC" in rdInvestments.
rdInvestments is where the form is hooked up to and used for change requests. So, in rdInvestments it has multiple columns that show the paticular values as it relates to the "Project Code" field.
Therefore, if this is only a change request, the Project Code will be in the "rdInvestments" table along with all the relevant oclumns. One of those columns is "IND_DESC" and thats the value I want to display...However, the drop down LIST should be ALL values from "RD_Indication_List" (column Alias).
Does that make sense? THis way, an end user will see the current value but be able to chose another if need be.
I think I'm tracking...
My current assumptions:
Your ComboBox source is RD_Indication_List and the DataFields property is ["Alias"], thus displaying all of the Alias column values from RD_Indication_List.
The Alias column contents in RD_Indication_List are identical to the IND_DESC column in rdInvestments.
You want the default value in the ComboBox to be the current value in the rdInvestments record.
And this is where I think I was getting lost - The Project Code is the InvestmentId in the rdInvestments list. More on this assumption in a second...
So, let's recap the formulas:
ComboBox Items Property : RD_Indication_List
ComboBox DisplayFields Property : ["Alias"]
Back to the assumptions...I assume your EditForm has a datasource of rdInvestments and that you are editing a record in that form. If that assumption is correct, then...
ComboBox Default property : Lookup(RD_Indication_List, Alias=ThisItem.IND_DESC.Value)
Assumption variation...If you are not editing rdInvestments in the form, then...
ComboBox Default property : Lookup(RD_Indication_List, Alias = Lookup(rdInvestments, InvestmentId = DataCardValue43.Text).IND_DESC)
I hope (I hope I hope) that I have gotten it clearer this time. It's always a challenge to try to understand someone else's data in a jiffy...you know it well.
Thank you for the follow up. I still don't think we are there...I keep reffering back to my original Lookup lusing rdInvestments and I'll try to explain better this.
In this screen shot, I just just need the Combox to populate with the value in "IND_DESC" of "rdInvestments" based on the "Project Code". For instance:
And this is the "rdInvestments" table:
Therefore, based on the above scenario, the combobox should populate with "Support".
So perhaps a Lookup is the wrong way to grab that value? But I thought since the ComboBox was a data source of "RD_Indication_List" and I need to reference "rdInvestments" i needed a lookup...
Does this make sense? Sorry for the confusioN!
Actually, I think we're "spot on" at this point. Except...I still don't know what you are doing as far as the form is concerned. Is this an EditForm for the rdInvestments datasource? Is the value in the Project Code text box from the rdInvestments datasource?
If all of that is true, then you are right on for the Lookup as I described it. You will change the Default property of the ComboBox to be: Lookup(RD_Indication_List, Alias=ThisItem.IND_DESC.Value)
If the above is NOT true...we'll rather than confuse things with that scenario, just tell me if it's not and I will give you the answer for that.
So..back to why this is the answer if the above is true...AND, let's dig a little deeper to understand some things -
In your photo, you show an Investment Form. I assume this is an EditForm that has a datasource of rdInvetments AND that we are looking at a particular item in that datasource...this one happens to have a Project Code of PFI-00017-99901
What I DO NOT know about this scenario is, you mention it is a Text Input control - does this mean that people will be typing that value in (scenario 1)? And would that happen prior to submitting the data to the data source? OR, is this data something that comes from an rdInvestments record (as is displayed) and would not be changed (scenario 2).
Scenario 1 - The text box can be freely typed in and does not correspond to a specific value in the data record.
Your Default property for the ComboBox would be:
Lookup(RD_Indication_List, Alias=Lookup(rdInvestments, InvestmentId=DataCardValue43.Text).IND_DESC)
In this scenario we are Looking up the IND_DESC column value from the rdInvestments table based on the InvestmentId being equal to the value in the TextInput box. THEN, from that Lookup we are returning the IND_DESC value which is then used in the "outer" Lookup where we lookup the record in the RD_Indication_List table based on the Alias being equal to the IND_DESC value that we just looked up.
Scenario 2 - The text box is only to display the value of the data record being displayed. Users are not expected to alter it.
Your Default property for the ComboBox would be:
Assuming that your rdInvestments table has an IND_DESC column - you show it as Project Code on your Form, but we've talked about it as IND_DESC. If this is not the case, then replace the IND_DESC with whatever the name of the column is that the Project Code is in within the rdInvestments table. BUT, looking at all your picture - I believe this is the correct field name.
What is going on here is this:
1) Your ComboBox is tied to the RD_Indication_List. Therefore ALL of the records in that ComboBox will have a schema of the RD_Indication_List - regardless of the fact that you are only showing the Alias column value.
2) To set a default value - you have to give it the same type of Record that the Item source of the ComboBox has (preferred) or at least the Value that corresponds to a list item. (side note, I say preferred because there is no ambiguity when setting default to be the exact record).
3) SO, with 1 and 2 said, the Lookup above will lookup the exact record in the RD_Indication_List that we need to display the default. How do we get the exact record? We do it by matching the InvestmentId column in the RD_Indication_List with another value - NOW, where that value comes from I Don't Know and have given the above two scenarios to account for each possibility. Scenario 1, it's in the text input box and can change. Scenario 2, it's in the record of the rdInvestement being displayed.
SO, at the end of all of this, you have a textbox which may or may not be editable, you have a ComboBox that is displaying the Alias values from the RD_Indication_List and you have a default value of that ComboBox being set to the value that comes from the reference of the value in the textbox with the corresponding IND_DESC value that is then cross referenced to the proper Alias value that the IND_DESC references in the RD_Indication_List.
Give these a try and let me know that we got there finally!