Я использую запрос мастера MS Access 2010 для фильтрации таблицы.
Что я хочу получить в результате - это таблица, которая возвращает базу данных по:
- текущей дате недели
- Пользователь, который над ней работает (пользователи: AAA, BBB, DDD в следующей таблице).
Пример таблицы выглядит следующим образом:
Monday | Tuesday
AAA | BBB
AAA | BBB
DDD | AAA
DDD | AAA
Результаты, которые я хочу получить, были бы
Если сегодня понедельник, мне нужны данные для AAA
Monday | Tuesday
AAA | BBB
AAA | BBB
Если сегодня вторник, мне нужны данные для AAA
Monday | Tuesday
DDD | AAA
DDD | AAA
Моя идея пока:
В поле критерия я поставил условие:
IIf([TempVars]![WorkingDay]=2,[TempVars]![WorkingUser],*)
Насколько я понимаю:
-> если сегодня второй день (вторник), тогда покажите данные для AAA, в противном случае (этоне вторник) показать все.
Я проверил TempVars (рассчитывается при открытии базы доступа), и они верны и равны:
[TempVars]! [WorkingDay] = 2
[TempVars]! [WorkingUser] = AAA
Это на самом деле работает -> Я вижу записи для AAA, однако если сегодня не вторник (TempVar = 1), я хотел бы видеть все записи (компилятор должен перейти в falseутверждение, которое "*", но я на самом деле не вижу никаких записей ... Компилятор переходит в ложное утверждение, и если я вручную вставлю "BBB", я получу BBB, но я неЯ не знаю, что мне следует вводить, поэтому я получаю все данные.
Я не уверен, что не так с этим утверждением, я попытался вместо "*" поставить:
- Like ("*")
- Like "*"
- (Не ноль) Или (NULL)
В Access это выглядит так:
Экраниз Access
SQL-код, сгенерированный Access:
SELECT
t001.Monday, t001.Tuesday
FROM
Tbl_001_WholeBase AS t001
WHERE
(((t001.Monday)=IIf([tempvars]![WorkingDay]=1,[tempvars]![WorkingUser],"*")) AND ((t001.Tuesday)=IIf([tempvars]![WorkingDay]=2,[tempvars]![WorkingUser],"*")));
Спасибо за помощь, спасибо.