gpt4 book ai didi

ms-access - 查询是只读的,可能是由于聚合值

转载 作者:行者123 更新时间:2023-12-04 10:53:16 25 4
gpt4 key购买 nike

有一个现有的 MS-Access 项目(不是我做的),人们想在那里得到一个 附加栏进入高级过滤器的数据表。
想象一个简单的直接查询填充到 数据表 View 中的表单 .人们可以使用内置过滤器和排序选项。
对于基础表(我们称其为 MainTable ),还有另一个带有审计数据的相关表(称其为 AuditTable )。 MainTable 中的任何更改写到这里 AuditTable并且必须在另一个进程中被 super 用户接受。
现在我要添加审计行数 尚不接受可见数据表。就像是

SELECT Count(*) AS OpenAudit 
FROM AuditTable
WHERE MainTableID=MainTable.ID --<-- MainTableID is the FK in AuditTable onto the ID of MainTable
AND Accepted=0
GROUP BY MainTableID
将此添加到基础查询并在新列中显示值非常有效。过滤,排序,一切正常。我尝试了它以及子选择的列和作为从子句中加入的辅助查询。
但是现在出现了这个问题:
数据表突然变为只读。用户不能再更改那里的任何数据。
我发现,包含聚合数据和/或子选择或查询组成的堆叠查询的查询将导致只读记录集 (list by Allen Brown) .
这是问题:
是否有任何方法可以在不将 RecordSource 更改为只读集的情况下将此类数据包含在记录集中?
一些简单的样本数据
MainTable
ID SomeValue OneMore
1 val 1 more 1
2 val 2 more 2
3 val 3 more 3

AuditTable
ID MainTableID Accepted --(+ more columns with fieldname, valueBefore and valueAfter etc)
1 1 1
2 1 0
3 2 1
4 3 0
5 3 0

The expected Result
ID SomeValue OneMore CountOfOpenAudits
1 val 1 more 1 1
2 val 2 more 2 0
3 val 3 more 3 2
这个额外的列应该在用户的 GUI 中以某种方式可见,而无需将记录集更改为只读。
希望这很清楚,TIA!

最佳答案

您可以使用域聚合函数,例如 DCount ,不过,它会更慢。

例如:

select t.*, dcount("*","AuditTable","MainTableID=" & t.ID & " and Accepted=0") as OpenAudits
from MainTable t

关于ms-access - 查询是只读的,可能是由于聚合值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59361476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com