2013-07-08 62 views
0

我對這個有點新,所以忍受着我。 :)VBA Access 2007依賴自動增量

我想在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

我有下面的代碼,但我在使用設置於訂單表(變量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 

由於提前,

卡布拉爾

+0

將不止一個人曾經使用的應用程序在同一時間? – HansUp

+0

@Hansup:是的,它可能會被多個人同時使用。 – Cabral

回答

0

我不完全知道爲什麼你嘗試去數你的方式,但如果你唯一的目標就是拿到訂單數爲給定客戶編號你需要的是

DCount("OrderNumber", "Orders", "CustomerNumber = " & myCustNo) 
+0

你好shareef,由於某種原因,我不適合我 – Cabral

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 
+0

沒關係,因爲不同的用戶會有不同的客戶數量。訂單號碼不是唯一的,而是客戶和訂單號碼的組合。 – Cabral