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

Another post about Patching records to SP List from a Combo Box - only getting one row instead of "N"

Trying to create a button that will take selected values from a combobox in one SP list, and add the equivalent number of new records to a second SP list (i.e. 2 items selected, 2 new records in the SP list).  I have been searching for the answer and this was the only result I could get to work without any errors, but it takes all of the combobox values and lumps them together into one field/one record in the second SharePoint list instead of parsing them out.  For some reason this doesn't seem to be happening in any of the other posts I've come across - everyone else is getting the right number of rows, haha.    

Button OnSelect property:
ForAll(combobox.SelectedItems As alias, 
Patch(SP_List, Defaults(SP_List),
{test_field: alias.Result}));
Update property for the combobox datacard (I do want it to lump the selections into one field in the first SP list, so this is working as expected):
Concat(combobox.SelectedItems, Result & ";")
DefaultSelectedItems for combobox field (I don't know if this matters but it was the only way I could get the selections to retain in the Edit form):
{Result: ThisItem.columnName}
I have also tried creating a collection, but it still puts all of the PL4 IDs together in one field in the new list (alternative Button OnSelect property):
ForAll(combobox.SelectedItems, 
Collect(colIDsToPatch, 
{Value: ThisRecord.Result});
Patch(SP_List, Defaults(SP_List),
{test_field: ThisRecord.Result}));
Sorry for the long post, I feel like there is an obvious answer here, hoping it is something simple that I'm missing.
9 REPLIES 9
WarrenBelz
Super User
Super User

Hi @Stacey_T ,

What you have should work, however you can do it this way with much faster performance

Patch(
   SPList:
   ForAll(
      combobox.SelectedItems, 
      {test_field: Result}
   )
);

 

Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.

Visit my blog Practical Power Apps

 

Stacey_T
Helper I
Helper I

That too combined everything into one record and one concatenated field in SP_List.  

Stacey_T
Helper I
Helper I

So after doing a little more testing...  

 

Scenarios where it WORKS:

  • A new item is in the process of being completed.  While still in the new item, someone clicks on the button, THIS adds the combobox's items to their own row on the other list.  

Scenarios where it doesn't work:

  • A new item is submitted; someone goes in to edit the item after submission, clicks the button (adds all combobox's items to one field)

Naturally, it's the second scenario that I need to be correct, the first should never happen, the button was only available to me because I had it in Dev.  Is this because of the way I have my Update property?  

HI @Stacey_T ,

Sorry I am a little lost what you are trying to do. What is the result you want ?

I have an intake form for submitters to make requests.  This combo box will be part of the new item form for them to fill out, but I don't want anything else done with the combo box at this stage.

When someone on my team receives the request, I want them to be able to review the contents of the combo box (via edit form), make any corrections if necessary, and then press a button to create the rows from the combo box into a 2nd SharePoint list.  

HI @Stacey_T ,

Why I was a bit confused is that the code I provided will write separate records (as per your requirements) - please see the test I did below

WarrenBelz_0-1651451003971.png

 

WarrenBelz_1-1651451024010.png

I also just tested it on an existing item (using existing values in the field ion the Combo Box) and got the same result.

What are the Items and DefaultSelectedItems of the Combo Box and what type of field (I assume a multi-choice) are you writing back to?

 

Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.

Visit my blog Practical Power Apps

 

 

 

So under the current setup, your earlier provided solution (copied below) works as long as the form hasn't been saved/submitted yet.  I will need a SharePoint record that already has combo box values populated, to be able to patch to a second list upon editing the form.      

Patch(
   SPList:
   ForAll(
      combobox.SelectedItems, 
      {test_field: Result}
   )
);

But I am not able to use "Value" as you did in your most recent example.  

Stacey_T_0-1651531521850.png

Items property for the combo box:  Maybe this is the pain point, it is a lookup to another SP list of values (all text):  Sort(Distinct('Another List',Title),Result)

DefaultSelectedItems: {Result: ThisItem.My_ID} (I noticed I had to do this to retain the values in the Edit form, otherwise the combo box was just blank)

Trying to write the contents to a single line of text field

 

I notice that in a New Form (the version that works that I don't need), the combo box populates like this:

Stacey_T_1-1651531838960.png

Whereas editing an existing record, the combo box looks like this:  

Stacey_T_2-1651531920618.png

Is this because the update property of my datacard is Concat(combobox.SelectedItems, Result & ";") and should it be something else?  

 

Hi @Stacey_T .

I have just re-read your post - you are not posting to a Choices column, but rather a Text column with concatenated values (which is a workaround these controls were never really designed for) - I have a blog on this.

Unfortunately, there are limitations (including being able to add or delete individual items - you have to delete all and re-select) and you have found another one. The Items you are seeing in the box on an existing record are not really "selected" and therefore you get the result you have.

If you want to achieve your requirement, you will need to go back to a Choice column. I have tested this option with your code (on a multi-choice column) with the Items

RenameColumns(
    Sort(
        Distinct(
            ListName,
            FieldName
        ),
        Result
    ),
    "Result",
    "Value"
)

The DefaultSelectedItems

Parent.Default

and the Patch

Patch(
    OtherListName,
    ForAll(
        ComboBoxName.SelectedItems,
        {Title: Value}
    )
);

and it works perfectly on both.

 

Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.

Visit my blog Practical Power Apps

Stacey_T
Helper I
Helper I

Thanks, I will take a look at your blog post.  I guess I'm not doing a very good job at communicating my requirements.  

Helpful resources

Announcements
Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Difinity Conference 2022

Difinity Conference 2022

Register today for two amazing days of learning, featuring intensive learning sessions across multiple tracks, led by engaging and dynamic experts.

European SharePoint Conference

European SharePoint Conference

The European SharePoint Conference returns live and in-person November 28-December 1 with 4 Microsoft Keynotes, 9 Tutorials, and 120 Sessions.

Power Apps Ideas

Changes to Ideas Coming

We are excited to announce a new way to share your ideas for Power Apps!

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