Можно ли использовать условный оператор в запросе доступа? - PullRequest
0 голосов
/ 27 июля 2011

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

SELECT d.ID, Age AS Expr1, DateDiff("h",d.dateOpened,Now()) & " hrs" AS Age, fl.flavorname, pkg.package, st.status
FROM lut_status AS st INNER JOIN (lut_flavorname AS fl INNER JOIN (lut_packaging AS pkg INNER JOIN record_holddata AS d ON pkg.id = d.package) ON fl.id = d.flavor) ON st.id = d.holdstatus
WHERE (((d.holdStatus)<>7))
ORDER BY d.dateOpened;

В этой таблице record_holdData также есть поле finalDispoDate, в котором хранится дата закрытия элемента удержания. Я хочу создать аналогичный запрос, который будет использовать текущее время для определения возраста удержания, но только если поле finalDispoDate имеет значение null; в противном случае он будет использовать значение в finalDispoDate для определения возраста удержания (времени между созданием и размещением).

Я знаю, как бы я делал это программно, но с тем, как я настроил привязку, я бы предпочел сделать это в запросе. Не удалось найти хороших примеров этого в сети. Любые идеи о том, как я мог бы сделать это? ТИА

Ответы [ 2 ]

1 голос
/ 27 июля 2011

Вместо этого вы можете применить функцию Nz, поэтому, если значение равно NULL, вы установите для него значение по умолчанию, вот пример:

SELECT d.ID, Nz (d.another, "Nop") из lut_status

1 голос
/ 27 июля 2011

Я думаю, вы можете использовать для этого функции Switch или iif. Прошло много времени с тех пор, как я сделал MSAccess.

Пример по следующей ссылке: http://www.articlealley.com/ms-access-nested-iif-functions-vs-the-switch-function-1512848.html
...