Access中的多个条件更新查询

时间:2015-06-20 23:43:05

标签: ms-access expression ms-access-2007 criteria query-designer

我创建了一个数据库来跟踪呼叫中心环境中的客户服务跟进。我的单个表格包括截止日期字段和状态字段(值:'打开','到期''逾期')。

我想运行更新查询,以自动将状态字段中指示的值更改为“打开”#39;当前日期小于截止日期时,到期'到期日当前日期等于截止日期,并且“过期”#39;当前日期超过截止日期。

我不知道如何编写表达式以实现该结果以及在哪些单元格中输入代码。有人可以提供协助吗?

1 个答案:

答案 0 :(得分:1)

使用Switch Function表达式将截止日期与今天的日期Date()进行比较,并返回相应的状态

将查询视图模式从“设计视图”更改为“SQL视图”,粘贴以下UPDATE语句文本,并将 YourTable 替换为表格的名称。

UPDATE [YourTable] AS y
SET y.Status =
    Switch
        (
            y.[Due date] > Date(), 'Open',
            y.[Due date] = Date(), 'Due',
            y.[Due date] < Date(), 'Overdue'
        );

我不想尝试在设计视图中描述如何做到这一点。但是在SQL视图中添加语句文本后,您可以返回到设计视图以查看它在那里的显示方式。

注意,要保持状态最新,您必须每天运行UPDATE。也许这是令人满意的。但是,您可以使用相同的SELECT表达式在Switch查询中根据需要导出状态。那样状态将始终是最新的,而不需要存储在表中的UPDATE值。

SELECT
    y.[Due date],
    Switch
        (
            y.[Due date] > Date(), 'Open',
            y.[Due date] = Date(), 'Due',
            y.[Due date] < Date(), 'Overdue'
        ) AS [Status]
FROM [YourTable] AS y;