我需要在Access表中添加“STATUS”字段...创建字段很容易。
我需要根据另一个字段的日期显示三个单词中的一个。
因此,在“状态”字段中,我需要记录日期,如果距离日期字段少于180天,则“状态”字段显示“当前”
如果日期介于181天到365天之间,我需要它显示“暂停”,365天后我需要它显示“过期”。
如果还可以根据当前,暂停,过期的输出显示该字段的颜色,这将是一个奖励。
答案 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(在窗体视图中)
或者,如果您使用查询在表单上显示数据,则可以添加具有这些阈值日期的另一个表并加入其中。然后您的日期可以是动态的,而不是硬编码到您的表单中。