我正在创建一个会计数据库。对于财务结果,我的表单有一个文本字段("以前的解决方案"),其中显示了前几个月的解决方案。该确切金额是通过以下查询计算的:
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
。
我想,要包含来自另外两个名为txtDatum
和txtAccount
的文本框的参数,其中包含值BE61973184860917
和2022/6
:
=DSum("[SomVanBedrag]","[sq Argenta Prep Vorig Saldo]","[Boekdatum] < DateValue(" & [txtDatum] & ") And [Account] = '" & [txtAccount] & "'")