Access查询需求:在表单展示员工最后一次晋升日期与职级
Access表单显示员工最后一次晋升信息方案
核心思路
通过分组查询获取每个员工的最新晋升日期,再关联原表匹配对应职级,最终将这个查询作为表单的数据源。
分步实现
1. 编写SQL查询获取完整信息
如果直接用SQL视图,复制以下代码(注意替换字段名为你实际表中的字段名,比如EMP_ID是员工唯一标识,PROMO_DATE是晋升日期,POSITION是职级,NAME是员工姓名):
SELECT em.EMP_ID, em.NAME, em.DOH, ep.PROMO_DATE AS LAST_PROMO_DATE, ep.POSITION AS LAST_POSITION FROM emplmain em LEFT JOIN ( -- 子查询:获取每个员工的最后晋升日期 SELECT EMP_ID, MAX(PROMO_DATE) AS LAST_PROMO_DATE FROM emplpromotd GROUP BY EMP_ID ) lp ON em.EMP_ID = lp.EMP_ID LEFT JOIN emplpromotd ep ON lp.EMP_ID = ep.EMP_ID AND lp.LAST_PROMO_DATE = ep.PROMO_DATE
2. 用设计视图操作(适合SQL经验不足的情况)
- 新建查询,添加
emplmain和emplpromotd两张表; - 添加
emplmain中的EMP_ID、NAME、DOH字段到查询网格; - 添加
emplpromotd中的EMP_ID和PROMO_DATE字段,点击【总计】按钮,将EMP_ID的总计设为【分组】,PROMO_DATE的总计设为【最大值】; - 再次添加
emplpromotd中的POSITION字段,设置其关联条件:与已有的EMP_ID和最大值的PROMO_DATE匹配; - 保存这个查询,命名为
qry_EmployeeLastPromotion。
3. 绑定表单数据源
打开你的员工查询表单,在【属性表】中找到【数据源】,选择刚才创建的查询qry_EmployeeLastPromotion,然后添加对应的文本框控件绑定LAST_PROMO_DATE和LAST_POSITION字段即可。
注意事项
- 确保两张表的员工标识字段(比如
EMP_ID)是一致的,这样关联才会正确; - 如果有员工无晋升记录,
LAST_PROMO_DATE和LAST_POSITION会显示为空,若要显示默认文本,可修改SQL中的字段为:IIf(IsNull(ep.PROMO_DATE), "", ep.PROMO_DATE) AS LAST_PROMO_DATE, IIf(IsNull(ep.POSITION), "无晋升记录", ep.POSITION) AS LAST_POSITION
内容的提问来源于stack exchange,提问作者Bob Mantifel
相关产品推荐
相关产品推荐

