Search code examples
sharepointpowerappspowerapps-formulapowerapps-canvas

One If Statement, different default result


I'm pretty new to powerapps but learning as I go. Is there a way to write the following if statements as one statement? (that way it will only create one item on my sharepoint list, instead of seperate items for each if statement). I am struggling to do so as each If statement has a different default result.

If(
    IsEmpty(MondayCombo.SelectedItems),
    Patch(
        ChangeOfService,
        Defaults(ChangeOfService),
        {Monday: DataCardValue82.Text}
    ),
    Patch(
        ChangeOfService,
        Defaults(ChangeOfService),
        {
            Monday: Concat(
                MondayCombo.SelectedItems,
                Value,
                ", "
            )
        }
    )
);
If(
    IsEmpty(TuesdayCombo.SelectedItems),
    Patch(
        ChangeOfService,
        Defaults(ChangeOfService),
        {Tuesday: DataCardValue83.Text}
    ),
    Patch(
        ChangeOfService,
        Defaults(ChangeOfService),
        {
            Tuesday: Concat(
                TuesdayCombo.SelectedItems,
                Value,
                ", "
            )
        }
    )
);
If(
    IsEmpty(WednesdayCombo.SelectedItems),
    Patch(
        ChangeOfService,
        Defaults(ChangeOfService),
        {Wednesday: DataCardValue84.Text}
    ),
    Patch(
        ChangeOfService,
        Defaults(ChangeOfService),
        {
            Wednesday: Concat(
                WednesdayCombo.SelectedItems,
                Value,
                ", "
            )
        }
    )
);
If(
    IsEmpty(ThursdayCombo.SelectedItems),
    Patch(
        ChangeOfService,
        Defaults(ChangeOfService),
        {Thursday: DataCardValue85.Text}
    ),
    Patch(
        ChangeOfService,
        Defaults(ChangeOfService),
        {
            Thursday: Concat(
                ThursdayCombo.SelectedItems,
                Value,
                ", "
            )
        }
    )
);

Solution

  • Unfortunately PowerApps don't have the return or exit command yet to break the code execution.

    You have to come up with a workaround to verify the code execution & bypass all the other unwanted code execution. For example, we can have a bool variable to set & validate in next loop.

    UpdateContext({RecordCreated:false});
    If(
        IsEmpty(MondayCombo.SelectedItems),
        UpdateContext({RecordCreated:true});
        Patch(
            ChangeOfService,
            Defaults(ChangeOfService),
            {Monday: DataCardValue82.Text}
        ),
        UpdateContext({RecordCreated:true});
        Patch(
            ChangeOfService,
            Defaults(ChangeOfService),
            {
                Monday: Concat(
                    MondayCombo.SelectedItems,
                    Value,
                    ", "
                )
            }
        )
    );
    If(RecordCreated = false,
    If(
        IsEmpty(TuesdayCombo.SelectedItems),
        Patch(
            ChangeOfService,
            Defaults(ChangeOfService),
            {Tuesday: DataCardValue83.Text}
        ),
        Patch(
            ChangeOfService,
            Defaults(ChangeOfService),
            {
                Tuesday: Concat(
                    TuesdayCombo.SelectedItems,
                    Value,
                    ", "
                )
            }
        )
    );)
    

    Please up-vote this idea