cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Impactful Individual
Impactful Individual

ForAll around working Patch yields "The specified column is not accessible in this context"

Please be so kind as to read my full post before responding.
Thank you for your consideration.

In one recently created PowerApp, App ID e57978ec-0038-4ca2-8231-96b457dde8c5, Session ID: d2f15613-ee29-40c8-a90b-0decfd0717a4, PowerApps 3.19051.14
image.png

I am encountering a strange issue trying to user Patch in a ForAll loop.

I am storing records of a custom entity that have been added or modified in a Collection LocalToSubmit (so that creation and modification is possible offline) and only patch those to the server with an extra button (which is disabled if Connection.Connected is false).
The Patch formula by itself is accepted by the App Checker.
However, putting the ForAll loop around this Patch statement doesn't seem to work.
I have attached some screenshots for a minimal example (app and session ids also for this example):
image.pngimage.png
I've tried using the diambiguation operator, but I don't know how to use that with a name like 'PowerFair-Leads'
image.png

and also don't know if that would help.

I don't remember having encountered this issue in older versions of PowerApps before Column names, GUID type, and new CDs features.

Please help me to get this kind of loop working again.

1 ACCEPTED SOLUTION

Accepted Solutions
Highlighted
Impactful Individual
Impactful Individual

Re: ForAll around working Patch yields "The specified column is not accessible in this context"

Played around with variations of placing the disambiguation operator @ in different places.
It appears, unless my memory is confusing me, as if disambiguation rules and name resolution have changed.
I don't remember having had to ever use disambiguation for global names before.
This works:
image.png

View solution in original post

7 REPLIES 7
Highlighted
Super User III
Super User III

Re: ForAll around working Patch yields "The specified column is not accessible in this context"

@SaWu 

In your Patch function when you are patching a datasource, you need to supply the record you want to patch, or a default record (Defaults(dataSource)) to patch and create a new (there are some variations on this, but this is sanctioned and working).

 

Consider changing your ForAll formula to the following:

ForAll(LocalToSubmit,
           Patch('PowerFair-Leads',
                     If(IsBlank(Lookup('PowerFair-Leads', kk_messeapp_leadid=LocalToSubmit[@kk_messeapp_leadid).kk_messeapp_leadid), 
Defaults('PowerFair-Leads'),
Lookup('PowerFair-Leads', kk_messeapp_leadid=LocalToSubmit[@kk_messeapp_leadid)
), { kk_notes: "Test" } ) )

In this formula, the base record parameter is determined by an If statement.  If a lookup of the record with the kk_messeapp_leadid returns blank, then we assume there is no record to patch and thus will use the Defaults function to provide the default values in creating a record.  If the record does exist, then we will lookup that record and use it as our base record.

 

I hope this is clear and helpful for you.

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
Highlighted
Impactful Individual
Impactful Individual

Re: ForAll around working Patch yields "The specified column is not accessible in this context"

Thanks for the response.
I just tried your suggestion and it doesn't work.

image.pngimage.pngimage.pngimage.png

Also, in my original post, I do supply a valid record to patch, and a default record can be replaced by 
As far as I know, it suffice to supply a partial record with just the guid.
This is also why in first the screenshot of my original post, you can clearly see that the App Checker accepts my first Patch statement that is using exactly this kind of patched record.
I only have a problem when the ForAll loop around it is added to the mix.

Highlighted
Super User III
Super User III

Re: ForAll around working Patch yields "The specified column is not accessible in this context"

@SaWu 

Your patch statement outside of the ForAll works because of a slightly known fact that you can supply an id to the Patch statement and, as long as there are no other required constraints, patch will use that to identify the record.

This is not going to fly in the ForAll the way that you are using it.

 

However...the formula I supplied is absolutely functional - I use it often in the same way.

Those error you are getting are deeper than the formula syntax or function.  They almost seem like the datasource has some invalid properties.

Here's what I would do...

1) Leave the designer and then come back in to edit the app.  Many times the designer gets completely confused and the only recovery is exit and come back.

2) Throw a test button on the screen and in the OnSelect action, put this same formula, except a) remove the ForAll construct b) replace the LocalToSubmit[@kk_messeapp_leadid] with a known leadid value.

3) Create a new App and connect to the datasource and use the exact same button and test as #2 in the app. 

 

Hopefully one of those steps will resolve or provide a clue.

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
Highlighted
Impactful Individual
Impactful Individual

Re: ForAll around working Patch yields "The specified column is not accessible in this context"

Nope, fresh app, even default entity, no working
Session ID: 7438bf16-3857-4433-a2ca-2e91842441be
PowerApps 3.19051.14

ClearCollect(LocalConcats, Kontakte);

Patch(Kontakte,
    { contactid: First(LocalContacts).contactid },
    { fullname: "test" }
);

ForAll([1,2,3], Patch(Kontakte,
    { contactid: First(LocalContacts).contactid },
    { fullname: "test" }
));

ForAll(LocalContacts, Patch(Kontakte,
    { contactid: contactid },
    { fullname: "test" }
));

ForAll(LocalContacts, Patch(Kontakte,
    If(IsBlank(LookUp(Kontakte, contactid=LocalContacts[@contactid]).contactid),
        Defaults(Kontakte), 
        LookUp(Kontakte, contactid=LocalContacts[@contactid])
    ),
    { fullname: "test" }
))

image.pngimage.pngimage.pngimage.pngimage.png

 

Highlighted
Super User III
Super User III

Re: ForAll around working Patch yields "The specified column is not accessible in this context"

@SaWu 

So, the key in this test was to remove the ForAll and use the formula I had mentioned.  

Here's what I would do...

1) Leave the designer and then come back in to edit the app.  Many times the designer gets completely confused and the only recovery is exit and come back. I assume you obviously did this.

2) Throw a test button on the screen and in the OnSelect action, put this same formula, except a) remove the ForAll construct b) replace the LocalToSubmit[@kk_messeapp_leadid] with a known leadid value. This step is key!

3) Create a new App and connect to the datasource and use the exact same button and test as #2 in the app.  I think you went to this step but not #2

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
Highlighted
Impactful Individual
Impactful Individual

Re: ForAll around working Patch yields "The specified column is not accessible in this context"

Played around with variations of placing the disambiguation operator @ in different places.
It appears, unless my memory is confusing me, as if disambiguation rules and name resolution have changed.
I don't remember having had to ever use disambiguation for global names before.
This works:
image.png

View solution in original post

Highlighted
Frequent Visitor

Re: ForAll around working Patch yields "The specified column is not accessible in this context"

after wasting a day of pulling my hairs on this silly thing ... your post has saved me.
You wont believe, but in another app (a while ago) i did without @ and its working fine to date.

that actually was driving me crazy that my same code is not working in another app.

 

thanks again.

 

Helpful resources

Announcements
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

Power Platform ISV Studio

Power Platform ISV Studio

ISV Studio is designed to become the go-to Power Platform destination for ISV’s to monitor & manage published applications.

secondImage

Power Platform 2020 release wave 2 plan

Features releasing from October 2020 through March 2021

Tech Marathon

Maratón de Soluciones de Negocio Microsoft

Una semana de contenido con +100 sesiones educativas, consultorios, +10 workshops Premium, Hackaton, EXPO, Networking Hall y mucho más!

Top Solution Authors
Top Kudoed Authors
Users online (7,507)