Первый день каждой недели каждого месяца в PowerApps - PullRequest
1 голос
/ 30 сентября 2019

У меня есть таблица с двумя столбцами: 1. Месяц 2. Неделя

Данные в таблице следующие:

Месяц |Неделя

1 |4

2 |3

3 |2

4 |1

5 |4

6 |3

7 |2

8 |1

9 |4

10 |3

11 |2

12 |1

Теперь, основываясь на дате, которую предоставляет пользователь, мне нужно найти соответствующий первый день недели на основе сопоставления в таблице выше.

Пример-1 :

Дата от пользователя: 9/29/2019

Теперь я увижу месяц в дате, предоставленной пользователем, а затем на основе этого месяца;Я посмотрю в таблицу и увижу соответствующую неделю для этого месяца. Здесь для 9-го месяца (сентября) соответствующая неделя будет 4-й. Теперь, так как у меня есть неделя для этого месяца;Мне нужно найти первое число этой недели в этом месяце года. В этом случае это будет 9/23 / 2019.

Мое решение должно быть 9/23 / 2019.

Пример-2 :

Дата от пользователя: 10/10/2019

Теперь я увижу месяц в дате, предоставленной пользователем, а затем на основе этого месяца;Я посмотрю в таблицу и увижу соответствующую неделю для этого месяца. Здесь, для месяца 10 (октябрь) соответствующая неделя будет неделей 3. Теперь, поскольку у меня есть неделя для этого месяца;Мне нужно найти первое число этой недели в этом месяце года. В этом случае это будет 10/21 / 2019.

Мое решение должно быть 10/21 / 2019.

Я пытаюсь придумать формулу PowerApps для этого сценария. Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 октября 2019

С вашими требованиями вы должны иметь возможность использовать это выражение (учитывая, что дата от пользователя поступает из средства выбора даты; если дата исходит из какого-то другого источника, вам нужно настроить выражение):

With(
    { firstDay: Date(Year(DatePicker1.SelectedDate), Month(DatePicker1.SelectedDate), 1) },
    With(
        {
            firstMonday: DateAdd(firstDay, 7 - Weekday(firstDay, StartOfWeek.Tuesday), Days),
            weekNumber: LookUp(MyTable, Month = Month(DatePicker1.SelectedDate), Week)
        },
        DateAdd(firstMonday, 7 * (weekNumber - 1), Days)))

Давайте разберем это:

  • Первый With создает переменную области действия с именем firstDay, которая содержит первый день месяца, выбранныйuser;
  • Второй With вычисляет первый Понедельник месяца, поскольку именно это определяет номер недели в вашем сценарии. Это достигается путем добавления количества дней до следующего понедельника к первому дню месяца, которое было рассчитано на предыдущем шаге. Он также извлекает номер недели из вашей таблицы (в моем примере я назвал его «MyTable», вы бы заменили его на соответствующее имя в вашем сценарии)
  • Наконец, учитывая номер недели и первый понедельникмесяц, мы можем добавить соответствующее количество дней, чтобы получить желаемый результат.

Надеюсь, это поможет!

...