MS Access - 如果找到匹配

时间:2016-11-26 19:11:46

标签: ms-access

我正在使用MS Access查询。我有一个价格表,其中包含几个与实际发票数据匹配的项目,以查找差异。让我具体一点。价格表可以有重复的项目编号,但它们之间唯一不同的是频率(在本例中是它的垫子租赁)。以下是价目表数据的示例:

price list

进入的发票数据包含按项目编号列出的项目,但不包括频率。以下是发票数据的示例:

invoice data

我目前设置了一个查询,用于返回已支付总金额和从价格表中计算出的总金额的差额。查询只是匹配项目编号并返回差异[总价格] - [价格列表*数量]。以下是查询当前返回数据的方式:

enter image description here

我想查询要做的只是在有问题时才返回记录,这意味着发票上收取的价格与任何价格表价格都不匹配。如果发票实际上有频率数据,这不是问题。但是,由于发票没有,我需要查看发票单价并查看它是否与价目表上的任何价格相匹配。如果是的话,我没有问题。在上面的示例中,发票#1不需要显示,因为1.80美元的单价与价格表中的双周价格相匹配,发票#2不需要显示,因为单价1.20美元匹配价目表中的每周价格。发票#3是一个问题,因为2.70美元的单价与价格表上该项目的任何价格都不匹配。现在,我应该使用价目表中的哪个价格来计算差价?我可以使用最小值或最大值或最接近的值,该部分并不重要,我只需要提出方法和查询,只返回不匹配任何价格的记录在价目表上。

让我们以最接近的价格来计算差额。如果我使用它,那么查询应返回的唯一记录是:

enter image description here

希望这是有道理的。最后,我要做的是拿出发票记录,浏览价目表以查找价格是否匹配,如果没有,则返回使用最近金额计算差额的记录。如果您不认为只需设计查询即可完成,那么请告诉我,也许我可以编写一个小方法。

提前感谢您的回答!!

1 个答案:

答案 0 :(得分:1)

您可以使用单一价格的左连接运行报价以查询,保留报表中的所有记录。然后从单价中过滤掉任何空字段。

然后你的多付款,只是一个表达式,从另一个中减去一个。即“多付:( ReportPrice - UnitPrice)* Units”

您可以使用一个查询执行此操作,但如果您想使用两个查询,则不会造成任何损害。