Access 2013中的CASE语句(以及如何使用它)?

时间:2013-05-23 14:09:40

标签: sql ms-access if-statement case ms-access-2013

我是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中执行此操作。我正在使用Access 2013。

感谢。

2 个答案:

答案 0 :(得分:3)

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

示例:

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

答案 1 :(得分:2)

感谢Gord Thompson给我一个线索,这就是我想要的,它的工作完美:

expr1: Switch([date_]=Date(),"today",
              [date_]=Date()-1,"yesterday",
              [date_]>Date()-7,"week ago")