MS Access查询,标准显示所有记录

问题描述 投票:0回答:1

我以过滤表使用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],*)

我的理解是: - >如果今天是第2天(星期二)则显示了AAA的数据,否则(它不是星期二)显示所有。

我检查TempVars的(接入基站打开时计算),他们是正确的,是平等的: [TempVars的]![WorkingDay] = 2 [TempVars的]![WorkingUser] = AAA

实际工作 - >我看到记录AAA,但是,如果今天不是周二(TempVar的= 1),我希望看到所有记录(compilator应该进入虚假陈述,这是“*”,但其实我没有看到任何记录... Compilator进入虚假的陈述,如果我手动插入“BBB”我会得到BBB,但我不知道我应该怎么键入,所以我得到的所有数据。

我不知道什么是错的这种说法,我想,而不是“*”,把: - 喜欢(” * ”) - 喜欢 ” * ” - (不为空)或(为null) 在访问它提出这样的: 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],"*")));

我感谢您的帮助,谢谢。

sql ms-access-2010
1个回答
0
投票

你应该考虑你的规范化数据,使得平日使用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])

你的查询无法返回所期望的结果的原因是因为*通配符应与like运营商,而不是运营商=一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.