cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

adding collection data to sharepoint list from a form

Hi,

I'm trying to write the function for the submit button to add a new record to a sharepoint list from a form.

the first part is straight forward the formula grabs all the data from the inputs for each column in the sharepoint list but i have 2 columns that need to be filled by a collection.

 

this formula works for the first part:

 

 

 

ForAll (Resource, Patch('IT Resource booking',Defaults('IT Resource booking'),{Class_Name: Class_In.Text, Staff_Name: Book_Staff_In, Booked_Out: Value(DateTime_In.Text)}))

 

 

 

 next i have two columns named Resource and Resource_code and i need to get this information from the collection i have created called Resource and with in the collection i need Title to = Resource and Resource to = Resource_Code in the sharepoint list and if more than one item is in the collection it needs to created a new record for each item in the collection using the same input details for the rest.

 

i have tried to reference the collection using Resource: [@Resource].Title but i get The type of this argument 'item' does not match the expected type 'Table'. Found type 'Error'.

 

another error message I get is - Name isn't valid. This identifier isn't recognized

 

I'm really lost now i have been working on this all day so I'm giving my brain a rest and hopefully in the morning one of you wonderful people will point me in the right direction...

 

thanks

Michael

1 ACCEPTED SOLUTION

Accepted Solutions

Collect('IT Resource booking',
    ForAll(Resource, 
        {Class_Name: Class_In.Text, 
         Staff_Name: Book_Staff_In.Text, 
         Booked_Out: Value(DateTime_In.Text), 
         Resource: Description, 
         Resource_Code: Resource
        }
    )
)

@Mpowis 

Well, in general, an EditForm is going to be your friend when it comes to doing these type of things.  But, since you have put the effort into what you have, getting that to work would be good.

 

As you're trying to learn, avoid using collections and variables as much as you can.  I know all the docs and examples and way too many videos and blogs use them, but they use them either to demonstrate a concept or just plan incorrectly.  Think Excel!  Which is what PowerApps is built around.  You can read more about that from the program manager for PowerApps and the formula builder.

 

But looking at some of the formulas you did provide, this is a functional equivalent to what you were trying to do, but better performing and easier to maintain.  Note, this is based completely on what you had before.

Collect('IT Resource booking',
    ForAll(Resource, 
        {Class_Name: Class_In.Text, 
         Staff_Name: Book_Staff_In.Text, 
         Booked_Out: Value(DateTime_In.Text), 
         Resource: Description, 
         Resource_Code: Resource
        }
    )
)

 

