cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Lefty
Impactful Individual
Impactful Individual

Date Field changes, when using Today() and 14 Days on a date

Hi

I have an issue.

On my Canvas app form, linked to SPO. I have a date field with it set to todays date:

If(Form1_8.Mode=FormMode.View,Parent.Default,Today())

and another field on the same screen set to 14 days from that date:  

If(Form1_8.Mode=FormMode.View,Parent.Default,DateAdd(DataCardValue66.SelectedDate,14,Days)) 

 

Now this works when the form is in view mode for other users, but for me and another user, the for DefaultMode of the form is set to:

If(VarUser = "MY@Email.com" || VarUser = "MY11@Email.com", FormMode.Edit, FormMode.View)

 

So every time I view the form, the field is showing as today 07/04/2020 and the +14 days date field also changes while i'm on the screen. I dont think it changes the item if i view it as a user or view it in SPO.

When I come to this screen for the first time, i need the ability to change both the dates, but once i submit the form, ideally I want to block the dates from being changed.

I'm using the same screen for when I come to enter the actual dates for the first time, and if i revisit the same screen to make a change those dates change. 

 

Any idea how i can set those dates once and then they dont change?

2 ACCEPTED SOLUTIONS

Accepted Solutions

Hi @Lefty ,

Has the Date2 field been populated with proper date value before you or the other user submit the form?

 

The ThisItem.Date2 formula is used to retrieve Date2 field value from your SP List, check if the Date2 field of current record has been populated with proper date value.

If the Date2 field of current record in your SP List itself has not been populated with proper date value before you or the other user submit the form, I think the formula I provided above could achieve your needs.

 

If the Date2 field of current record in your SP List itself has been populated with proper date value before you or the other user submit the form, and you want to edit the Date2 field, please modify the formula within the DisplayMode property of the second Date field to following:

If(
   IsBlank(ThisItem.Date2) || Not(Lower(ThisItem.'Modified By'.Email) in Lower(["MY@Email.com", "MY11@Email.com"])),
   DisplayMode.Edit,
   DisplayMode.Disabled
)

Note: You should check if the Date2 field is populated with proper value in your SP List itself rather than in your Edit form DatePicker control.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

View solution in original post

Lefty
Impactful Individual
Impactful Individual

@v-xida-msft 

 

Thanks for your help, the logic was needed on the default property of both date fields:

 

If(IsBlank(ThisItem.ColumnName),Today(), ThisItem.ColumnName)

 

This now retains the date that i submit, but is today if there is no data in the SPO list.

 

Thanks 

View solution in original post

10 REPLIES 10
v-xida-msft
Community Support
Community Support

Hi @Lefty , 

Do you want the Edit form to be in Edit mode when you or another user (MY11@Email.com) view the form?

Do you not want the Date filed value to be changed to current date value when you or another user view this form?

 

Based on the formula you specified within the Date field in your Edit form, I think there is something wrong with it. I have made a test on my side, please consider take a try with the following workaround:

Set the DefaultDate property of the DatePicker control in your Edit form to following:

If(
   Form1_8.Mode = FormMode.View || ThisItem.'Created By'.Email = "MY@Email.com" || ThisItem.'Created By'.Email = "MY11@Email.com",   // Modify formula here
   Parent.Default,
   Today()
)

Set the DefaultDate property of another DatePicker control in your Edit form to following:

If(
   Form1_8.Mode = FormMode.View || ThisItem.'Created By'.Email = "MY@Email.com" || ThisItem.'Created By'.Email = "MY11@Email.com",   // Modify formula here
   Parent.Default,
   DateAdd(DataCardValue66.SelectedDate,14,Days)
)

 

Please consider take a try with above solution, check if the issue is solved.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Lefty
Impactful Individual
Impactful Individual

Hi @v-xida-msft 

 

Thanks for your response,

 

The issue with using your suggestion is, for clarity I forgot to mention I and the other user are both admins, so we need to always be able to edit all items not just those 'created by' myself.

Let me provide you with a scenario:

User1 completes a section of the form. I or the other user (both admins) then need to go to a different screen and enter some dates, by default, date1 is set to today and date2 set to 14days, both of these are editable by the admins.

Issue is when I revisit this same screen for the same item, the dates change, date1 becomes today and date2 becomes 14 days later.

Of course this is not how I want the form to function once its been saved. 

Hi @Lefty ,

OK, I got it. You want yourself and the other user could edit all items in your SP List rather than just these items you created, right?

 

Please consider modify the formula as below:

Set the DefaultDate property of the DatePicker control in your Edit form to following:

If(
   Form1_8.Mode = FormMode.View || Lower(User().Email) in Lower(["MY@Email.com", "MY11@Email.com"]),   // Modify formula here
   Parent.Default,
   Today()
)

Set the DefaultDate property of another DatePicker control in your Edit form to following:

