Forms MS Access计算字段更改为“0”#“错误”;

Forms MS Access计算字段更改为“0”#“错误”;,forms,ms-access,ms-access-2013,Forms,Ms Access,Ms Access 2013,我现在有一个表单,它运行在一个查询的基础上,一切都很顺利,或者至少看起来是这样。我有三个字段:ID字段、Client Name字段和Age字段。年龄字段实际上是客户在签署报价时的年龄,因此它是使用报价日期和客户的DOB计算的字段 年龄计算在第一眼就可以完美地计算出来。ID和name字段有问题的原因是,当我双击它们时,它会打开一个表单,再次运行良好。问题是当我退出这些表单并返回到原始表单时 我记录的任何记录的年龄字段都会更改为“#Error”,而不是它显示的内容。如果我点击表单中的另一条记录,那么

我现在有一个表单,它运行在一个查询的基础上,一切都很顺利,或者至少看起来是这样。我有三个字段:ID字段、Client Name字段和Age字段。年龄字段实际上是客户在签署报价时的年龄,因此它是使用报价日期和客户的DOB计算的字段

年龄计算在第一眼就可以完美地计算出来。ID和name字段有问题的原因是,当我双击它们时,它会打开一个表单,再次运行良好。问题是当我退出这些表单并返回到原始表单时

我记录的任何记录的年龄字段都会更改为“#Error”,而不是它显示的内容。如果我点击表单中的另一条记录,那么年龄字段也会变为“#Error”。这似乎每次都会发生,我不知道为什么

有没有人解决过类似的问题,或者对如何解决有什么想法

提前谢谢

更新:我将其更改为打开一个报告而不是一个表单,问题仍然存在


正在讨论的计算:Int(([effectiveDate]-[dateOfBirth])/365.25)

尝试以下方式计算年龄:

DateDiff("yyyy", [dateOfBirth], [effectiveDate]) + ([effectiveDate] < DateSerial(Year([effectiveDate]), Month([dateOfBirth]), Day([dateOfBirth])))
DateDiff(“yyyy”、[dateOfBirth]、[effectiveDate])+([effectiveDate]
使用此方法时,您的出生日期与生效日期之间以年为单位的差值,同时考虑到该人的生日可能尚未超过该日期


基本上,第一部分得到年份,第二部分要么加0表示假,要么加-1表示真,如果生效日期小于生效年份的生日(意味着它还没有过去)

试着这样计算年龄:

DateDiff("yyyy", [dateOfBirth], [effectiveDate]) + ([effectiveDate] < DateSerial(Year([effectiveDate]), Month([dateOfBirth]), Day([dateOfBirth])))
DateDiff(“yyyy”、[dateOfBirth]、[effectiveDate])+([effectiveDate]
使用此方法时,您的出生日期与生效日期之间以年为单位的差值,同时考虑到该人的生日可能尚未超过该日期


基本上,第一部分得到年份,第二部分要么加0表示假,要么加-1表示真,如果生效日期小于生效年份的生日(意味着它还没有过去)

当你说计算字段时,你是说表单或报表上有计算字段吗?还是表中的计算字段?你能公布实际的计算结果吗?没有任何代码,你让我们猜测…字段是在查询中计算的。这是代码。对不起,没有提供足够的信息!Int(([effectiveDate]-[dateOfBirth])/365.25)听起来像是子表单/第二表单中的某些内容正在破坏主表单/第一表单的结果。您能否同时查看两个表单,并逐步查看第二个表单上的代码,以查看哪一步触发了更改?当您说“计算字段”时,您的意思是在表单或报表上有一个计算字段?还是表中的计算字段?你能公布实际的计算结果吗?没有任何代码,你让我们猜测…字段是在查询中计算的。这是代码。对不起,没有提供足够的信息!Int(([effectiveDate]-[dateOfBirth])/365.25)听起来像是子表单/第二表单中的某些内容正在破坏主表单/第一表单的结果。您能否同时查看两个表单,并逐步查看第二个表单上的代码,以查看哪一步触发了更改?当您说“计算字段”时,您的意思是在表单或报表上有一个计算字段?还是表中的计算字段?你能公布实际的计算结果吗?没有任何代码,你让我们猜测…字段是在查询中计算的。这是代码。对不起,没有提供足够的信息!Int(([effectiveDate]-[dateOfBirth])/365.25)听起来像是子表单/第二表单中的某些内容正在破坏主表单/第一表单的结果。您能否同时查看两个表单,并逐步查看第二个表单上的代码,以查看哪一步触发了更改?这不起作用。它实际上返回了所有错误,因为它从未显示正确的数据,而另一种方法不起作用。它实际上返回了所有错误,因为它从未显示正确的数据,而另一种方法不起作用。它实际上返回了所有错误,因为与其他方法不同,它从未显示正确的数据:/