访问查询条件返回周末范围,如果星期一,否则返回昨天

Posted

技术标签:

【中文标题】访问查询条件返回周末范围,如果星期一,否则返回昨天【英文标题】:Access Query Criteria return weekend range if monday, else return yesterday 【发布时间】:2015-08-27 07:58:07 【问题描述】:

使用 Access 2007

这是我的第一个问题,如果有人问“错误的方式”,我提前道歉。

我有一个关于工作发票的庞大数据库。 我们希望有一个计数器显示“我们昨天收到了多少张发票,如果是周一,我们在周五、周六和周日收到了多少?”

计数器本身没有问题,但是让它得到多天的查询条件真的很烦我(缺乏知识)

不管是哪一天,它似乎都在减去 3 天。

为什么以下在查询条件中不起作用? (如果不是周一,周一和昨天的结果不返回周五、周六和周日的值?)

IIf(Weekday(Date()=2);<=Date()-3;Date()-1)

编辑:我使用的是丹麦版本的 Access 2007,这就是为什么会有 ;而不是,

【问题讨论】:

【参考方案1】:

您不能将IIf() 的结果用作完整的条件表达式,但可以将其用作条件参数。使用这样的 WHERE 子句:

WHERE (DateDiff("d",[InvoiceDate],Date()) <= IIf(Weekday(Date())=2,3,1)) 
  AND (DateDiff("d",[InvoiceDate],Date()) >= 1)

在查询设计编辑器中,两个条件将合并为一列(此处为德语访问)。

如果您想包含今天的发票,请省略 AND (DateDiff("d",[InvoiceDate],Date()) &gt;= 1

【讨论】:

感谢您的回复和编辑,安德烈!我想我没有关注这里的某个地方。我的访问搞砸了,要我编辑,到;与“2,3,1”相同。还将 [InvoiceDate] 更改为 [ModtagelsesDato],因为这是 RecievedDate 的字段名称 :) 当我尝试运行它时,返回的是“表达式中有一个未定义的函数“WHERE””。你现在一定是在捂脸,但是我在哪里输入“WHERE ..........”才能工作。对不起,我的经验不足,感谢您的耐心等待 工作就像一个魅力!感谢您的耐心等待!

以上是关于访问查询条件返回周末范围,如果星期一,否则返回昨天的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询:如果满足搜索条件,则应返回单条记录,否则返回多条记录

如果日期值在周末,则重置日期值

数据库(查询)

coalesce,sql函数去判断查询出来的东西符合条件返回‘0’,否则返回1

什么基于可空表单字段的访问查询条件将返回我需要的内容?

LINQ里如何设置查询条件的日期为昨天或者当天????