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

Check in/Check out app from a sharepoint list

Hi everyone,

 

I am in the process of creating a check in\check out app for events run by my unit. These events will be attended mostly by internal staff but there will be a few externals. The premise is that records will be created in the sharepoint list by an email lookup (for internals) and typing in the email for externals. Users will be able to create a record at check in, submit, and edit that record at check out and resubmit for the final time. Users will have different questions to answer at the check in and check out process so at the end there should be one record for each user with the check in and check out sections completed. I would like only checked in users (users that have created a record) to be able to check out. Perhaps the check out section could also be an email look up where your email only appears if you have checked in.

 

At this stage I have three screens:

 

1. Welcome Screen (Image1): option to check in or check out

2. Check In Screen (Image 2): Form feeding in to the sharepoint list where a record is to be created by checking in 

3. Check Out Screen (Image 3): Form where a created record is looked up, edited and resubmitted.

 

Would this be possible or is it a huge leap?! I'm fairly new to Powerapps and would very much appreciate any advice you might have! 

 

Thanks so much!

 

Charith

1 ACCEPTED SOLUTION

Accepted Solutions
Community Support
Community Support

Hi @snan004 :

I'm not sure if my understanding is correct.

Could you help me confirm whether my understanding is correct:

About your data source:

Data source 1:maindatasouce

Field name

Filed type

Internal_email_lookup

Lookup

EventName

choice

YouAreHereTo

choice

YouAreA

choice

Twitter

Text

HowLikely

choice

Wouldyou

Yes/No(defaut:yes)

Data source 2: Internal_email

Field name

Filed type

Internal_email

Text

About the attachments:

1\Screen1:

Button1(Check in):navigate to screen2

Button2(Check out):navigate to screen3

2\Screen2:

Form1:a form in New mode.

Button3(Check in): submit Form1 then navigate to screen3

3\Screen3:

Form2:a form in Edit mode.

Button4(Check out): submit Form2.

About the Features:

1If the user selects check in button, then jump to screen 2 to create a new record ("Wouldyou ..." field defaults to true), and then jump to screen 3 to select whether the "Wouldyou ..." field should be marked as false. By default, the form selects the record recently created by this user.

2If the user selects check out button, then jump to screen 3. By default, the form selects the record recently created by this user.

I assume the above assumption holds.

Ive made a test for your reference:

1\Screen1

Button(Check in):

OnSelect:

 

 

Navigate(Screen1)

 

 

Button(Check out):

OnSelect:

 

 

Navigate(Screen3)

 

 

DisplayMode:

 

 

If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/

 

 

2\Screen2

Form1:

DataSource: 

 

 

maindatasouce

 

 

DefaultMode:

 

 

New

 

 

Button(Check in):

OnSelect:

 

 

SubmitForm(Form1);Navigate(Screen3)

 

 

 

Attachment:Screen2.jpg

3\Screen3

Form2:

DataSource: 

 

 

maindatasouce

 

 

DefaultMode:edit

Item:

 

 

LookUp(
    Sort(
        maindatasouce,
        Created,
        Descending
    ),
    'Created By'.Email = User().Email   /* Search the latest record created by the current user*/
)

 

 

Button(Check Out):

OnSelect:

 

 

SubmitForm(Form2);

 

 

DisplayMode:

 

 

If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/

 

 

 Attachment:Screen3.jpg

Result:

Attachment:result.jpg

 
 

Best Regards,

Bof

View solution in original post

3 REPLIES 3
Community Support
Community Support

Hi @snan004 :

I'm not sure if my understanding is correct.

Could you help me confirm whether my understanding is correct:

About your data source:

Data source 1:maindatasouce

Field name

Filed type

Internal_email_lookup

Lookup

EventName

choice

YouAreHereTo

choice

YouAreA

choice

Twitter

Text

HowLikely

choice

Wouldyou

Yes/No(defaut:yes)

Data source 2: Internal_email

Field name

Filed type

Internal_email

Text

About the attachments:

1\Screen1:

Button1(Check in):navigate to screen2

Button2(Check out):navigate to screen3

2\Screen2:

Form1:a form in New mode.

Button3(Check in): submit Form1 then navigate to screen3

3\Screen3:

Form2:a form in Edit mode.

Button4(Check out): submit Form2.

About the Features:

1If the user selects check in button, then jump to screen 2 to create a new record ("Wouldyou ..." field defaults to true), and then jump to screen 3 to select whether the "Wouldyou ..." field should be marked as false. By default, the form selects the record recently created by this user.

2If the user selects check out button, then jump to screen 3. By default, the form selects the record recently created by this user.

I assume the above assumption holds.

Ive made a test for your reference:

1\Screen1

Button(Check in):

OnSelect:

 

 

Navigate(Screen1)

 

 

Button(Check out):

OnSelect:

 

 

Navigate(Screen3)

 

 

DisplayMode:

 

 

If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/

 

 

2\Screen2

Form1:

DataSource: 

 

 

maindatasouce

 

 

DefaultMode:

 

 

New

 

 

Button(Check in):

OnSelect:

 

 

SubmitForm(Form1);Navigate(Screen3)

 

 

 

Attachment:Screen2.jpg

