cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Frequent Visitor

Update a drop down list when a date is entered

Hi,

 

I am building my first PowerApp using a SharePoint site and the user would like the "Stage" of the application (Stage_DataCard1, DataCardValue3) to automatically update when other 'triggers' such as "Transferred to Field Date" (DataCardValue17), "Test Completed by" (DataCardValue19) are completed. These fields will be blank (empty) before the data is entered (Date or text).

 

"DataCardValue3"  is a drop down list with items -  Choices([@'Log Requests'].Request_x0020_stage)

 

I need the DataCardValue3 to be either the selected value from the drop down list OR update automatically when one of the trigger points is reached. If a trigger is not met the stage should stay as the last stage.

 

Is this possible? if so how do I code it? I have had a look online and I think it should be possible but I can't see how - do I use UpdateContext, a plain If statement? Where do I put the code - in DataCardValue3 or where the trigger is entered (DataCardValue17 and DataCardValue19) and under which option?

 

Many thanks

A

 

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Resident Rockstar
Resident Rockstar

Re: Update a drop down list when a date is entered

Ok, perfect. So here is the formula:

If(
    SharePointForm1.Mode = FormMode.New,
    LookUp(
        Choices(AB12.Stage),
        Value = "New"
    ),
    SharePointForm1.Mode = FormMode.View,
    Parent.Default,
    SharePointForm1.Mode = FormMode.Edit,
    If(
        Not(IsBlank(DataCardValueTestCompletedBy.Text)),
        LookUp(
            Choices(AB12.Stage),
            Value = "Tested"
        ),
        Not(IsBlank(DataCardValueTransferredToFieldDate.SelectedDate)),
        LookUp(
            Choices(AB12.Stage),
            Value = "Transferred"
        ),
        Parent.Default
    )
)

Just replace AB12 with the name of your datasource, Stage with the name of your stage field, DataCardValueTestCompletedBy and DataCardValueTransferredToFieldDate with the name of your corresponding datacard values.

Tell me how this goes...

View solution in original post

29 REPLIES 29
Highlighted
Resident Rockstar
Resident Rockstar

Re: Update a drop down list when a date is entered

Hi @M147954,

If I understand correctly what you want to achieve here...

You have the following datacards in your app:

  • Stage
    • Stage_DataCard1
      • DataCardValue3 (drop down or combo box ?)
  • Transferred to Field Date
    • (name of the datacard ?)
      • DataCardValue17
  • Test Completed by
    • (name of datacard ?)
      • DataCardValue19

First, please consider renaming your datacards and your DataCardValue controls. It really helps coding... 😊

 

So, what you want to do is (values may differ from what you really want here):

  • if Transferred to Field Date is entered, Stage automatically takes the value Transferred
  • if Test Completed by is entered, Stage automatically takes the value Tested

If that's what you're trying to acheive, then I suggest you put the following formula in your DefaultSelectedItems of your DataCardValue3 control:

LookUp(Choices([@'Log Requests'].Request_x0020_stage), Value=
    If(Not(IsBlank(DataCardValue17.SelectedDate)), "Transferred", Not(IsBlank(DataCardValue19.Text)), "Tested")
)

This will not prevent the user to manually change the value of the Stage field if needed.

One thing though: using this code will give precedence to the Tested value since it is the last one tested in the If statement. Meaning: if both fields Transferred to Field Date AND Test Completed by are filled, then Stage will be Tested.

Hope this helps,

Emmanuel

Highlighted
Helper I
Helper I

Re: Update a drop down list when a date is entered

Hi Emmanuel,

 

Many thanks for your prompt reply, I will take your advice and rename the data card values to make coding easier - thanks. Stage_DataCard1 is a drop down list.

 

I have tried what you suggest and it works however when I save and then re-open the item the Stage is blank (contains no data at all) - have I done something wrong?

 

many thanks

A

Highlighted
Resident Rockstar
Resident Rockstar

Re: Update a drop down list when a date is entered

Let's say you have the following in your form:

  • DataCardValue17.SelectedDate = Blank()
  • DataCardValue19.Text = "Jim Sand"
  • DataCardValue3.DefaultSelectedItems = "Tested" (because of the formula and because the field Text completed by has been filled with "Jim Sand")

Are you saying that after your save this item, when edit it again, the Stage field is blank ?

Highlighted
Helper I
Helper I

Re: Update a drop down list when a date is entered

Hi,

 

indeed it is a little strange - I'm really not sure what is going on!

 

When I create a new item save and view it the stage is empty, on edit it goes to Find items. It seems to save ok but when I re-open the Stage is again blank - see attached.

 

I have just reverted back to an old version and will start again to see if I have done something daft in my excitement to test the coding yesterday. I will post an update

