0

我对此有点陌生,所以请耐心等待。:)

我正在尝试向 Access 2007 数据库中的一个表单添加一个事件。这个想法是,通过在 CustomerNumber 字段中输入一个值,OrderNumber 字段将自动计算出该客户的下一个订单号。(如果该客户之前有两个订单,那么 OrderNumber 将为 3)

例如,假设我们有一张表:

Orders
CustomerNumber    OrderNumber    Description
1                  1              Whatever
1                  2              Blah
2                  1              Yada
5                  1              Yada
2                  2              Yada
1                  3              Foo

在这种情况下,如果我们键入 CustomerNumber =1,那么 OrderNumber 将看到该客户有三个先前的订单,因此 OrderNumber =4。

同样,如果 CustomerNumber = 2,则 OrderNumber = 3。

我有以下代码,但在设置对 Orders 表(变量 y)的引用时遇到问题,以便它可以计算该客户的订单数。

有任何想法吗?

Private Sub CustomerNumber_AfterUpdate()
Dim CustNo As Integer
Dim x As Integer
Dim y As Object
CustNo = CustomerNumber.Value
y = Nz(DLookup("CustomerNumber", "Orders"), "")
x = DCount("OrderNumber", "Orders", CustNo = y)
OrderNumber = x + 1
End Sub

提前致谢,

卡布拉尔

4

2 回答 2

0

我不完全确定您为什么要按自己的方式计算它,但是如果您的唯一目标是获取给定客户编号的订单计数,那么您需要的是

DCount("OrderNumber", "Orders", "CustomerNumber = " & myCustNo)
于 2013-07-08T18:29:57.713 回答
0

我让它工作。我认为当我发布最初的帖子时,我走错了方向。在 sql 中很容易做到,所以我创建了一个 vba 代码来运行 sql 版本。谢谢, 卡布拉尔

Private Sub CustomerNumber_AfterUpdate()
Dim CustNo As Integer
Dim sqlQuery As Object
CustNo = CustomerNumber.Value
Set sqlQuery = CurrentDb.OpenRecordset("SELECT COUNT(Orders.CustomerNumber)as Count FROM Orders WHERE CustomerNumber = " & CustNo & ";")
OrderNumber = sqlQuery.Count + 1
End Sub
于 2013-07-08T19:06:51.937 回答