If(
   Form1_8.Mode = FormMode.View || Lower(User().Email) in Lower(["MY@Email.com", "MY11@Email.com"]),   // Modify formula here
   Parent.Default,
   DateAdd(DataCardValue66.SelectedDate,14,Days)
)

Note: The User().Email formula would return current sign in user email. Compare it with the admin email addresses table, check if current sign in user is an admin.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@v-xida-msft 

 

>>OK, I got it. You want yourself and the other user could edit all items in your SP List rather than just these items you created, right?

 

From the way I read this, the requirement is to block the dates from being changed for submitted records, which is what would make sense in this scenario. Is that correct @Lefty?

 

Lefty
Impactful Individual
Impactful Individual

@timl 

 

Perfectly understood, I want to stop the dates from changing (calculating todays date, and +14 on the other date field) when I or other user have clicked save on the item.

 

Sorry if i was not clear

HI @Lefty ,

Do you want to block the Date1 field and Date2 field within your Edit form2?

 

Based on the needs that you mentioned, I think the DisplayMode property of the DatePicker control could achieve your needs. Please set the DisplayMode property of the DatePicker1 to following:

If(
   !IsBlank(ThisItem.Date1),
   DisplayMode.Disabled,
   DisplayMode.Edit
)

set the Displaymode property of the DatePicker2 to following:

If(
   !IsBlank(ThisItem.Date2),
   DisplayMode.Disabled,
   DisplayMode.Edit
)

Note: If the Date1 field and Date2 field are populated with proper value, the Date1 field and Date2 field would be blocked.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Lefty
Impactful Individual
Impactful Individual

hi @v-xida-msft 

 

I need to be able to edit the dates, well at least the date where it calculates +14 days

So potentially I can see your suggestion working for todays date field where its disabled, as it will pre-populate todays date when I or the other admin arrive on the form (but need help with getting the syntax right as the below doesn't work):

 

If(!IsBlank(ThisItem.FieldName, Parent.Default, Today());
   DisplayMode.Disabled,
   DisplayMode.Edit)



but the +14 days date field,  I need to allow myself and other admin to be able to change this before the item is submitted, once its been submitted I can then have both dates disabled for all users.

 

I dont believe this code allows the 2nd date field to be editable, as it will never be blank, but also does not calculate 14 days from the first date field:

If(
   !IsBlank(ThisItem.Date2),
   DisplayMode.Disabled,
   DisplayMode.Edit
)

 

Hi @Lefty ,

Has the Date2 field been populated with proper date value before you or the other user submit the form?

 

The ThisItem.Date2 formula is used to retrieve Date2 field value from your SP List, check if the Date2 field of current record has been populated with proper date value.

If the Date2 field of current record in your SP List itself has not been populated with proper date value before you or the other user submit the form, I think the formula I provided above could achieve your needs.

 

If the Date2 field of current record in your SP List itself has been populated with proper date value before you or the other user submit the form, and you want to edit the Date2 field, please modify the formula within the DisplayMode property of the second Date field to following:

If(
   IsBlank(ThisItem.Date2) || Not(Lower(ThisItem.'Modified By'.Email) in Lower(["MY@Email.com", "MY11@Email.com"])),
   DisplayMode.Edit,
   DisplayMode.Disabled
)

Note: You should check if the Date2 field is populated with proper value in your SP List itself rather than in your Edit form DatePicker control.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Lefty
Impactful Individual
Impactful Individual

hi @v-xida-msft 

 

Apologies, I misunderstood your message.

I've just changed the code, and clicked submit, so the data is now in SPO list, the code disabled the date fields, but when re-visting the same record, the fields were changed to today and added in the next date field +14 days this is my code currently :

DefaultDate:

 

Today()

 

DisplayMode:

 

If(!IsBlank(ThisItem.ColunName), DisplayMode.Disabled, DisplayMode.Edit)

 

 

DefaultDate:

 

 

DateAdd(DataCardValue66.SelectedDate,14,Days)

 

 

DisplayMode:

 

If(!IsBlank(ThisItem.Date2), DisplayMode.Disabled, DisplayMode.Edit)

 

 

I guess my issue is the same as my first post. I as the admin, want to be able to edit the date fields, only if the dates in the fields are not saved, but once i click submit and the data is written to SPO list, i want the dates not to change the next time, as an admin i re-visit the same record on the same screen

Helpful resources

Announcements
Power Apps News & Annoucements carousel

Power Apps News & Announcements

Keep up to date with current events and community announcements in the Power Apps community.

Community Call Conversations

Introducing the Community Calls Conversations

A great place where you can stay up to date with community calls and interact with the speakers.

Power Apps Community Blog Carousel

Power Apps Community Blog

Check out the latest Community Blog from the community!

Top Solution Authors
Top Kudoed Authors
Users online (1,602)