Highlighted
Helper I
Helper I

Re: Update a drop down list when a date is entered

Hi,

I have started from the beginning again and found something else. I can get the first change to work ok (change stage to "Transferred") however when I add data to the trigger to change the Stage to it to "Tested" it does not work - unless I remove the date in the first stage (DataCardValue17.SelectedDate).

 

I'm sorry that I did not make this clear in my post but this will be a sequential process  so "Transferred to Field Date" will be completed first then "Test Completed By"  will be filled in (by someone else). So, is it possible to alter the coding to account for this - I have tried:

LookUp(Choices([@'Log Requests'].Request_x0020_stage), Value=
    If(Not(IsBlank(DataCardValue17.SelectedDate)), "Transferred", ((DataCardValue17), Not (IsBlank(DataCardValue19.Text))),    "Tested")
)

but - well it is obviously wrong!

 

Is it possible to do this - if so how?

 

Many thanks

A

Highlighted
Resident Rockstar
Resident Rockstar

Re: Update a drop down list when a date is entered

Ok. No, your formula can't work...

If I understand well from your what I've seen in your document, you would like to have a New value for your Stage field when you initially create a new item, right ?

So, could you try this formula:

LookUp(Choices([@'Log Requests'].Request_x0020_stage), Value=
    Switch(<your form>.FormMode,
        FormMode.New, 
        "New",
        FormMode.Edit,
        If(
            Not(IsBlank(DataCardValue17.SelectedDate)), 
            "Transferred", 
            Not(IsBlank(DataCardValue19.Text)),
            "Tested",
            Parent.Default.Value
        ),
        FormMode.View,
        Parent.Default.Value
    )
)

A bit more complicated here. I couldn't test it so I compiled it in my brain... 😊 I hope there will be no error...

Keep me posted...

Highlighted
Helper I
Helper I

Re: Update a drop down list when a date is entered

HI,

Thanks, I checked your code but got an error, The function 'Switch' has some invalid arguments' (see attached).

 

I'm sorry but I don't think the code will do what I need:

The first stage will be New, I think your code will do this (thanks) but as work is completed the user wants to divide the record of what has been completed into stages so from "New", the next stage is "Transferred" and the subsequent one is "Tested".

 

Using the first code you sent, the Stage automatically updates from, the manually selected stage, "New" to "Transferred" when the DataCardValue17 (date) is entered but the Stage does not then update to "Tested" when I enter a value into DataCardValue19 (text) unless I clear the date field from DataCardValue17. The stage updates if I clear the date from DataCardValue17 so I was trying to say if DataCardValue17 and DataCardValue19 are not empty then change the Stage to "Tested" - to reach the "Tested" Stage data will exist in both DataCardValue17 and DataCardValue19.

 

I hope this makes sense!

 

Is this possible?

Thanks A

 

 

 

Highlighted
Resident Rockstar
Resident Rockstar

Re: Update a drop down list when a date is entered

Ok... First I made a mistake right at the begining of the formula because the property that holds the form mode is Mode not FormMode. Then, you are right: my formula will not allow your Stage column to get the "Tested" value.

So, can you please try this new formula:

LookUp(Choices([@'Log Requests'].Request_x0020_stage), Value=
    Switch(SharePointForm1.Mode,
        FormMode.New, 
        "New",
        FormMode.Edit,
        If(
            Not(IsBlank(DataCardValue19.Text)),
            "Tested",
            Not(IsBlank(DataCardValue17.SelectedDate)), 
            "Transferred", 
            Parent.Default.Value
        ),
        FormMode.View,
        Parent.Default.Value
    )
)

Tell me how this goes...

Highlighted
Helper I
Helper I

Re: Update a drop down list when a date is entered

Hi,

I have tested your revised code however I still  get "The function 'Switch' has some invalid arguments (see attached).

I have re-ordered the if statement you original wrote in line with your latest code (so that  DataValue19 comes before DataCardValue17) and the stages update however the Stage field clears on save - I guess the other part of your coding (once it works) will resolve this?

 

Many thanks for your help with this.

Helpful resources

Announcements
August 2020 Community Challenge: Can You Solve These?

August 2020 Community Challenge: Can You Solve These?

We're excited to announce our first cross-community 'Can You Solve These?' challenge!

secondImage

Return to Workplace

Reopen responsibly, monitor intelligently, and protect continuously with solutions for a safer work environment.

secondImage

Super Users Coming in August

We are excited for the next Super User season.

secondImage

Community User Group Member Badges

FIll out a quick form to claim your community user group member badge today!

secondImage

Power Platform 2020 release wave 2 plan

Features releasing from October 2020 through March 2021

Top Solution Authors
Top Kudoed Authors
Users online (5,978)