Hi, I think I understand what you're asking and I may be able to help. If I understand correctly, you have a canvas app where you are gathering information and saving all of that information to a table called "Conflict of Interest". You want to save to the same record on that table each time the user completes a form on a page, but you are using information from the first page to find that record and you don't want to ask it again on each page.
If my understanding is correct, here is what I would do. Bear in mind, canvas apps are not my strongest suit. You need to figure out which record is being worked on and store it in a variable (store the unique identifier, aka the GUID, then on each page you can do a Patch function where you simply use that guid to find which record to update.
I'm having a hard time picturing the end to end process. Is this an app that many people will have access to, but they can only ever modify their own record? Or will someone be using a gallery to look through multiple records, editing them, and maybe there is a "new" button to add a record?
Regardless, whenever the first action is taken that decided what record we are editing, you want that button to set a Global Variable by using a formula such as:
Patch( 'Conflict of Interests', First( Filter('Conflict of Interests', 'First Name' = txtFName.Text , 'Last Name' = txtLName.Text) ), { Phone: txtPhone.Text, Email: txtEmail.Text } );
Set('CurrentConflictGUID',First(Filter('Conflict of Interests', 'First Name' = txtFName.Text , 'Last Name' = txtLName.Text)).ConflictOfInterest);
This is placeholder code, your fields and inputs will be differently named. But this basically says "When we click this button, find the first COI record where the fields on that record match the info in these fields (first and last name here), and then update the fields on it with some info from this form (the phone number and email). Then, set a global variable called CurrentConflictGUID, and set its value to the guid of whatever record meets the same criteria we used before. If you're not familiar, most records have a Unique Identifier field which is named the same as the table. That is why when setting the variable's value, we want to filter down to a single record, and then use a period to access a field called "ConflictOfInterest" on that record. This should be the GUID, but it may take some troubleshooting to get right.
Now, you have the guid saved somewhere. We can access that from any page. So on your next page, the submit button or whatever should be something like this:
Patch('Conflict of Interests', LookUp('Conflict of Interests', 'Conflict of Interest' = CurrentConflictGUID, { SomeField: txtField1.Text, SomeOtherField: txtField2.Text }));
Navigate(NextScreen);
This updates the first (and only) record where the GUID matches the GUID we saved to our variable. We can use different fields for the update payload (the last argument in the patch function, surrounded by curly braces) depending on what info is on the page.
Take close note of when I used 'Conflict of Interest' versus 'Conflict of Interests". Using the plural version, I am asking for a table by that name. Using a period and then the singular version, I am asking for a field CALLED that to get the GUID.
Be sure if you ever do something that changes what record you are editing, you reset that variable, or you will start putting data in the wrong records.
Set(CurrentConflictGUID, Blank())
This has been a bit of a ramble, but I hope something in here helps you figure out how to achieve your goal. Be wary, its hard to write good PowerFx code when I don't have a correct table for your example, there are probably missing parenthesis and such in my examples.