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

How to patch data gathered from a dropdown using ForAll(Patch())

I am trying to ForAll(Patch()) some data that includes data from a dropdown. Patching data from a text field is easy: 'Datasource column name':'Collection column name' as in StreetAddress: StreetAddress. This is not working for values gathered from dropdowns. When I try this, I get the following fail warning:
"...does not match the expected type 'Record'. Found type 'Text'.

BenDonahue_0-1606930681137.png

 

I have a similar problem with a value gathered from a binary dropdown, except this time it is a Control data type:

BenDonahue_0-1606931223901.png

 

 

The Question

How do I save Boolean, dropdown and multi-select data to a collection using a ForAll(Patch()) structure?

Thank you for you assistance with this issue. It is greatly appreciated.
(@Pstork1 , having helped me with something similar earlier, I thought you might be able to cast some illumination on this subject)

 

 

3 ACCEPTED SOLUTIONS

Accepted Solutions
Super User III
Super User III

@BenDonahue 

Firstly, I would avoid naming controls with the same name of column names in the data, this will avoid confusion and naming conflicts.

Also, I am not sure what you are doing with that original collect statement you have, but I would get rid of that with great speed.  That is a harbor of problems to come.

 

That said, for the two columns - CovidKnowledge and DoorAnswer - you will need to format those with a valid record for a Choice column.

So, for your DoorAnswer, you need to set it as such:

DoorAnswer: {Value: DoorAnswer.Selected.Value, '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference"}

 

For the CovidKnowledge, it would be the same thing, but I am not sure what that is based on exactly.  You said "Record" in your response, but also "Dropdown".  So that is a little confusing.

But, if it is a DropDown, then the same applies for that one:

CovidKnowledge: {Value: CovidKnowledge.Selected.Value, '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference"}

 

_____________________________________________________________________________________
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.
Check out my PowerApps Videos too!

View solution in original post

Super User III
Super User III

@BenDonahue 

No worries and welcome to the PowerApps world - there's a lot of butter for the bread (or I should say a lot of "bread" to be made from the butter)!

 

So I am not sure what you are doing with the 

Collect(colCollection, "LocalFileName")

What you will get from this is a table called colCollection that has a single column called Value with one row with the Value "LocalFileName".

I am not sure if you are being generic or if there is an actual problem you are trying to solve with that.  If it has to do with LocalFiles - give that concept up now, PowerApps cannot access local files.

 

BUT...

Some Tips:

I usually avoid collections for the concept of pulling in records and then writing them back - it's redundant.

They have their purpose for sure, but get overused.

If you create a collection from a datasource, the collection will have the schema of that datasource.  You never have to explicitly define them, PowerApps infers them automatically.

 

Always refer to things you already have.  For example, if you have calculated a value in a property, let's say a Visible property, to determine if something should be visible or not, don't duplicate (copy/paste) the formula to another control that you want to have the same visibility for.  Instead, have the visible of the other controls refer to the visible property of the control where you have the formula.  Similarly, if you have some complex calculations or formulas for other values you need, put them in a Label and then refer to that value when you need it - skip the variables all the time they will just become a pain to deal with.

 

Dropdowns, Comboboxes, Galleries, Listboxes, etc, etc.  are all lists - they always need Tables for their items.  And you will see a plural Items property where you set them - and they must be tables. Tables ALWAYS have records.  So, if you refer to a properties that are singular such as Selected, it will always be a record.  If you refer to properties that are plural such as SelectedItems, it will be a table of records.

 

I could rattle off a million other tips, but those seem relative to what you are working on, so I will put them at that.

I am continuing to put together videos to address some of these specific aspects and tips.  It takes a while to do them, so as time permits!  Feel free to check them out.  They might give you some good insight for things you are doing or going to do.

 

_____________________________________________________________________________________
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.
Check out my PowerApps Videos too!

View solution in original post

@RandyHayes, I apologize for ghosting on you like that, especially as you are taking time from your day to help; I got called away from that task unexpectedly.

 

Regarding this part:

 

Collect(colCollection, "LocalFileName")

 

I was trying to do this:

 

SaveData(colCollection, "LocalFileName")

 

as part of making the app offline capable.

As to the other issues, most of it turned out to be a schema issue that was reset once I (finally) tracked down and deleted the last Collect.

I appreciate your direct help with my specific problem, in addition to your advice and wise words; thank you, and, see you around.

View solution in original post

8 REPLIES 8
Super User III
Super User III

@BenDonahue 

Some remaining questions:

1) What is CovidKnowledge defined as in your datasource?

2) What is CovidKnowledge defined as in your App?

