1

我是 Microsoft Access 编程的新手。

我想检查一个日期字段,如果是则返回

  • 今天,或
  • 昨天,或
  • 上周(上周日期内的日期),或
  • 上个月,或
  • 超过一个月

我做了下面的代码:(使用表达式生成器)

 Expr_Timeout: 
    IIf([Report_DateTime]=Date(),"Today","")+
    IIf([Report_DateTime]=Date()-1,"Yesterday","")+
    IIf([Report_DateTime]<Date()-7,"Last Week","")+
    IIf([Report_DateTime]<Date()-30,"Last Month","")+
    IIf([Report_DateTime]<Date()-31,"Old","")

有一个更好的方法吗?其他语言有 CASE 语句,但我不确定如何在 Access 中执行。我正在使用访问 2013。

谢谢。

4

2 回答 2

3

Switch()您可以在 Access SQL 查询和 VBA 代码中使用一个函数(参考:此处)。

例子:

Switch([Report_DateTime]=Date(), "Today", [Report_DateTime]=Date()-1, "Yesterday", [Report_DateTime]<Date()-1, "Before Yesterday")

VBA中还有一个Select Case构造(参考:here)。

例子:

Select Case [Report_DateTime]
    Case Date()
        status = "Today"
    Case Date() - 1
        status = "Yesterday"
    Case < (Date() - 1)
        status = "Before Yesterday"
End Select
于 2013-05-23T14:16:06.267 回答
2

感谢 Gord Thompson 给我一个线索,这就是我一直在寻找的,它工作完美:

expr1: Switch([date_]=Date(),"today",
              [date_]=Date()-1,"yesterday",
              [date_]>Date()-7,"week ago")
于 2013-05-24T07:04:49.780 回答