跨表的 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 年龄计算的主要内容,如果未能解决你的问题,请参考以下文章