NOW, the better approach is to have the correct column names and values in your collection (again, if you are going to use a collection - some cases need it, but don't overuse).

 

So, when you are collecting the value, make sure the columns names you use are EXACTLY the same as in your datasource.

Collect(Resources,
  {Class_Name: Class_In.Text,  
   Staff_Name: Book_Staff_In.Text, 
   Booked_Out: Value(DateTime_In.Text), 
   Resource: Description.Text, 
   Resource_Code: Resource.Text
  }
)

Above assumes that all of the column names are just as the real names are in your datasource.

Then your submit formula is simply this:

Collect('IT Resource booking',  Resources)

All the rest will be done for you.

 

Hopefully that is helpful and clear.

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
NOTE: My normal response times will be Mon to Fri from 1 PM to 10 PM UTC (and lots of other times too!)
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Really want to show your appreciation? Buy Me A Cup Of Coffee!

View solution in original post

10 REPLIES 10

@Mpowis 

If you have designed your form correctly, the submit button should have only SubmitForm(formname) in it.

@Mpowis 

Out of curiosity, you mention "from a form".  Are you using an EditForm?  If so, then this should all be done with the SubmitForm function.

If not, then can you describe these collections that you mention?  How are they created and what are the columns there and how would you lookup one of the records that you want from it?

And finally, what type of columns do you have in your SharePoint list that you are trying to update?  Are any of them Choice, Lookup or any other complexType?

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
NOTE: My normal response times will be Mon to Fri from 1 PM to 10 PM UTC (and lots of other times too!)
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Really want to show your appreciation? Buy Me A Cup Of Coffee!

Hi @RandyHayes ,

i created a custom form:

PowerApp Booking 3.png

Gallery 1 allows the user to select a class and teacher name, once selected it appears next to the Class: and Teacher: labels.

Then the member of staff booking out the resource can type in their own name and then scan the barcodes on the resources, scanning the barcode validates against another sharepoint list and if valid a button named Select appears next to Scan Result:

When the resource is Selected it the appears in Gallery 2 as a collection and you can continue to book out resources before finally submitting the form.

(Class for example would book out several laptops)

 

The SharePoint list this information is being put in is called 'IT Resource Booking'

Its Columns are:

ID - Auto Fill

Class_Name - Text

Staff_Name - Text

Resource - Text

Resource_Code - Text

Booked_Out - Yes / No

Booked_In - Yes / No

 

Ultimately the form would be filled in like:

class = Maple

Staff = Jim Bob

<Collection>

Title = Red Laptop

Description = Laptop

Resource = R124367

 

Title = Blue Laptop

Description = Laptop

Resource = R287624

 

Title = Yellow Laptop

Description = Laptop

Resource = R263589

 

then in the sharepoint list displayed like this:

ID   Class_Name   Staff_Name  Resource             Resource_Code  Booked_Out  Booked_In

1     Maple            Jim Bob        Red Laptop         R124367             Yes                No

2     Maple            Jim Bob        Blue Laptop        R287624             Yes                No

3     Maple            Jim Bob        Yellow Laptop    R263589              Yes                No

 

The idea is when they are returned they can be scanned back in and update the Booked Out / In Columns           

Ok so a quick update this was a column issue on my SharePoint list i had set them up as choices and number rather than Text so once i corrected this the formula no longer errors out, shows what a good nights sleep can do to refresh the brain lol

 

but i still have an issue that when i submit the form it doesn't input all the information I'm asking for, its filling all the columns in like the example below except the Resource column

 

ID   Class_Name   Staff_Name  Resource             Resource_Code  Booked_Out  Booked_In

1     Maple            Jim Bob                                   R124367             Yes                No

2     Maple            Jim Bob                                   R287624             Yes                No

3     Maple            Jim Bob                                   R263589              Yes                No

 

Below is the code for the submit button and you can see the column is referenced Resource: and then the collection information is called Description.

 

PowerApp Booking 4.png

in the above picture the collection references are:

Description = Sony Head Phones Red

Type = Other

Resource = R4905524942156

 

Submit Button Code:

orAll (Resource, Patch('IT Resource booking',Defaults('IT Resource booking'),{Class_Name: Class_In.Text, Staff_Name: Book_Staff_In.Text, Booked_Out: Value(DateTime_In.Text), Resource: Description , Resource_Code: Resource}))

 

@Mpowis 
Yes, I would say there is an issue with this...you start out with a ForAll(Resource statement (which is not the correct use of a ForAll), but what is Resource?  Because, you then us it in the Patch (which you don't need) as a value for the Resource_Code column.  So, if you are ForAll'ing on a Table called Resource then I am assuming your Resource_Code column would be a table column...which it is not, it is text.

So, can you provide more information on the "Resource" that you show in the formula?

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
NOTE: My normal response times will be Mon to Fri from 1 PM to 10 PM UTC (and lots of other times too!)
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Really want to show your appreciation? Buy Me A Cup Of Coffee!

Hi Randy,

sorry really new at PowerApps so its being a steep learning curve for me, the Resource is the collection i create when a resource is selected.

I believe i have called to many things resource so its getting confusing but for the fact this maybe incorrect way of doing it its working, but i want to know how to do it correctly if you could advise a better method of doing this?

 

thanks

Michael

Collect('IT Resource booking',
    ForAll(Resource, 
        {Class_Name: Class_In.Text, 
         Staff_Name: Book_Staff_In.Text, 
         Booked_Out: Value(DateTime_In.Text), 
         Resource: Description, 
         Resource_Code: Resource
        }
    )
)

@Mpowis 

Well, in general, an EditForm is going to be your friend when it comes to doing these type of things.  But, since you have put the effort into what you have, getting that to work would be good.

 

As you're trying to learn, avoid using collections and variables as much as you can.  I know all the docs and examples and way too many videos and blogs use them, but they use them either to demonstrate a concept or just plan incorrectly.  Think Excel!  Which is what PowerApps is built around.  You can read more about that from the program manager for PowerApps and the formula builder.

 

But looking at some of the formulas you did provide, this is a functional equivalent to what you were trying to do, but better performing and easier to maintain.  Note, this is based completely on what you had before.

Collect('IT Resource booking',
    ForAll(Resource, 
        {Class_Name: Class_In.Text, 
         Staff_Name: Book_Staff_In.Text, 
         Booked_Out: Value(DateTime_In.Text), 
         Resource: Description, 
         Resource_Code: Resource
        }
    )
)

 

NOW, the better approach is to have the correct column names and values in your collection (again, if you are going to use a collection - some cases need it, but don't overuse).

 

So, when you are collecting the value, make sure the columns names you use are EXACTLY the same as in your datasource.

Collect(Resources,
  {Class_Name: Class_In.Text,  
   Staff_Name: Book_Staff_In.Text, 
   Booked_Out: Value(DateTime_In.Text), 
   Resource: Description.Text, 
   Resource_Code: Resource.Text
  }
)

Above assumes that all of the column names are just as the real names are in your datasource.

Then your submit formula is simply this:

Collect('IT Resource booking',  Resources)

All the rest will be done for you.

 

Hopefully that is helpful and clear.

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
NOTE: My normal response times will be Mon to Fri from 1 PM to 10 PM UTC (and lots of other times too!)
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Really want to show your appreciation? Buy Me A Cup Of Coffee!

Hi Randy,

thank you for this information i updated the code to the better practice you listed above, but it doesn't work, the first part you suggested for the collecting of the inputs works and creates the collection but the Submit button isn't submitting the data to IT Resource booking List?

 

This is the Select button:

PowerApp Booking 4 select code.png

 

This is the Submit button:

PowerApp Booking 4 submit code.png

 

This is the SharePoint List the submit should send the data too:

PowerApp Booking 4 booking list.png

the data in the list is from my earlier testing.

any idea why it won't submit the data? I checked the names were correct and value types (.Text)

 

The message I'm getting is the specified column 'Class_Name' does not exist. The column with the most similar name is 'Class_Name'.

 

thanks again Randy as i said i would like to learn the correct way to use formulas in my Apps

Hi Randy,

I did some more investigating and it turns out that PowerApps was searching for the Internal Column name and not the name I renamed it too, so Class_Name used to be Title, once I referenced Title instead it submitted it to the booking list.

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!   This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08  23 @WarrenBelz  31 @DBO_DV  10 @Amik  19 AmínAA 6 @mmbr1606  12 @rzuber  4 @happyume  7 @Giraldoj  3@ANB 6 (tie)   @SpongYe  6 (tie)     Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08  10@WarrenBelz 25 @DBO_DV  6@mmbr1606 14 @AmínAA 4 @Amik  12 @royg  3 @ANB  10 @AllanDeCastro  2 @SunilPashikanti  5 @Michaelfp  2 @FLMike  5 @eduardo_izzo  2   Meekou 2   @rzuber  2   @Velegandla  2     @PowerPlatform-P  2   @Micaiah  2     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27     Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8   SunilPashikanti8

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages