用于Access窗体中的控件源的表达式错误

时间:2017-05-28 03:56:29

标签: ms-access

我实际上有两个问题。

我是Access的初学者,仍在努力深入了解该软件。我正在尝试使用借用系统为库(学校项目)创建数据库。我在一个名为DueDate和DateHired的表中有两个字段。 DueDate函数在表达式= Now()+ 28上,DateHired函数在表达式= Now()上。基本上提前截止日期提前4周。我的第一个问题很简单;如果我今天要输入一条记录,那么两个DueDate / DateHired字段明天会保持相同的日期和时间吗?或者他们会更新到明天的Now()吗?

我的第二个问题是关于表达的问题。我试图制作一个过期复选框。前提是如果Now()> DateDue,那么复选框将是'是'。我在ControlSource部分中的当前代码是:

= CBool​​函数([DateDue]

然而,该复选框只显示'#错误'而不是是/否。我还担心如果第一个问题的答案是' = Now()在添加记录后保持不变并且不会更新'这也意味着除非您在截止日期之后输入记录,否则逾期功能将无法正常工作。这没有任何意义。有什么建议?

干杯。

2 个答案:

答案 0 :(得分:0)

这与你的第二个问题有关。您可以针对第一部分提出单独的问题。

=CBool([DateDue] 

您要在此处执行的操作是将Date数据类型转换为Boolean(顺便说一下,您错过了右括号),这是不可能的。

您应该做的是检查截止日期是否小于今天并返回相应的True/False值。

IIf([DueDate] < Date(), True, False)

这意味着:

IIf("Is due date in the past?", "Yes, it's overdue", "No, it's not overdue")

您可以详细了解IIf函数here

答案 1 :(得分:0)

确实作为初学者,养成使用日期功能的习惯。之后你可以转向更聪明的&#34;顺便说一下,这些方法往往不聪明。

<强> 1

如果存储日期,则表格中的日期保持不变。除非你特别需要时间,否则不要使用Now:

DateDue = DateAdd("d", 28, DateHired)

或在查询中 - 使用设计器:

DateDue: DateAdd("d",28,[DateHired])

或作为表单上文本框的ControlSource:

=DateAdd("d",28,[DateHired])

<强> 2

您可以使用 DateDiff

Due = DateDiff("d", DateHired, Date) > 28

或在查询中 - 使用设计器:

Due: DateDiff("d",[DateHired],Date()) > 28

或作为表单上文本框的ControlSource:

=DateDiff("d",[DateHired],Date()) > 28

并将文本框的格式属性设置为是/否或其他对用户有意义的内容。