MS Access 查询,显示所有记录的条件

MS Access Query, criteria to show all records


我正在使用 MS Access 2010 向导查询来过滤 table。

我想要得到的结果 是 table,returns 数据库基于:
- 今天是星期几
- 正在处理它的用户(用户:以下 table 中的 AAA、BBB、DDD)。

示例 table 如下所示:

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(打开 access base 时计算的),它们是正确的且相等:
[临时变量]![工作日]=2
[TempVars]![WorkingUser]=AAA

这确实有效 -> 我看到了 AAA 的记录,但是如果今天不是星期二(TempVar = 1),我想看到所有记录(编译器应该进入错误的陈述,即“*”,但我实际上没有看到任何记录...编译器进入错误陈述,如果我手动插入 "BBB" 我会得到 BBB,但是 我不知道我应该输入什么,所以我得到了所有数据.


我不确定该声明有什么问题,我尝试用“*”代替:
- 赞(" * ")
- 喜欢“*”
-(不为空)或(为空)

在 Access 中它显示如下:
Screen from 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],"*")));


感谢您的帮助,谢谢。

您应该考虑规范化您的数据,以便使用 Weekday 字段表示工作日,而不是为一周中的每一天使用单独的字段。

然而,以下查询使用 Choose 函数来获得所需的结果:

select
    t001.Monday, t001.Tuesday
from
    tbl_001_wholebase t001
where
    choose
    (
        [tempvars]![WorkingDay],
        t001.Monday  = [tempvars]![WorkingUser],
        t001.Tuesday = [tempvars]![WorkingUser]
    )

或者,使用逻辑运算符:

select
    t001.Monday, t001.Tuesday
from
    tbl_001_wholebase t001
where
    ([tempvars]![WorkingDay] = 1 and t001.Monday  = [tempvars]![WorkingUser]) or
    ([tempvars]![WorkingDay] = 2 and t001.Tuesday = [tempvars]![WorkingUser])

您的查询未能 return 所需结果的原因是 * 通配符应与 like 运算符一起使用,而不是 = 运算符。