cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
NewLearner1
Helper I
Helper I

Disable past dates from datepicker in powerapps

Hi Experts,

 

In my App, where I datepicker field coming from sharepoint list.

I want disable the past dates , user should only select today and future dates.

Any way to do it?

 

Thanks in advance.

1 ACCEPTED SOLUTION

Accepted Solutions
eka24
Super User
Super User

You can use a notification OnSelect of the DatePicker or OnSelect of a Button:

If(DatePicker1.SelectedDate<Today(),Notify("Selected date cannot be before Today",Error))
------------

If you like this post, give a Thumbs up. Where it solved your request, Mark it as a Solution to enable other users find it.

View solution in original post

3 REPLIES 3
eka24
Super User
Super User

You can use a notification OnSelect of the DatePicker or OnSelect of a Button:

If(DatePicker1.SelectedDate<Today(),Notify("Selected date cannot be before Today",Error))
------------

If you like this post, give a Thumbs up. Where it solved your request, Mark it as a Solution to enable other users find it.
v-jefferni
Community Support
Community Support

Hi @NewLearner1 ,

 

Could you please share more details about your scenario? Which control or component are you using for datepicker, the DatePicker control or a custom component?

 

Assuming that you are using the DatePicker control in your app, then you could add a verification on the submit button, as following:

If(DateDiff(Today(),DatePicker.SelectedDate)<0,Notify(“Please Select A Date Today OR After”, NotificationType.Warning),SubmitForm(EditForm))

 

This formula would display a banner message to user at the top of the screen if the selected date is before today, otherwise submit the form. You could replace the SubmitForm with Patch or Update functions as well.

 

Please refer to the official doc about Notify function:

https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/functions/function-showerror

 

If you are using some component in the app, it would depend on what the component’s functionality, so more details would be helpful.

 

Best regards,

Community Support Team _ Jeffer Ni
If this post helps, then please consider Accept it as the solution to help the other members find it.

 

Community Support Team _ Jeffer Ni

If this post helps, then please consider Accept it as the solution to help the other members find it.

mel5517a
Regular Visitor

UPDATE:

I was able to solve the issues I was having below. Instead of using a variable I used a toggle switch.

 

On the date picker card I inserted a toggle (named Toggle1) the toggles Default is:

If((ThisItem.'Due Date'<>(DatePicker.SelectedDate)) && (DatePicker.SelectedDate < Today()),true,false)


The toggle checks to see if the DueDate has been changed and if the new selected date is earlier then today the value will be set to true. (The toggle's visible property set to false)

 

The OnSelect of Submit button & OnSave I update to:

If(Toggle1.Value=false,SubmitForm(frmTracker),Notify("Selected due date cannot be before Today",Error));


-When filling out a new form a user cannot select  a date in the past but CAN leave the due date blank

-If an existing item with no due date needs to be escalated the due date can be edited to today or a date in the future

-OR if a due date is extended the due date can also be updated from the original date so the item doesn't show past due.

 

Hope this helps someone i'm sure there are other ways of possibly doing this maybe adding something to OnChange vs OnSelect  but I haven't gone back to test. 

_______________________________________

Hi @NewLearner1,

 

I would love to see this as an option in the actual date picker properties but I was able find 2 work arounds by taking @v-jefferni's  suggestion and modifying it slightly using a variable.

 

I have an issue/request tracker. In my form I have a Due Date field which I would like users to either select a due date or leave the field blank if there is none.

 

WORK AROUND 1: 

OnStart for the App I entered: 

 

 

Set(varDueDate,Today())

 

 

 

OnSelect for Date Picker I entered:

 

 

Set(varDueDate,DatePicker.SelectedDate)

 

 

So if a user clicked the Date Picker it would set the new value for varDueDate to the selected date 

 

OnSelect of Submit button I entered:

 

 

If(!(varDueDate<Today()),SubmitForm(frmTracker),Notify("Selected due date cannot be before Today",Error));

 

 

If the varDueDate is not before today the form will be submitted otherwise a notification banner is received and the form will not be submitted. 

*Reminder: make sure OnSave under SharePointIntegration is updated  as well so the experience is the same whether the user hits submit or save

 

I chose to do it this way because I found I that with @v-jefferni  suggestion I could not update older items in my list (title, description, etc) if the DatePicker.SelectedDate showed older then today it would instead throw the error and not submit/update. With these items in my list the other fields often need to be changed but the due date typically remains the same if the user had to change the due date every time they edited a field we would lose sight of the TRUE due date and could also not tell if the item was PAST DUE.

 

However as I said this is a work around I came across 2 problems while testing this

-Problem1:  if the person creating a new item clicked the date picker but did not choose a date then continued filling out the form the ERROR was displayed on submit and  seems a little confusing

-Problem 2: When editing an existing item if the the date picker was selected but not updated to => today() again the ERROR was received and the user would be forced to cancel or change the Due Date 

 

WORK AROUND 2

I also tested no variable being set in App OnStart and instead setting the variable via an if statement using the OnSelect for Date Picker.

 

 

If(
    !(DatePicker.SelectedDate < Today()),Set(varDueDate, false),
    IsBlank(DatePicker.SelectedDate),Set(varDueDate, false),   
    Set(varDueDate,true)
);

 

 

 

OnSelect of Submit button and also OnSave I entered:

 

 

If(!(varDueDate=true),SubmitForm(frmTracker),Notify("Selected due date cannot be before Today",Error));

 

 

 

This resolved Problem 1 above but not Problem 2. I myself am also pretty new to power apps and i'm not sure if its the right thing/best practice to set a variable in an If statement. 

 

If you've found a Solution and not just a work around please let me know. Thanks!

 

 

Helpful resources

Announcements
Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

May UG Leader Call Carousel 768x460.png

June User Group Leader Call

Join us on June 28 for our monthly User Group leader call!

PA Virtual Workshop Carousel 768x460.png

Register for a Free Workshop

This training provides practical hands-on experience in creating Power Apps solutions in a full-day of instructor-led App creation workshop.

PA.JPG

New Release Planning Portal (Preview)

Check out our new release planning portal, an interactive way to plan and prepare for upcoming features in Power Platform.

Top Solution Authors
Users online (1,367)