如何将查询结果输入文本字段



我正在创建一个会计数据库。对于财务结果,我的表单有一个文本字段("以前的解决方案"),其中显示了前几个月的解决方案。该确切金额是通过以下查询计算的:

SELECT      [sq Argenta Prep Vorig Saldo].Account, 
Sum([sq Argenta Prep Vorig Saldo].SomVanBedrag) AS SomVanSomVanBedrag 
FROM        [sq Argenta Prep Vorig Saldo] 
WHERE       (((Year([Boekdatum]) & "/" & Month([Boekdatum]))<"2022/6")) 
GROUP BY    [sq Argenta Prep Vorig Saldo].Account 
HAVING      ((([sq Argenta Prep Vorig Saldo].Account)="BE61973184860917"));

账号("BE61973184860917")和截止日期("2022/6")当然用变量代替。该查询正是我希望它执行的操作。当我在Access中运行此查询时,我会得到预期的结果。问题是:如何将查询结果输入表单上的文本字段(上一个Solde)?

可以简化SQL

SELECT Sum([sq Argenta Prep Vorig Saldo].SomVanBedrag) AS SomVanSomVanBedrag 
FROM [sq Argenta Prep Vorig Saldo] 
WHERE Format([Boekdatum], "yyyy/mm") < "2022/06"
AND [sq Argenta Prep Vorig Saldo].Account = "BE61973184860917";

然后使用文本框中的DLookup()域聚合函数表达式从该查询中提取
=DLookup("SomVanSomVanBedrag", "queryname")

或者不要使用query,而是在文本框中使用DSum()域聚合函数表达式。

=DSum("SomVanBedrag", "sq Argenta Prep Vorig Saldo", 
"Format(Boekdatum, 'yyyy/mm') < '2022/06' AND Account = 'BE61973184860917'")

请注意在月份部分使用占位符零。如果没有它,记录将无法正确筛选/排序——2022/12将小于2022/6。这意味着在12月运行的查询将不会检索到同一年的2月至9月的数据。即使该值被构造为不带/的数字,也需要0。如果用户从组合框中进行选择,请确保值中包含2位数月份的占位符0。

简单的方法是在该文本框的ControlSource中使用DSum

我想,要包含来自另外两个名为txtDatumtxtAccount的文本框的参数,其中包含值BE619731848609172022/6:

=DSum("[SomVanBedrag]","[sq Argenta Prep Vorig Saldo]","[Boekdatum] < DateValue(" & [txtDatum] & ") And [Account] = '" & [txtAccount] & "'")