cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
simms7400
Post Prodigy
Post Prodigy

Lookup formula in a Combo box?

 

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)

c1.png

Here is the layout of the "rdInvestments" table:

 

combo2222.png

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions

@simms7400 

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.

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

View solution in original post

20 REPLIES 20
simms7400
Post Prodigy
Post Prodigy

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?

 

Thank you!

 

 

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?

 

Thanks!

@simms7400 

The Items property on the ComboBox would normal be something that returns a table of items.  In this case you are using a Lookup, which would (in most cases) be returning a single record.

What you want to look at is the Filter function for the Items property.

   Filter(rdInvestments, InvestmentID=DataCardValue43.Text)

Then, for the DataFields property - set it to ["IND_DESC"]

This will give you a combobox control with the values that match that Filter and for that particular field.

 

NOW...all that said.  I am not sure this is really what you want, but I don't know for sure based on your data and your description.

Normally, (in this kind of scenario) one would want a combobox to display a list of all the possible values that a person could choose while defaulting to the current one in the data.  AND, I think you might have been trying to say that, but I got lost in the description - because, you made mention of the combobox having a data source of RD_Indication_List

 

IF that is the case, then I believe what you are trying to do is to DEFAULT the combobox to the value that is in the datacard and still have the list available from the RD_Indication_List.

 

So...

Your Items property on the ComboBox should be RD_Indication_List

And your Default property should be, Lookup(RD_Indication_List, InvestmentId=DataCardValue43.Text)

This assumes that the RD_Indication_List has a column called InvestmentId and that the values in that list would be equivalent to the values you would have in the DataCardValue43 text property.

 

I hope I covered both my misunderstanding as well as hopefully what you are actually looking for.

Let me know if that helps or if you have other questions.

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

@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!

 

@simms7400 

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.

 

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

@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.

 

Thanks!

@simms7400 

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.

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

@RandyHayes  -

 

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:

 

Randy.png

 

And this is the "rdInvestments" table:

 

randy1.png

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!

@simms7400 

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:

   Lookup(RD_Indication_List, Alias=ThisItem.IND_DESC) 

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!

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Helpful resources

Announcements
PA User Group

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group

secondImage

Demo Extravaganza is Back!

We are excited to announce that Demo Extravaganza for 2021 has started!

MBAS on Demand

Microsoft Business Applications Summit sessions

On-demand access to all the great content presented by the product teams and community members! #MSBizAppsSummit #CommunityRocks

Power Apps June 2021

June Power Apps Community Call

Did you miss the call? Check out the recording here!

Top Solution Authors
Top Kudoed Authors
Users online (15,524)