3) What is DoorAnswer defined as in your datasource?

4) I know DoorAnswer is a control in your App, but what kind?  And what is the Items property for it (assuming a dropdown or other list-based control)?

 

_____________________________________________________________________________________
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.
Check out my PowerApps Videos too!

 

CovidKnowledge - List: Choice   App: Record , Dropdown

DoorAnswer - List: Choice   App: Control , Dropdown    Items: ["Yes","No"]
@RandyHayes , below this is possibly extraneous information, but included just in case.

-------------------------------------------------------------------------------------------------------------------------

Dunno if you need it or if it is helpful, but here is an overview:
(This is the one and only time I am doing this, but I am using a form that crosses over 25 pages)

  1. Data is gathered from users using, among other methods of data entry, dropdowns.
  2. This data is Collected to a collection, including the start time of the survey
  3. On page 2 and up, data that is collected is patched to that same row using the start time as the key.
  4. At the end of the survey, the complete data set is saved to a local file (this is for offline functionality)
  5. After this save, there will be 1 or more records will be in the local file
  6. I erase the collection, then re-load it with all the data in the local file
  7. I then ForAll(Patch()) the data, and here is where it gets weird.

          - Text turns into Control data type

- Date turns into Text data type

          - Dropdowns, which are record data type, won’t take the value that was gathered from the drop-down because it is saved as a text data type.

Of course, when I try to put the wrong data type into a SharePoint list, it won’t compile.

 

I honestly forget why I thought I had to do this, but on Page1 I initialize all the column headers for the collection; these are exactly the same as the SP List:

ollect(
colCovidTeamSavedItems,
{
StartTime: varStartTime, SurveyCompletionTime: "", SubmittedBy: User().Email, SubmissionDateTime: "", StreetAddress: Proper(DataCardValue48.Text), StreetAddress2:DataCardValue49.Text, City:Proper(DataCardValue50.Text), SState:Proper(DataCardValue2.Text), Zip:DataCardValue3.Text, DoorAnswer: {Value: DataCardValue51.Selected.Value}, LanguageIssue:"", WillingToSpeak:"", CovidKnowledge:"", CurrentlyPositive:"", CurrentCOVIDIsolateSafely:"", PreviousCOVIDTestPositive:"", PreviousCOVIDIsolateSafely:"", TwoWeekCOVIDExposure:"", NumExposed:"", QuarantineSafely:"", CurrentConcernsOther:"", IfSickCanIsolate:"", PreExistingCondition:"", HasPCP:"", NumPeoplePreExistingCondition:"", NumAdults:"", NumChildren:"", HelpGrowKnowledge:"", CovidKnowledgeAfterVisit:"", HelpGrowKnowledgeOfResources:"", WillUseResourcesDescribed:"", MinutesSpent:"", CCFoodSecurity: false, CCPayingRent: false, CCHealthConcerns: false, CCMeds: false, CCTransportation: false, CCNoConcerns: false, LSSpanish: false, LSCreole: false, LSMaam: false, LSOtherMayan: false, LSOtherLanguage: false, LSEnglish: false, RaceAfricanAmerican: false, RaceWhite: false, RaceNativeAmerican: false, RaceAsian: false, RaceNativeHawaiian: false, RaceOtherPacificIslander: false, RaceDecline: false, EthnicityHispanic: false, EthnicityNotHiospanic: false, EthnicityDecline: false, MatsMasks: false, MatsGloves: false, MatsEdMats: false, MatsFarmPackage: false, MatsNone: false, HPIntroductions: false, HPCOVID19Symptoms: false, HPCOVID19Transmission: false, HPCOVID19InImmokalee: false, HPPrevention: false, HPTesting: false, HPInHouseTestsPositive: false, HPResources: false

}
);

Super User III
Super User III

@BenDonahue 

Firstly, I would avoid naming controls with the same name of column names in the data, this will avoid confusion and naming conflicts.

Also, I am not sure what you are doing with that original collect statement you have, but I would get rid of that with great speed.  That is a harbor of problems to come.

 

That said, for the two columns - CovidKnowledge and DoorAnswer - you will need to format those with a valid record for a Choice column.

So, for your DoorAnswer, you need to set it as such:

