Скользящая сумма с двумя условиями - PullRequest
0 голосов
/ 24 мая 2018

Я разрабатываю базу данных ms-access для компании, в которой я работаю, главным образом с целью ведения записей о сотрудниках, оплачиваемых отпусков и ежемесячной посещаемости, однако есть еще одна проблема, которую я еще не выяснил.

У меня есть столбцы таблицы оплачиваемых отпусков, настроенные следующим образом:

|ID|Month|Current_Leave|Earned_Leave|Absences|New_Leave|

ID + Месяц установлены в качестве первичного ключа для таблицы

Я хочу, чтобы эта таблица содержала несколько сотрудников'Оставьте записи на несколько месяцев, и я установил New_Leave в вычисляемое поле, где:

(current_leave +  earned_leave - absences = new_leave)

Однако я не могу понять, как обойти создание новой записи, которая будет включать дубликаты идентификаторов (тот же сотрудник) на следующий месяц, где Current_Leave = New_Leave предыдущего месяца

Например: https://i.stack.imgur.com/lkO9C.png

Любые предложения ?, псевдокод может помочь, способ выполнения будет фантастическим.

1 Ответ

0 голосов
/ 24 мая 2018

Я не вижу поля года, поэтому предположу, что ваши месяцы - это не календарные месяцы, а месяцы работы или что-то в этом роде.В этом случае, если месяц был правильным числом, вы могли бы просто использовать:

NZ (DLookup ("New_Leave", "TableName", "[Month] =" & [Month] -1), 0)

Если вы не хотите изменять свой дизайн, чтобы сделать месяц правильным числом, вам придется иметь дело с преобразованием текста в число:

NZ (DLookup ("New_Leave", "TableName"), "CInt ([Месяц]) =" & CInt ([Месяц]) - 1), 0)

Это не удастся, если в поле текстового месяца не указано правильное число.

Если вы на 100% уверены, что предыдущий месяц всегда будет существовать (маловероятно, когда Month = 1), вы можете покончить с частью Nz.

Сказав все это, я думаю, что ваш общий дизайн серьезно испорчен,Надлежащим способом решения вашей проблемы является наличие таблицы с EmployeeID, Date, LeaveAmount (где отрицательное значение представляет собой заработанный отпуск или отдельное поле «Да / Нет» для представления этого).Это единственная статическая информация, которая вам нужна.Все остальное должно рассчитываться по мере необходимости в формах / отчетах, а не в ваших таблицах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...