3\Screen3

Form2:

DataSource: 

 

 

maindatasouce

 

 

DefaultMode:edit

Item:

 

 

LookUp(
    Sort(
        maindatasouce,
        Created,
        Descending
    ),
    'Created By'.Email = User().Email   /* Search the latest record created by the current user*/
)

 

 

Button(Check Out):

OnSelect:

 

 

SubmitForm(Form2);

 

 

DisplayMode:

 

 

If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/

 

 

 Attachment:Screen3.jpg

Result:

Attachment:result.jpg

 
 

Best Regards,

Bof

View solution in original post

Hi @v-bofeng-msft - thanks very much for your reply!

 

Could you help me confirm whether my understanding is correct:

 

About your data source: 

 

My data source is a share point list with conditional fields - certain fields are visible depending on selections to drop down questions.

Data source 1:maindatasouce

Field name

Filed type

Internal_email_lookup

Lookup

EventName

choice

YouAreHereTo

choice

YouAreA

choice

Twitter

Text

HowLikely

choice

Wouldyou

Yes/No(defaut:yes)

Data source 2: Internal_email

Field name

Filed type

Internal_email

Text

About the attachments:

1\Screen1:

Button1(Check in):navigate to screen2

Button2(Check out):navigate to screen3

2\Screen2:

Form1:a form in New mode.

Button3(Check in): submit Form1 then navigate to screen3 - 

 

After the check in step (submit form 1, it would navigate back to the welcome screen (check out will happen at the end of the event)

 

3\Screen3:

Form2:a form in Edit mode.

Button4(Check out): submit Form2.

 

Clarification about the Forms - it's the same form on both the check out and check in screens (from the same sharepoint list), with different fields visible depending on the section. I did not know how to include the same form across multiple screens so I did the above

About the Features:

1If the user selects check in button, then jump to screen 2 to create a new record ("Wouldyou ..." field defaults to true), and then jump to screen 3 to select whether the "Wouldyou ..." field should be marked as false. By default, the form selects the record recently created by this user. - After creating a new record (submitform in check in) it would jump back to the welcome screen

2If the user selects check out button, then jump to screen 3. By default, the form selects the record recently created by this user.

I assume the above assumption holds.

Ive made a test for your reference:

1\Screen1

Button(Check in):

OnSelect:

 

 

Navigate(Screen1)

 

 

Button(Check out):

OnSelect:

 

 

Navigate(Screen3)

 

 

DisplayMode:

 

 

If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/

 

Could you clarify who you mean by  User here?  The app has to be available for both internal and external users and the app would be available to people through a communal device so I would be logged in (through my user account) and people arriving will be filling it in (they will not be 'logged in' so to speak). So the 'created by' field in the sharepoint list will always be me. Except for when the users will have a link and be able to log in to the portal to access the app. I would like it to have both options (for internals and externals..)

 

2\Screen2

Form1:

DataSource: 

 

 

maindatasouce

 

 

DefaultMode:

 

 

New

 

 

Button(Check in):

OnSelect:

 

 

SubmitForm(Form1);Navigate(Screen3)

 

 

 

Attachment:Screen2.jpg

3\Screen3

Form2:

DataSource: 

 

 

maindatasouce

 

 

DefaultMode:edit

Item:

 

 

LookUp(
    Sort(
        maindatasouce,
        Created,
        Descending
    ),
    'Created By'.Email = User().Email   /* Search the latest record created by the current user*/
)

 

 

Button(Check Out):

OnSelect:

 

 

SubmitForm(Form2);

 

 

DisplayMode:

 

 

If(IsBlank(LookUp(maindatasouce,User().Email='Created By'.Email)),Edit,Disabled) /* Users who have not created a record cannot select this button*/

 

 

 

Hi @snan004 :

Firstly,I suggest that you set Internal_email_lookup to Text type then make users directly filter their email address to find the corresponding record, and then modify the record.
Reason:
1. If users are allowed to create new records freely, there is no guarantee that the same user will not create multiple duplicate records.(Data uniqueness)

2.If a person has created multiple records, it will be very troublesome to find out which record need modify.(Data retrieval)

2.You can't tell who is the external staff and which part is the internal staff.
Secondly,I suggest you use the registration login mechanism.

the reason:
1.Because of the use of public equipment, it is impossible to distinguish the user ’s identity through ‘Creat by’.Using the login system, you can distinguish between internal and external employees.

2.Through account authentication, you can additionally grant internal employees the authority to create new records.

About establishing a login system,I think this link will help you a lot:

https://powerusers.microsoft.com/t5/Building-Power-Apps/How-to-check-list-CDS-entity-list-in-powerap...

Best Regards,

Bof

Helpful resources

Announcements
New Badges

New Solution Badges!

Check out our new profile badges recognizing authored solutions!

New Power Super Users

Congratulations!

We are excited to announce the Power Apps Super Users!

Power Apps Community Call

Power Apps Community Call: February

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

Microsoft Ignite

Microsoft Ignite

Join digitally, March 2–4, 2021 to explore new tech that's ready to implement. Experience the keynote in mixed reality through AltspaceVR!

Top Solution Authors
Top Kudoed Authors
Users online (57,788)