跨表的 MS Access 年龄计算

Posted

技术标签:

【中文标题】跨表的 MS Access 年龄计算【英文标题】:MS Access Age Calculation across tables 【发布时间】:2014-09-29 19:26:32 【问题描述】:

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

我对“学生数据库”模板进行了改造,以利用已经创建的表格和宏。

我有一个患者表,用于存储初始摄入时收集的所有数据:姓名、出生日期 (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】:

我找到了解决办法!

我用错了“查询”。我需要在创建查询时将该表添加到查询中,而不是试图强制它识别另一个表。 IE。: 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.*

用于第二个字段。通过添加“Patient Visit.*”,查询会将表中的所有字段添加到查询中。

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

我现在可以使用原版了

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

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

哇!

【讨论】:

以上是关于跨表的 MS Access 年龄计算的主要内容,如果未能解决你的问题,请参考以下文章

MS-Access - 自动提取表的最简单方法

基于表的 MS Access 报告引发“查询太复杂”错误

在 ms-access 中获取表的外键约束列表?

无法更改 MS Access MSysObjects 表的权限

MS Access 表的电子邮件地址验证

MS-Access - 使用加入另一个表的结果更新列