Access 2007 VBA:从使用多个变量的SQL语句返回数据

时间:2015-01-23 19:43:39

标签: sql vba ms-access-2007

我正在制作一份表格,用于在保险单续订前分析财务数据。它需要提取各种溢价并从表中声明$$总计,并将它们插入表单中。从那里,它将与它们进行一些计算,但这应该是容易的部分。我最挣扎的是获取数据的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#;"

这正是语句应该如何运行,但是有人能告诉我如何从语句跳转到数据吗?

谢谢!

1 个答案:

答案 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")