cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Anonymous
Not applicable

Copying last entry to new dropdown

Hi All,

I have a Gallery that users then select to edit in a form. I would like them to be able to copy the last fields submitted to the form if they wish to.

I believe FormName.Updates is the way to go but as the form fields are all dropdowns I'm experiencing some issues.

This is what I've tried:

If(varCopy=true, Form2.Updates.CheckType, Choices([@'Observation Logs'].CheckType)

My logic being: If(the 'copy last entry' button has been pressed (the button updates =varCopy), use the last text submitted, otherwise just fill the dropdown as usual)

The problem seems to be with it being a dropdown?

Any suggestions? K

ev

1 ACCEPTED SOLUTION

Accepted Solutions

Hi @Anonymous ,

1)Do you want to change the item's background color if you select that item?

I'm afraid it's not supported in powerapps currently.

You could only change the whole gallery's background.

However, you could change one button's color based on different situation.

You could set the arrow button's Color:

If(Gallery2.Selected.ID=ThisItem.ID,Red,RGBA(0, 18, 107, 1))

Then, the arrow button's color will change to red (the item that you select ).

12163.PNG

 

2)Do you want to change that item's yes/no field based on whether date field is blank?

If so, you could set this formula:

If(!IsBlank(ThisItem.date),Patch(listname,ThisItem,{yes/nofieldname:true})

 

3)Do you want to set the form to the last record's value?

If so, you need to set the form's mode to Edit mode.

In this way, it could use last record directly.

However, you need to use Patch function instead of SubmitForm function to update records.

Or else, the form will be used to edit the last record, not create a new record.

If you are willing to use Patch function  to update:

Do not set the "add" button's OnSelect to NewForm(Form1), please change to 

EditForm(Form1);NewForm(Form2)

Set the form1's Item:

If(
    varCopy=true,
    Last(your_gallery_datasource)
)

set the form1's Visible:

If(
    varCopy=true,true,false)

set the submitbutton1's OnSelect:

Patch(listname,Defaults(listname),{...})

 set the submitbutton1's Visible:

If(
    varCopy=true,true,false)

 

set the form2's Visible:

 

If(
    varCopy=true,false,true)

 

set the submitbutton2's OnSelect:

 

SubmitForm(Form2)

 

 set the submitbutton2 s Visible:

 

If(
    varCopy=true,false,true)

 

To sum up, when varCopy=true, use form1 to create new item(patch), if varCopy=false, use form2 to create new item(submitform).

 

If you do not want to use patch function, then you could only set control's Default one by one.

What's more, please set Default property of your dropdown:

If(
    varCopy=true,
    Last(Filter(your_gallery_datasource,Completed = True)).CheckType.Value,
    Blank()
)

Since CheckType is a choice type, you need to use Last(tablename).fieldname.Value to get value.

 

 

 

 

Best regards,

Community Support Team _ Phoebe Liu
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

5 REPLIES 5
mdevaney
Community Champion
Community Champion

@Anonymous 

My idea would go something like this.

 

Leave this code as the Items property of your dropdown.  That's how it was initially right?

