查询是只读的可能是由于聚合值
Query is read-only probably due to an aggregated value
有一个现有的 MS-Access 项目(不是我完成的),人们希望在其中将 附加列 放入数据 sheet 中以用于高级过滤器。
想象一下,一个简单直接的查询填充到数据 sheet 视图 中的 表单。人们可以使用内置的过滤器和排序选项。
对于基础 table(我们称之为 MainTable
),还有另一个与审计数据相关的 table(称之为 AuditTable
)。 MainTable
中的任何更改都会写入此 AuditTable
,并且必须由另一个进程中的超级用户接受。
现在我想将尚未接受的审计行数添加到可见数据sheet。像
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
将其添加到基础查询并在新列中显示值非常有用。过滤、排序,一切正常。我尝试了它以及 子选择的列 和作为 侧查询加入 from 子句 .
但是现在出现了这个问题:
数据sheet突然变成只读了。用户不能再在那里更改任何数据。
我发现,查询 包含聚合数据 and/or 子选择 或包含 [=43= 的查询]堆叠查询 将导致只读记录集(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 项目(不是我完成的),人们希望在其中将 附加列 放入数据 sheet 中以用于高级过滤器。
想象一下,一个简单直接的查询填充到数据 sheet 视图 中的 表单。人们可以使用内置的过滤器和排序选项。
对于基础 table(我们称之为 MainTable
),还有另一个与审计数据相关的 table(称之为 AuditTable
)。 MainTable
中的任何更改都会写入此 AuditTable
,并且必须由另一个进程中的超级用户接受。
现在我想将尚未接受的审计行数添加到可见数据sheet。像
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
将其添加到基础查询并在新列中显示值非常有用。过滤、排序,一切正常。我尝试了它以及 子选择的列 和作为 侧查询加入 from 子句 .
但是现在出现了这个问题:
数据sheet突然变成只读了。用户不能再在那里更改任何数据。
我发现,查询 包含聚合数据 and/or 子选择 或包含 [=43= 的查询]堆叠查询 将导致只读记录集(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