0

私はこれに少し慣れていないので、我慢してください。:)

Access 2007 データベースのフォームの 1 つにイベントを追加しようとしています。CustomerNumber フィールドに値を入力すると、OrderNumber フィールドがその顧客の次の注文番号を自動的に割り出すという考え方です。(その顧客が以前に 2 回注文した場合、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 は、その顧客の以前の注文が 3 つあること、つまり 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

私はそれを働かせました。最初の投稿をしたとき、私は間違った方向に向かっていたと思います。SQL で実行するのは簡単だったので、SQL バージョンを実行するための vba コードを作成しました。ありがとう、カブラル

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 に答える
0

なぜあなたがそれをあなたのように数えようとしているのか完全にはわかりませんが、あなたの唯一の目標が特定の顧客番号の注文数を取得することである場合、必要なものは

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