Choices([@'Observation Logs'].CheckType

 

Then we can change the Default property of the dropdown to look like this.

If(varCopy=true, Form2.LastSumbitCheckType, Blank())

 

My assumption here is you want the Last Submitted check type from the same session of app usage.  If the user powered-off/on their phone the Last Submitted info would not be retained.

 

---
Please click "Accept as Solution" if my post answered your question so that others may find it more quickly. If you found this post helpful consider giving it a "Thumbs Up."

 

Anonymous
Not applicable

Hi @mdevaney ,

Thanks for your help. The coding is fine (no errors. But it's not copying the last entry into the form.

This is a screen shot of a test app that I use to see how things work before putting them into the apps (I've added some labels to show what I have so far). I feel like I'm missing something blindingly obvious here, but it's not doing what I want.

 

Capture.PNG

Kev

@Anonymous 

I like your picture with the gallery because it gives me a different idea.  LASTSUBMIT will only retrieve the last CheckType submitted in the current session.  What you want instead is the CheckType from the value green colored gallery row.   So let's try something different.

 

Gallery3 shows a tickmark when some unknown condition is true.  For now lets assume for the tickmark only shows when a field named "Completed" equals True (its a Yes/No field in SharePoint).  We want to get the value of CheckType from the last green record in your Gallery3.  To do this we FILTER Gallery3 to show only records where "Completed" equals True.  Then we obtain CheckType from the last record of the filtered Gallery.

 

The code used to to do it would look something like this.

Last(Filter(your_gallery_datasource,Completed = True)).CheckType

 

You would put it here in the Default property of your dropdown.

If(
    varCopy=true,
    Last(Filter(your_gallery_datasource,Completed = True)).CheckType,
    Blank()
)

 

Fingers crossed.  I hope this works. 🙂

 

---
Please click "Accept as Solution" if my post answered your question so that others may find it more quickly. If you found this post helpful consider giving it a "Thumbs Up."

 

Anonymous
Not applicable

Hi @mdevaney ,

Thanks for the reply. However I have had to change things slightly. Sorry.

My plan to pre-populate the 'Time' column with 48 rows of info (07:00, 07:30 etc) has hit a snag, in that when testing on mobile devices it takes an absolute age to run the formula (due to the poor broadband coverage we get here). So I have had to rethink how I fill in the gallery of times.

The screenshot below shows how I've tried to address this. I have a Sharepoint list called 'StartUpData' which has columns for populating stuff like 'Supported Person' and '**bleep** Period' for example (I did this because of issues I came across using LookUp columns in power apps). I have created a 'Time' column with all the time variations in the list and used it for the Gallery_Time

 

Screenshot 2019-12-16 at 09.08.02.png

 

The edit symbol from the gallery updates the varObTime and this populates Time on Form4. I haven't worked out yet how change the background colour and to show a 'tick' once the form has been submitted. I might be able to use the Completed Y/N column you mentioned?

Your suggested solution was a little off as I need the gallery to show all of the times, whether completed or not.

On the matter of 'Copy Last Entry'. Could this be 'Copy THIS entry'? I'm looking at 'Collect' to see if I could put CheckType, Activity, Mood, and RAG into an array and then copy that to the next selected record. Is this possible do you think?

Sorry it's such a long post!

Kev

Hi @Anonymous ,

1)Do you want to change the item's background color if you select that item?

I'm afraid it's not supported in powerapps currently.

You could only change the whole gallery's background.

However, you could change one button's color based on different situation.

You could set the arrow button's Color:

If(Gallery2.Selected.ID=ThisItem.ID,Red,RGBA(0, 18, 107, 1))

Then, the arrow button's color will change to red (the item that you select ).

12163.PNG

 

2)Do you want to change that item's yes/no field based on whether date field is blank?

If so, you could set this formula:

If(!IsBlank(ThisItem.date),Patch(listname,ThisItem,{yes/nofieldname:true})

 

3)Do you want to set the form to the last record's value?

If so, you need to set the form's mode to Edit mode.

In this way, it could use last record directly.

However, you need to use Patch function instead of SubmitForm function to update records.

Or else, the form will be used to edit the last record, not create a new record.

If you are willing to use Patch function  to update:

Do not set the "add" button's OnSelect to NewForm(Form1), please change to 

EditForm(Form1);NewForm(Form2)

Set the form1's Item:

If(
    varCopy=true,
    Last(your_gallery_datasource)
)

set the form1's Visible:

If(
    varCopy=true,true,false)

set the submitbutton1's OnSelect:

Patch(listname,Defaults(listname),{...})

 set the submitbutton1's Visible:

If(
    varCopy=true,true,false)

 

set the form2's Visible:

 

If(
    varCopy=true,false,true)

 

set the submitbutton2's OnSelect:

 

SubmitForm(Form2)

 

 set the submitbutton2 s Visible:

 

If(
    varCopy=true,false,true)

 

To sum up, when varCopy=true, use form1 to create new item(patch), if varCopy=false, use form2 to create new item(submitform).

 

If you do not want to use patch function, then you could only set control's Default one by one.

What's more, please set Default property of your dropdown:

If(
    varCopy=true,
    Last(Filter(your_gallery_datasource,Completed = True)).CheckType.Value,
    Blank()
)

Since CheckType is a choice type, you need to use Last(tablename).fieldname.Value to get value.

 

 

 

 

Best regards,

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

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 (4,289)