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

Using FirstN expression

Based on my patch statement below:

 

Patch(
SPList,
Defaults(SPList),
{Photos: First(PhotoCollection).Image}
);

 

How could I use FirstN to capture a number of table records and not just the first record. This gives me an error:

 

Patch(
SPList,
Defaults(SPList),
{Photos: FirstN((PhotoCollection).Image), 10)}
);

 

Is it possible to use FirstN for this? This documentation does not seem to provide clear limitations: https://docs.microsoft.com/en-us/powerapps/maker/canvas-apps/functions/function-first-last

9 REPLIES 9
timl
Super User
Super User

Hi @DBJ 

If you have a collection with say, 50 records, and you want to Patch the first 10 to SharePoint, you can use the ForAll function to do this. Here's how the syntax would look...

ForAll(
       FirstN(PhotoCollection, 10),
       Patch(
             SPList,
             Defaults(SPList),
             {
               PhotoField: Image
             }
      )
)

 

Hi @timl ,

 

Thanks for the helpful info...my complete patching statement also includes other forms:

Patch(
SPList,
Defaults(SPList),
EditFormA.LastSubmit,
EditFormB.Updates,
{Photos: First(PhotoCollection).Image}
);

 

how would I fit those with the statement you provided for patching multiple photos with FirstN?

yashag2255
Dual Super User II
Dual Super User II

Hi @DBJ 

 

Can you try to use the expression as:

Patch(
SPList,
Defaults(SPList),
{Photos: FirstN(PhotoCollection,10).Image}
);

This will return a list of 10 pictures in the column. What is the type of "Photos" column? If you get an error, please share more details, so that we might be able to help you better.

Also, In case you are looking for a way to get the 10th photo, then the expression needs to be changed to:

Patch(
SPList,
Defaults(SPList),
{Photos: Last(FirstN(PhotoCollection,10)).Image}
);

 

Hope this Helps!

 

If this reply has answered your question or solved your issue, please mark this question as answered. Answered questions helps users in the future who may have the same issue or question quickly find a resolution via search. If you liked my response, please consider giving it a thumbs up. THANKS!

Hi @yashag2255 ,

 

Patch(
SPList,
Defaults(SPList),

EditForm1.LastSubmit,

EditForm2.Updates,
{Photos: FirstN(PhotoCollection,10).Image}
);

 

does not work, I get error "The function 'Patch' has some invalid arguments. The type of this argument 'Photos' does not match the expected type 'Text'. Found type 'Table'."

 

The SP column I'm trying to patch to is a multiline text column.

Hi @DBJ 

Can you just clarify what you want to achieve here?

For your SharePoint list SPList, is it the case that you want to add 10 new rows to this list? The 10 rows will include an image that corresponds to the first 10 rows in your PhotoCollection collection. For each record that you want to add SPList, you want to merge the other fields that come from EditFormA.LastSubmit and EditFormB.Updates.

If that's the case, this should theoretically work...

ForAll(
       FirstN(PhotoCollection, 10),
       Patch(
             SPList,
             Defaults(SPList),
             EditFormA.LastSubmit,
             EditFormB.Updates,
             {
               PhotoField: Image
             }
      )
)

Hi @timl ,

 

Ultimately, I'm trying to patch an entire photo collection to a multi-line text column in a SharePoint list item along with two other forms. Right now I'm able to patch all the fields from the two forms, but from the photo collection only one photo gets patched with First(PhotoCollection).Image into the list item.  I want to patch all the photos from the photo collection. I thought this would also be straightforward/possible using FirstN but having trouble formatting the statement within my patch statement. 

 

Thanks for the assistance!

yashag2255
Dual Super User II
Dual Super User II

Hi @DBJ 

 

There is a maximum limit on number of characters that can be saved in a Multiple Lines of Text column in SharePoint.

When you say, saving 10 images in the multiple line of text column, does it mean on the same record or it is 10 different records, with same data to the all the other fields and just different pictures?

In case this is 10 pictures in a single record, I would recommend you to use attachments and upload the images there.
You can do a concat function to add all the Images data seperated by two semi-colon as: Concat(PhotoCollection, Image, ";;") -> But this will not display the images properly and will not be a good approach to proceed with considering the limitation on number of characters.

In case, this is about creating 10 different records, you can update the expression to:

ForAll(
FirstN(PhotoCollection, 10),
Patch(
SPList,
Defaults(SPList),
EditFormA.Updates,
EditFormB.Updates,
{
PhotoField: Image
}
)
)

 

Hope this Helps!

 

If this reply has answered your question or solved your issue, please mark this question as answered. Answered questions helps users in the future who may have the same issue or question quickly find a resolution via search. If you liked my response, please consider giving it a thumbs up. THANKS!

Hi @DBJ 

I would agree with @yashag2255 - it's preferable to store images in attachments, or to store each image as a separate row in a list.

 

But if you want to try to combine all 10 images together, you could use the Concat function. According to this, we can use the comma symbol to separate base64 image strings.

https://stackoverflow.com/questions/5350590/best-way-to-separate-two-base64-strings 

 

Your Patch function would look like this.

Patch(
          SPList,
          Defaults(SPList),
          EditFormA.LastSubmit,
          EditFormB.Updates,
          {
            Photos: Concat(FirstN(PhotoCollection, 10), Photo & ",") 
          }
)


To retrieve the images, you could then then call the Split function

Split(CombinedPhotoString, ",")

 

Thanks for the helpful info @timl and @yashag2255 . I ended up using a separate list to store the images via an upload with a PowerApps/flow action and referencing the images list from the master list via a custom id field I created with the GUID() function. 

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,846)