奇怪的结果是使用DSUM函数和参数进行MS Access Query

时间:2014-06-12 16:32:54

标签: ms-access ms-access-2010

我这个月刚刚开始使用MS Access,我有一个非常奇怪的错误。我正在尝试创建一个查询,该查询在一个表中搜索具有maxBenefit(来自不同表的字段的dsum,具有一对多关系的dsum)在一定范围内的记录。我使用DSUM函数获取maxBenefit,因为该表有一个需要加在一起的dailyBenefits字段。

这是我的功能:

maxBenefitOfQuote: Nz(DSum("[wholeYearBenefit]","tblDisabilityQuoteDailyBenefits",
         "[quoteID] = " & [tblDisabilityQuotes].[ID]))

我知道该函数有效,因为它产生了正确的值。该查询还从表单中获取两个参数,以创建maxBenefits的范围。

我使用此标准限制结果:

>=[Forms]![frmDisabilityFindSimilarQuotes]![minBenefitTotal] And 
<=[Forms]![frmDisabilityFindSimilarQuotes]![maxBenefitTotal]

问题是我从范围之外的maxBenefits查询得到非常奇怪的结果,或者没有返回范围内有maxBenefits的记录。如果我将minBenefitTotal设置为0并将最大BenefitTotal设置为100000000,则不会从查询返回任何记录。如果我将minBenefitTotal设置为0并将maxBenefitTotal设置为999999999,我将获得所有正确的记录。

为什么会发生这种情况?谢谢你提前。

1 个答案:

答案 0 :(得分:0)

首先,

尝试在对CCur的调用中包装两个输入:

>=CCur([Forms]![frmDisabilityFindSimilarQuotes]![minBenefitTotal]) And  
<=CCur([Forms]![frmDisabilityFindSimilarQuotes]![maxBenefitTotal])

接下来,

如果省略实际的表单输入,并将数字硬编码到条件中,它是否有效?
例如:(&gt; = 0和&lt; = 100000000)

如果有效......感觉就像一个字符串 - &gt;号码转换问题。在将其发送到查询之前,确保所有字符串输入实际上都是一个数字(通过CCur())。