tldr:由于聚合函数,无法从查询中更新记录。您建议了哪些变通方法?
我有一个包含决策标准的表,用户可以为其指定相对权重。我使用聚合函数计算SQL查询中的绝对权重(如此处所述Divide the value of each row by the SUM of this column)。
qryDecisionCriteria
name relative_weight absolute_weight (calculated)
price 2 50 %
quality 1 25 %
experience 1 25 %
我想以一种形式呈现查询结果,用户可以更新相对权重,然后看到 absolute_weights。 但是,查询结果不可更新,因为查询涉及聚合函数。
我可以使用哪些替代方法或变通方法,以便用户可以编辑relative_weights并将absolute_weights视为一种视觉反馈?
我在这里阅读了临时表http://www.fmsinc.com/MicrosoftAccess/query/non-updateable/index.html,但我不确定,如何实现这一点。 也许我还可以创建一个额外的"编辑表格"基于简单查询,当用户在qryDecisionCriteria数据中选择记录时自动调用? 或者只是在表单中显示来自两个查询(一个可更新,一个带有计算字段)的数据?
您会推荐哪些选项?为什么?
答案 0 :(得分:2)
为表单创建Record Source
可更新的基本查询。在显示计算的绝对重量的文本框中,将控制源设置为
=DSum("relative_weight","<base table name>")/Forms!<Form Name>!relative_weight
您需要确保使用此
做两件事Forms!<Form Name>!relative_weight
保证引用字段而不是文本框。在relative_weight
文本框的AfterChange事件中,您应该添加一个事件处理程序,其中运行以下代码
txtabsolute_weight.Requery
这将确保每当有人改变体重时重新计算公式。否则他们需要点击F5。