我正在制作一份表格,用于在保险单续订前分析财务数据。它需要提取各种溢价并从表中声明$$总计,并将它们插入表单中。从那里,它将与它们进行一些计算,但这应该是容易的部分。我最挣扎的是获取数据的SQL语句。
稍微缩小一点后,我发现问题是代码将SQL语句放入表单上的字段,而不是SQL语句应该提供的答案。我尝试了很多我在网上看过的东西,但无法弄清楚如何解决这个问题。
其中一个SQL语句如下所示:
L12W = "SELECT Sum(tblActPrem.APWrit) AS SumOfAPWrit FROM tblActPrem " _
& " WHERE tblActPrem.EntID = '" & Me.ctlActEntID & "' " _
& " AND tblActPrem.PolNum = '" & Me.ctltblRnwlTrack_PolNum & "'" _
& " AND tblActPrem.APDate BETWEEN #" & L12M & "# AND #" & Me.ctlRnwAnalysisDt & "#;"""
应从表中汇总保费数据,其中保单号和帐号与表单上的内容以及所选日期之间的匹配,并将该总数放入表单上的字段中。相反,我在表格中得到了这个:
SELECT Sum(tblActPrem.APWrit) AS SumOfAPWrit FROM tblActPrem WHERE tblActPrem.EntID = '1235' AND tblActPrem.PolNum = 'Policy1' AND tblActPrem.APDate BETWEEN #1/1/2014# AND #1/1/2015#;"
这正是语句应该如何运行,但是有人能告诉我如何从语句跳转到数据吗?
谢谢!
答案 0 :(得分:1)
考虑在表单字段的控件源中使用DLookup或DSum。
DLookup解决方案
首先,将您的VBA SQL查询更改为存储的SQL查询(引用表单控件时,不需要注意引号和#符号):
SELECT Sum(tblActPrem.APWrit) AS SumOfAPWrit
FROM tblActPrem
WHERE tblActPrem.EntID = Forms!<yourformname>!ctlActEntID
AND tblActPrem.PolNum = Forms!<yourformname>!ctltblRnwlTrack_PolNum
AND tblActPrem.APDate BETWEEN Forms!<yourformname>!L12M
AND Forms!<yourformname>!ctlRnwAnalysisDt
然后在表单字段文本框的控件源中使用DLookUp函数(不需要条件参数,因为它应该只返回一个值)。
= DLookUp("SumOfAPWrit", "<yournewqueryname>")
DSum解决方案
或者,您可以将整个SQL语句更改为DSum,但请注意条件(WHERE语句)必须有多长。
= DSum("APWrit", "tblActPrem", "EntID = Forms!<yourformname>!ctlActEntID
AND PolNum = Forms!<yourformname>!ctltblRnwlTrack_PolNum
AND APDate BETWEEN Forms!<yourformname>!L12M AND Forms!<yourformname>!ctlRnwAnalysisDt")