尽管它显示在查询数据表视图中,但无法从计数查询中获取结果

Can't get result from Count Query although it shows in Query Datasheet view

我正在尝试将 Count 查询的结果放入一个变量中以便我可以使用它(基本上我只需要知道它是否大于 0)。

我的代码如下所示:

                Set qdg = db.QueryDefs("quyGpSumReportCount")
                qdg.Sql = Replace(qdg.Sql, "plugtable", VigilTable)
                qdg.Sql = Replace(qdg.Sql, "plugchurch", "'" & vChurch & "'")
                Set rst = qdg.OpenRecordset("quyGpSumReportCount")
                Debug.Print "Total = " & rst!Total
                PartCnt = rst!Total
                rst.Close
                Set rst = Nothing

替换完成后,第一个教堂的查询本身如下所示:

FROM (SELECT DISTINCT t.fldUserID, v.[fldChurch/Parish] FROM tblSpring2022 _
AS t INNER JOIN tblVolunteers AS v ON t.[fldUserID] = v.[ID] WHERE _
 (v.[fldChurch/Parish] = '1548 Heights'))  AS [%$##@_Alias];

因为在 运行 之后我没有改回查询,所以我可以切换到数据表视图并查看结果:在字段总计中,有一个条目,它的值为 1 .(我 运行 它与几个不同的教堂一起得到,当然,不同但准确的值​​,包括 0 代表少数。)

但是我为捕获值所做的每一次尝试,都使用字段名称、Total 或 Fields(0) 或 rst.Fields(0) 或我能想到或找到的任何其他名称互联网,总是出现 Null。

所以查询是 运行ning 并返回正确的结果,但我似乎完全无法从 VBA.

中访问该结果

我做错了什么?

谢谢。

好的,我没有解决这个问题,你们解决了;但是已经解决了。

出于我完全无法理解的原因,qdg.OpenRecordset 和 qdf.OpenRecordset 都导致了数据转换错误。但是上面建议的 db.OpenRecordset 工作得很好。它不仅 运行,而且查询结果同时进入 MsgBox 和表单的文本框,使我可以使用它。

如果我能给评论点赞,我会;毕竟,解决方案就在那里。

感谢大家!