cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Helper II
Helper II

Re: write to sharepoint list

Hi the first version of the app is released, im currently working on another app so the topic may closed

View solution in original post

Highlighted
Advocate I
Advocate I

Re: write to sharepoint list

Hello Meneghino,

 

I was digging through the Power Users Community to try to find an alternative practice for updating a SharePoint list using Power Apps without using the "out of the box" form controls in Power Apps. As you stated in this thread, the forms can be difficult to customize and not very clean looking.

 

Your suggestion to the other thread stated that you would suggest possibly building a form from scratch, with controls. How exactly would you go about doing something like this, for writing to a SharePoint list? In other words, if you are using controls from scratch, how would you make it display what is already in that field in SharePoint and how would you tell it to update the field for that record back to SharePoint when it is changed? I have a pretty large app that I have been tasked with building and I would like to set it up the best way possible for end user performance and reliability. This app will have between 75 and 100 fields to update for one line item, which I plan on splitting among many screens. Any suggestions/recocomendation that you can provide would be extermly helpful.

 

Thanks,

Amy Jo

Highlighted
Community Champion
Community Champion

Re: write to sharepoint list

Hi @AJZoerner, basically I use the Patch function.  Let's start with a simple example:

 

1) Let's say you have a SharePoint list (BasicList) with the ID column (of type integer) and the Title column (of type text) only.

 

2) Connect BasicList to your new blank PowerApp

 

3) Create a text input (TextInputTitle)

 

3) Create a button and set its OnSelect property to:

Patch(BasicList, Defaults(BasicList), {Title: TextInputTitle.Text})

This will create a new record in the SP list every time you press button.  The ID field does not (and cannot) be specified since it is generated by SharePoint.

 

Once you have created a few items successfully, then add another text input (TextInputID) and another button with the following OnSelect:

Patch(BasicList, {ID: Value(TextInputID.Text)}, {Title: TextInputTitle.Text})

This second button will allow you to edit any existing records.

 

The above are just simple examples to show you how it works, please let me know how you get on.

 

By the way, if you plan to have a table with 75-100 fields, I would think if there is no better way to organise your data.  Are you sure you really need all those fields?  What sort of business process is it?

Highlighted
Advocate I
Advocate I

Re: write to sharepoint list

@Meneghino,

 

Thank you so much for you reply! This is very similar to what I am doing already, so it is reassuring that I am headed in the right direction. The biggest difference is that I was putting the patch function in the OnChange action of each field, which I think was slowing performance. I will take this approach and create a button that then updates all of the fields on that particular screen.

 

This app will be used for a final inspection in a manufacturing environment. There are many, many "double-checks" before the product goes out the door and we would like to streamline this process and go paperless.

 

Thank you again for you quick response!

 

Amy Jo

Highlighted
Community Champion
Community Champion

Re: write to sharepoint list

You are welcome @AJZoerner

 

In regards to PowerApps and performance, there are indeed many things that you can do to improve response times, for example caching of lookup tables.

 

Not for performance reasons, but for controlling execution, you can use the following syntax for the Patch call in the OnSelect property:

 

ClearCollect(PatchedRecords, Patch(BasicList, Defaults(BasicList), {Title: TextInputTitle.Text}))

This way the PatchedRecords collection will contain the patched record(s) including the new ID assigned by SharePoint, which you have no other certain way of obtaining.

 

In regards to your data structure, I understand that you are going to have a column for every inspection test.  If I may, I would suggest that this is not the ideal approach, particularly if the number of tests are "many, many".  This I imagine is also because the number and type of test may vary from product to product and also vary over time.  You do not want to change the structure of your database every time your testing process adds a new test.  The way to deal with that is to have for example five tables:

A) Products.

B) Orders (specific instances of A with production date, customer etc.)

C) Tests (e.g. Ultrasound, Non-destructive tension test, Surface polish etc.  so you can add any new ones if/when they get introduced)

D) Test_by_product, i.e. which test are required for which product (a lookup to both A and C so that you are sure all tests are done that need to be)

E) Test_results, your basic production log (results for single tests for a single production order of a specific product, a lookup to B and C)

 

Apologies for the unsolicited advice, but I believe this may be a little more work at the start but will make for a much more robust solution.

Highlighted
Advocate I
Advocate I

Re: write to sharepoint list

@Meneghino,

 

Thank you for your detailed reply.

 

Can you explain how you would cache the lookup tables within the app? I have quite a few lookup tables, so I think this may help speed. However, I cannot find any documentation on how to do so online.

 

I understand your data structure suggestions. However, these fields really need to be sourced from the same list. Once the inspectors on the factory floor complete the entire inspection, our office personnel needs to upload this information into our larger ordering program as a PDF. Since PowerApps does not currently support printing at this time, I've created a read-only InfoPath form that is connected to the inspection data list. This allows for the office personnel to have a printer-friendly version of the data  quickly and easily (I have created a button within the app that will take them right to the InfoPath form based on the ID of the item that is currently selected in a gallery). Should additions need to be made to the inspection requirements, I don't foresee it being an issue to simply add these additional fields to the list and incorporate them into the app.

Highlighted
Community Champion
Community Champion

Re: write to sharepoint list

@AJZoerner

 

If your lookup table has 500 rows or less, then you can simply use the following as the OnVisible property of your landing screen or as the OnSelect of a cache button:

ClearCollect(CachedLookupTable, LookupTable)

Then you just substitute CachedLookupTable instead of LookupTable wherever you use it.

 

If your lookup table has more than 500 rows, please see my post here, as well as other posts:

https://powerusers.microsoft.com/t5/PowerApps-Ideas/Storing-SQL-table-data-in-cache-memory-to-improv...

Highlighted
Regular Visitor

Re: write to sharepoint list

Hello, I am looking for a similar solution... I currently have an app that provides the managers and anyone who reports to her.

 

The idea of this app is pretty much to make a roll call for the managers.. so she would go on the app and toggle wether the certain employee is in that specific day. 

 

I want to learn how to connect all of these pieces together and send it back to a sharepoint list.

 

I hope that was decently clear.

Highlighted
Community Champion
Community Champion

Re: write to sharepoint list

Hi @MiliTech

 

Yes, this could easily be done.

 

For example:

1) Display the list of employees to be roll-called in a gallery (filtered by the manager using the app)

2) Place a checkbox in the gallery so that the manager can tick/un-tick the person's presence

3) Place a Patch/RemoveIf piece code in the OnCheck/OnUncheck property of the checkbox

 

Please let me know if you need more specific guidance.

Highlighted
Resolver I
Resolver I

Re: write to sharepoint list

@v-micsh-msft, I am tryint to write records into SharePoint list but failed to do so using Collect, Patch and combination of Collect and Clearcollect. I am able to write to the first column, ie. Title, but the next column shows an error with message "Column name does not exist". I am unable to debug the issue as I see everything fine in my SharePoint list and its columns names. 

 

Expecting suggestions, advice or any help !

Helpful resources

Announcements
secondImage

Demo-Extravaganza 2020

Check out these cool Power Apps & vote on your favorite!

secondImage

Robotic Process Automation

Let's talk about the solution provided by Microsoft for Robotic Process Automation (RPA)

secondImage

Community Highlights

Check out whats happening in Power Apps

secondImage

Community User Group Member Badges

FIll out a quick form to claim your community user group member badge today!

Top Solution Authors
Top Kudoed Authors
Users online (6,903)