DoorAnswer: {Value: DoorAnswer.Selected.Value, '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference"}

 

For the CovidKnowledge, it would be the same thing, but I am not sure what that is based on exactly.  You said "Record" in your response, but also "Dropdown".  So that is a little confusing.

But, if it is a DropDown, then the same applies for that one:

CovidKnowledge: {Value: CovidKnowledge.Selected.Value, '@odata.type': "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference"}

 

_____________________________________________________________________________________
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.
Check out my PowerApps Videos too!

View solution in original post

Well, would you mind clearing somethings up for me, then, please?

I thought that naming the columns in the collection the same as in the file would make it easier to append one to the other with:

Collect(colCollection, "LocalFileName")

 As you might have guessed, that did not work; please advise.

DoorAnswer was gathered by a dropdown, and PowerApps says it is a Record; I think that all of my dropdowns are Records.

I am unsure to which Collect call you are referring. As I am very early in my experience with Power Apps, and as it will be my bread and butter for the foreseeable future, I really want to develop the habits that will keep me from visiting, or creating, any harbors full of problems, so I appreciate the advice, for sure.

 

Super User III
Super User III

@BenDonahue 

No worries and welcome to the PowerApps world - there's a lot of butter for the bread (or I should say a lot of "bread" to be made from the butter)!

 

So I am not sure what you are doing with the 

Collect(colCollection, "LocalFileName")

What you will get from this is a table called colCollection that has a single column called Value with one row with the Value "LocalFileName".

I am not sure if you are being generic or if there is an actual problem you are trying to solve with that.  If it has to do with LocalFiles - give that concept up now, PowerApps cannot access local files.

 

BUT...

Some Tips:

I usually avoid collections for the concept of pulling in records and then writing them back - it's redundant.

They have their purpose for sure, but get overused.

If you create a collection from a datasource, the collection will have the schema of that datasource.  You never have to explicitly define them, PowerApps infers them automatically.

 

Always refer to things you already have.  For example, if you have calculated a value in a property, let's say a Visible property, to determine if something should be visible or not, don't duplicate (copy/paste) the formula to another control that you want to have the same visibility for.  Instead, have the visible of the other controls refer to the visible property of the control where you have the formula.  Similarly, if you have some complex calculations or formulas for other values you need, put them in a Label and then refer to that value when you need it - skip the variables all the time they will just become a pain to deal with.

 

Dropdowns, Comboboxes, Galleries, Listboxes, etc, etc.  are all lists - they always need Tables for their items.  And you will see a plural Items property where you set them - and they must be tables. Tables ALWAYS have records.  So, if you refer to a properties that are singular such as Selected, it will always be a record.  If you refer to properties that are plural such as SelectedItems, it will be a table of records.

 

I could rattle off a million other tips, but those seem relative to what you are working on, so I will put them at that.

I am continuing to put together videos to address some of these specific aspects and tips.  It takes a while to do them, so as time permits!  Feel free to check them out.  They might give you some good insight for things you are doing or going to do.

 

_____________________________________________________________________________________
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.
Check out my PowerApps Videos too!

View solution in original post

@RandyHayes ,
I did not have the kind of luck with the above code as we would have liked:

BenDonahue_0-1607087663539.png

We are probably really close, though, right? I know I awarded you the Solution already (twice); would you mind helping me through this last little bit to success, please?
Thank you for all your help, past, present and (hopefully) future.

 

 

Super User III
Super User III

@BenDonahue 

No problem - always glad to help. 

So, from the image, it appears that it is not seeing the DoorAnswer properly.  You said that DoorAnswer is a dropdown (or combobox) in your app.  Please verify.  Also, consider renaming it as this is going to be confusing that the control and the data column are the same name.

_____________________________________________________________________________________
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.
Check out my PowerApps Videos too!

@RandyHayes, I apologize for ghosting on you like that, especially as you are taking time from your day to help; I got called away from that task unexpectedly.

 

Regarding this part:

 

Collect(colCollection, "LocalFileName")

 

I was trying to do this:

 

SaveData(colCollection, "LocalFileName")

 

as part of making the app offline capable.

As to the other issues, most of it turned out to be a schema issue that was reset once I (finally) tracked down and deleted the last Collect.

I appreciate your direct help with my specific problem, in addition to your advice and wise words; thank you, and, see you around.

View solution in original post

Helpful resources

Announcements
secondImage

Experience what’s next for Power Apps

Join us for an in-depth look at the new Power Apps features and capabilities at the free Microsoft Business Applications Launch Event.

Power Apps Community Call

Power Apps Community Call: February

Did you miss the call? Check out the Power Apps Community Call here.

New Power Super Users

Congratulations!

We are excited to announce the Power Apps Super Users!

New Badges

New Solution Badges!

Check out our new profile badges recognizing authored solutions!

Top Kudoed Authors
Users online (24,761)