在MS Access 2010中,我有两个表 - 一个包含候选者,另一个包含“包操作”。 Actions通过CandidateID字段与Candidates相关联,CandidateID字段是Candidates表中的自动编号。 Actions表具有每个操作的日期字段。我在Candidates字段中有一个字段,我想显示与该特定候选项相关的最新操作的操作类型,但似乎无法弄清楚如何操作。我已经尝试将子查询实现为默认值:
SELECT TOP 1 ActionT.ActionType FROM ActionT WHERE
(((ActionT.CandidateID)=13))
ORDER BY ActionT.DateCompleted DESC;
显然,这个查询本身只返回候选人13的最新动作,但理想情况下我想用=13
替换=CandidateID
,但我甚至无法填充该字段查询的结果是。我也尝试使用DLookup
,但在尝试将其设为默认值时出错。我也尝试使用“修改查找”按钮,将查询和DLookup直接粘贴到单元格中,并尝试将字段类型从“文本”更改为“已计算”,但都无济于事。
新手MS Access用户在这里,所以我感谢你们可能有任何额外的解释。
提前致谢。
编辑:
为了清楚起见,我本身并不是在寻找查询。我想知道如何使上面的查询结果始终是候选表中字段的值。 (如果上面的代码需要更正,我对此持开放态度,但这不是我的问题。)
示例:候选人A在与他关联的动作表中有几个动作。他们是ResumeRecieved,ResumeReviewed和Interviewed。与受访者相关的日期是最新的,因此在候选人表格中,候选人A的状态应为“受访者”。然后我们决定扩展优惠,因此我们向ActionTable“OfferExtended”添加操作。
CandidateTable for Candidate A中的Status字段应自动更新为“OfferExtended”
答案 0 :(得分:0)
在主SELECT STATEMENT中,您需要使用DateCompleted按降序排列的嵌套SELECT STATEMENT,以获取每个CondidateId的最新DateCompleted。
以下应该为您解决问题:
SELECT con.Id,
con.Name,
(SELECT TOP 1 ActionType FROM ActionT
WHERE CandidateId = con.Id ORDER BY DateCompleted DESC) AS ActionType
FROM Candidates AS con