Я пытаюсь определить лучший метод обработки этого запроса с помощью Access 2013. У меня есть таблица клиентов, которая содержит следующее:
clientID fName lName admissionDate dischargeDate
1 John Doe 05/06/2014 06/27/2014
2 Jane Doe 04/24/2014 05/15/2014
3 Steven Smith 05/15/2014 NULL/Empty
4 Chris Davis 06/12/2014 NULL/Empty
Кроме того, есть таблица WeeklyProgressNotes, предназначенная для человека, ответственного за аудит графиков клиентов. Он не содержит фактического еженедельного прогресса, он содержит только поле Да/Нет и поле даты для даты завершения еженедельного прогресса. Как показано ниже:
noteID completed dateCompleted clientID
1 yes 05/08/2014 1
2 yes 05/14/2014 1
3 yes 04/25/2014 2
Я создаю форму, которую одитор может открыть, чтобы определить, какие недели ей нужно проверить для каждого клиента, чтобы увидеть, заполнены ли они еженедельными отчетами о прогрессе на этой неделе. Недели проходят с понедельника по воскресенье, и в таблице WeeklyProgressNotes не будет записи, если она еще не проверила и не подтвердила эту неделю. Таким образом, форма в основном будет выглядеть так:
fName lName week completed date clientID(hidden)
John Doe 5/19/14-5/25/14 Checkbox Null 1
John Doe 5/26/14-6/1/14 Checkbox Null 1
John Doe 6/2/14-6/8/14 Checkbox Null 1
John Doe 6/9/14-6/15/14 Checkbox Null 1
John Doe 6/16/14-6/22/14 Checkbox Null 1
John Doe 6/23/14-6/29/14 Checkbox Null 1
Jane Doe 4/28/14-5/4/14 Checkbox Null 2
и так далее.......
Я подумал о создании оператора SQL для выбора всех клиентов, а затем о создании функции, которая определяет дату их приема в течение определенной недели и дату их выписки в течение определенной недели, а затем создать цикл с другим оператором SQL с предложением BETWEEN для все недели и определить, есть ли запись в таблице WeeklyProgressNotes или нет. Если нет, то я бы отобразил приведенную выше информацию. Я не уверен, что есть более простой и менее интенсивный способ сделать это. Может быть, SQL-запрос, который может сократить некоторые из циклов.