仅使某些查询字段可编辑
Posted
技术标签:
【中文标题】仅使某些查询字段可编辑【英文标题】:Make only some query fields editable 【发布时间】:2021-03-30 17:37:14 【问题描述】:我有一个联结表 (FTE),它链接两个表“Employees”和“ProjectList”,以及联结表的其他两个字段(“Hours”和“Entry Date”)。我有一个表单,员工可以通过在 ProjectList 表中的列表中选择一个项目(他的名字使用他的 Windows 登录名自动填充)来输入他的工作时间,并输入日期。 在该表单上,我还有一个子表单,显示连接表中过去的条目(仅适用于登录的人)。填充该子表单的查询是
SELECT Employees.[Full Name], ProjectList.ProjectName, FTE.Hours, FTE.[Entry Date]
FROM ProjectList INNER JOIN (FTE INNER JOIN Employees ON FTE.EmployeeID = Employees.ID) ON
ProjectList.ID = FTE.ProjectID
WHERE (((FTE.EmployeeID)=[Forms]![HoursLog]![txb_EmployeeID]));
所以这是我的问题:当员工进入子表单查询并更改子查询表中的名称或项目时,它实际上更改了原始员工和 ProjectList 表中的名称或项目名称,而不仅仅是在联结表中.如果他们犯了错误但不影响“原始员工和 ProjectList 表,我希望他们能够更改日期和时间。 由于 subfrm 由查询填充,是否可以仅使日期和时间可编辑。还是我必须彻底改变表单的设计方式?
【问题讨论】:
【参考方案1】:如果您使用表单,正确的方法当然是在您不想编辑的控件上将 Locked 设置为 True 或 Enabled 设置为 False。
但是,如果您直接使用查询,则可以通过将字段设为计算字段来轻松禁用编辑,例如对于文本字段:
SELECT Employees.[Full Name], ProjectList.ProjectName + '' As ProjectName, FTE.Hours, FTE.[Entry Date]
FROM ProjectList INNER JOIN (FTE INNER JOIN Employees ON FTE.EmployeeID = Employees.ID) ON
ProjectList.ID = FTE.ProjectID
WHERE (((FTE.EmployeeID)=[Forms]![HoursLog]![txb_EmployeeID]));
对于数字字段,可以加0。如果不知道字段类型,也可以使用IIF
:IIF(True, ProjectList.ProjectName, ProjectList.ProjectName) As ProjectName
【讨论】:
这行得通!但我只是想知道,一旦我有多个人选择一个项目,为什么如果一个人更改其记录中的项目名称,它会更改原始列表中的项目名称?这与我的餐桌关系有关吗?我在这里遗漏了一些东西。 您正在从 projectlist 表中检索项目名称,所以当用户进行更改时,它会在其中更改,就这么简单。以上是关于仅使某些查询字段可编辑的主要内容,如果未能解决你的问题,请参考以下文章
jQuery Mobile - 仅使可折叠小部件的某些部分处于活动状态