2014-07-02 216 views
0

我的数据库用于计算由于销售员而产生的佣金。佣金百分比是分层的,因此随着总销售额的增加而增加。例如,如果销售员的销售额达到100美元,则销售员支付2%;如果他们达到500美元,则销售员支付3%;如果达到1000美元,销售员支付4%。MS Access中的DMIN查询

db有两个表格用于计算销售员的佣金。

  • 销售记录所有的销售制成,有两个字段:[销售员]识别谁做销售和价值它记录的销售总量。
  • CommissionRates具有基于在一个时间段期间出售的总量分层佣金结构,并具有两个字段:[最大金额]其中确定了一个速率层和[速率]这给上限当总销售额高于相关[最高金额]时到期的百分比。

我需要创建一个查询(或vba输出到一个表),结合这两个表,返回每个销售人员获得的佣金数量,给定时间段内计算的总销售额乘以所达到的销售额的最大利率。

我很难过。我尝试了几种使用DMIN函数的方法,但是在执行查询时反复得到“未知”响应。当我用固定数字替换Sum([Sales].[value])时,代码下面的代码完美工作,但使用变量失败并出现“未知”错误。

Sum([Sales].[Value])*DMin("Rate","CommissionRates","[Max_Amount] >=Sum([Sales].[Value])" 

任何建议,非常感谢。

+0

简单的答案是在Access中没有内置的DMIN功能。我现在无法为你写出一个完整的例子,但我的第一个想法是只在一个子查询中完成。换句话说,创建一个完全独立的查询,将salespersonID的值最小化。然后将您的主要查询留在该查询中。你尝试过这种方法吗? – PowerUser

+1

@PowerUser:当然有一个DMin函数(https://office.microsoft.com/en-nz/access-help/dmin-dmax-functions-HA001228826.aspx)。 – VBlades

+0

@VBlades,我站好了。谢谢。 – PowerUser

回答

2

看起来像变量级联错误。试试这个:

DMin("Rate","CommissionRates","[Max_Amount] >= " & Sum([Sales].[Value])) 
+0

非常感谢@VBlades。就是这样! – jlibs

+0

@jlibs:非常欢迎! – VBlades