跨表的MS Access年龄计算

时间:2014-09-29 19:26:33

标签: database expression builder

我正在编辑数据库模板,以便跟踪同一个人的不同年龄的患者测试差异。

我改编了#34;学生数据库"模板以利用已创建的表单和宏。

我有一张患者表,其中存储了初次入院时收集的所有数据:姓名,出生日期(DOB)等,以及第二张表,用于跟踪访问中的测试分数,包括:姓名,访问日期(DOV)和得分信息。这些是配对的,因此我可以从一位患者中提取信息,并在访问中查看他们的分数。

我现在需要做的是创建一个查询,在那里我可以计算他们参加测试时的年龄。

为此,我使用了表达式构建器并输入了Calculated:([Visit Date]-[DOB])/365

仅当我在患者访问表的新栏中重新输入DOB时,这适用于计算年龄

我已尝试使用DateDiff并使用[Patient]![DOB]从另一个表中调用数据,但我得到了相同的错误。

(Calculated age: ([Patient Visit]![Visit Date]-[Patients]![DOB])/365) Calculated age: (DateDiff("yyyy",[Patients]![DOB],[Patient Visit]![Visit Date]))

两者都吐出错误:Enter Parameter Value 'Patients!DOB' 如果我输入日期,则所有数据点和患者计算得到的DOB与我输入的相同。

如何让Access知道我需要它来计算同一患者DOB的就诊日期?

?:我是否需要为患者ID创建一个与DOB匹配的查找表,然后使用该字段进行计算?

如果我能修复的表达式有问题,那将是理想的。如果不是,那么计算年龄的最佳方法是什么,而不必多次手动输入患者DOB(一次初次摄取,每次就诊时再次)。

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案!

我使用'查询'错了。而不是试图强制它识别另一个表,我需要在创建查询时将表添加到查询中。 即: 1_选择'查询设计' 2_选择了包含所需信息的表格(通过表格输入) 3_使用`

Patient Name: IIf(IsNull([Last Name]),IIf(IsNull([First Name]),[First Name]),IIf(IsNull([First Name]),[Last Name],[First Name] & " " & [Last Name]))

` 对于第一个字段和

Patient Visit.*

表示第二个字段。通过添加“患者访问。*”,查询将把表中的所有字段添加到查询中。

第三个字段我从Patients表中选择了DOB(它可供选择,因为我最初在布局中选择了两个表)。

我现在可以使用原来的

Calculated:([Visit Date]-[DOB])/365

年龄计算没有任何错误。我在属性>下完成了格式化格式>固定。

的Wooo!