在Access SQL

时间:2016-02-17 18:56:49

标签: sql date ms-access

请你帮我弄清楚如何完成以下任务。

我有一个表格,其中包含一个日期与另一个日期之间可用的产品数量,如下所示:

TABLE MyProducts

DateProduct  ProductId   Quantity   Price  
26/02/2016      7          2        100
27/02/2016      7          3        100
28/02/2016      7          4        100

我创建了一个表单,用户需要选择日期范围和他们要查找的产品数量(在我的示例中,产品数量将为1)。

在此示例中,我们假设用户进行以下选择:

SELECT SUM(MyProducts.Price) As TotalPrice
FROM MyProducts WHERE MyProducts.DateProduct 
Between #2/26/2016# And #2/29/2016#-1 AND MyProducts.Quantity>=1

现在用户可以看到1个产品的总费用:300

但是,对于此日期范围,我想允许用户从组合框中选择他们仍然可以购买的产品数量:如果您查看此日期费率的数量,用户只能购买最多2个产品,因为2是可用的最低数量,这是查询中列出的所有日期的共同点。

第一个问题:如何使用" 1到2"来组合组合框?列表(在这种情况下),考虑到2是该用户查询的所有日期的最低可用数量?

第二个问题:如何管理用户购买的产品。 假设用户在此日期范围内购买了1个产品,而第二个用户在相同的日期范围内购买了相同数量的产品(即1),此日期范围内已购买的产品总数为2个。我怎样才能看到这个日期费率并给出这个案例实际可用的产品数量是:

DateProduct  ProductId   Quantity   Price  
    26/02/2016      7          0        100
    27/02/2016      7          1        100
    28/02/2016      7          2        100

提前感谢您,如果您需要更多信息,请告诉我。

1 个答案:

答案 0 :(得分:1)

你可以用一个整数字段创建一个表,从1到你可以期望的最大数量。然后创建一个查询,该查询只会将新表中的行返回到MyProducts表中的min()数量。使用该查询作为组合框的控制源。

编辑:您实际上需要两个查询。第一个应该是:

SELECT Min(MyProducts.Quantity) AS MinQty FROM MyProducts;

我称之为“qryMinimumProductQty”。我使用一个名为“Sequence”的整数字段创建名为“Numbering”的表。第二个问题:

SELECT Numbering.Sequence FROM Numbering, qryMinimumProductQty WHERE Numbering.Sequence<=qryMinimumProductQty.MinQty;

AFAIK没有Access功能/功能,它将填充组合框控制源中的一系列数字。你必须自己构建控制源。 (拥有更多VBA经验的人可能有解决方案来解决这个问题,但我没有。)

这让我想到整个表只有一个整数列只用于组合框。组合框的简单方法只是在表单的控件中显示可用的数量,为用户提供未绑定的文本框以输入其订单数量,并添加验证规则以停止订单并在他们选择时通知他们一个大于手头数量的数字。 (只是一个想法)

关于你的第二个问题,我也不太明白你在寻找什么。听起来可能还有另一张购物表?它应该是一个简单的查询,将MyProducts与Purchases联系起来,并在你的MyProducts!qty和Purchases!qty之间取得差异。如果您没有用于存储购买的表格,则可能需要根据我对您的系统的粗略理解来保证。