2013-07-08 2 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.

У меня есть следующий код, но у меня возникают проблемы с созданием ссылок на таблицы Orders (переменная у), так что он может подсчитать количество заказов для этого клиента.

Любые идеи?

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

Смежные вопросы