将表达式添加到MS Access表

时间:2016-06-30 18:57:57

标签: ms-access database-design

我需要在Access表中添加“STATUS”字段...创建字段很容易。

我需要根据另一个字段的日期显示三个单词中的一个。

因此,在“状态”字段中,我需要记录日期,如果距离日期字段少于180天,则“状态”字段显示“当前”

如果日期介于181天到365天之间,我需要它显示“暂停”,365天后我需要它显示“过期”。

如果还可以根据当前,暂停,过期的输出显示该字段的颜色,这将是一个奖励。

3 个答案:

答案 0 :(得分:2)

我发现在表格中使用计算列可能很麻烦,而且你只能做你能做的事情。我建议您在表上创建一个查询,并将以下表达式添加到新的查询字段中:

Status: IIf(DateDiff("d",[YourDateField], Date())<=180,"CURRENT",IIf(DateDiff("d",[YourDateField], Date())>=181 And DateDiff("d",[YourDateField],Date())<365,"SUSPENDED","EXPIRED"))

确保测试一下,如果计算适合每个方案,请告诉我。我可能会倒退。

至于根据状态格式化字段,可以使用表单或报表中的文本框来完成。如果在表单/报表的设计视图中选择“状态”文本框,然后在功能区中转到“表单/报表设计工具”菜单中的“格式”选项卡,请单击“条件格式”。在那里,您可以根据状态值指定文本框背景颜色的规则。

希望这有帮助!

答案 1 :(得分:2)

在查询中使用Switch()表达式来派生“状态”。

此处,每个条件/值对都在单独的行上进行格式化。与VBA Select Case ... End Select块类似,Switch()返回第一个条件的值,该条件的计算结果为True,忽略其余条件。

Switch
    (
        DateDiff('d', [YourDateField], Date()) < 181, 'CURRENT',
        DateDiff('d', [YourDateField], Date()) BETWEEN 181 AND 365, 'SUSPENDED',
        DateDiff('d', [YourDateField], Date()) > 365, 'EXPIRED',
        True, Null
    )

最后一个条件捕获任何不满足前三个条件之一的YourDateField值(例如Null)。

答案 2 :(得分:1)

在您要呈现数据的表单上,您可以在文本框中创建计算值。您可以使用条件格式更改颜色(在数据表视图中)或VBA(在窗体视图中)

或者,如果您使用查询在表单上显示数据,则可以添加具有这些阈值日期的另一个表并加入其中。然后您的日期可以是动态的,而不是硬编码到您的表单中。