You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MS Access 连续窗体关联另一表下拉选择时记录集不可更新问题咨询

核心问题原因

你当前用了带筛选的子查询做左连接,Access默认会将这类关联查询标记为只读,和员工表主键无关,完全不需要修改原表主键影响已有选择功能。

最简单实现步骤

  1. 先修正SQL笔误
    你原SQL中ASGN.PayCode引用错误,子查询别名是ASGN_TEMP,外层没有ASGN这个别名,先修正为:
SELECT 
  CAT.EmployeeID, 
  CAT.FirstName, 
  CAT.LastName, 
  ASGN_TEMP.ShiftNum, 
  ASGN_TEMP.PayCode, 
  IIf(ASGN_TEMP.[ShiftNum] Is Null,0,-1) AS IsSelected 
FROM tblEmployees AS CAT 
LEFT JOIN (
  SELECT ASGN.EmployeeID, ASGN.ShiftNum, ASGN.PayCode 
  FROM tblAssignedEmployees AS ASGN 
  WHERE ASGN.ShiftNum = Forms!frmMainMenu![txtShiftNum]
)  AS ASGN_TEMP ON CAT.EmployeeID = ASGN_TEMP.EmployeeID;
  1. 开启查询可编辑权限
    打开连续窗体的属性面板,找到「数据」选项卡下的记录集类型,选择「动态集(允许不一致更新)**,保存窗体即可,此时PayCode字段就可以正常编辑,原有选择功能的代码完全不需要修改。
  2. 配置PayCode下拉组合框
  • 组合框控件来源绑定查询中的PayCode字段
  • 行源设置为SELECT PayCode, Desc FROM PayCodes ORDER BY ID,行源类型选择「表/查询」
  • 列数设为2,列宽设为0;2cm,绑定列设为1,即可实现用户看到薪资类别描述、后台存储PayCode编码的效果
  • 可选优化:在窗体的「当前」事件中添加以下代码,只有选中分配到当前班次的员工才能编辑PayCode,避免误操作:
Me.cboPayCode.Enabled = (Me.IsSelected = -1)

补充验证

如果调整记录集类型后仍无法更新,只需给tblAssignedEmployees表的EmployeeID+ShiftNum组合添加唯一索引,避免同一个员工同一个班次生成重复记录即可,不需要修改其他表结构。

内容的提问来源于stack exchange,提问作者user2059972

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 21:36:04