2

3 つのコンボ ボックスを持つフォーム (MS-Access 2003) があります。1 番目 (カテゴリ)、2 番目 (CatDetail)、3 番目 (NbrValue)。1st からの更新後のイベントで 2nd に問題はありません。2番目の同様の更新イベントを実行して3番目を更新しようとすると、問題が発生します。これが私のコードです。

表 1 (カテゴリ)

CategoryID    Category Name
1             Vacation
2             DH

1 番目のコンボ ボックス (カテゴリ) SQL

SELECT Category.CategoryID, Category.[Category Name]
FROM Category
ORDER BY Category.[Category Name];

最初のコンボ ボックス (カテゴリ) の VBA を更新した後

Option Compare Database
Private Sub Category_AfterUpdate()
Me.CatDetail = Null
Me.CatDetail.Requery
Me.CatDetail = Me.CatDetail.ItemData(0)
End Sub

表 2 (CatDetail)

CatDetail ID    CatDetail         Category
1               Vac Day Used      Vacation
2               Partial Vac Day   Vacation
3               DH Gain           DH
4               DH Used           DH

2 番目のコンボ ボックス SQL (CatDetail)

SELECT CatDetail.[CatDetail ID], CatDetail.[CatDetail Name], CatDetail.CategoryID
FROM CatDetail
WHERE (((CatDetail.CategoryID)=[Forms]![Combo Form]![Category]));

2 番目のコンボ ボックス (CatDetail) の VBA を更新した後

Private Sub CatDetail_AfterUpdate()
Me.NbrValue = Null
Me.NbrValue.Requery
Me.NbrValue = Me.NbrValue.ItemData(0)
End Sub

この部分はうまく機能します。次のセットで 3 番目のコンボ ボックスを更新するのに迷っています。

表 3 (値)

ValueID     Value    CatDetail Name
1           -1       Vac Day Used
2           -0.5     Partial Vac Day
3           1        DH Gain
4           -1       DH Used

3 番目のコンボ ボックス (NbrValue) SQL

SELECT Value.ValueID, Value.Value, Value.[CatDetail Name]
FROM [Value]
WHERE (((Value.[CatDetail Name])=[Forms]![Combo Form]![CatDetail]));

要約すると、最初のコンボ ボックスの値を選択できます。その選択の後、2 番目のコンボ ボックスがすべての対応する値で更新されます。問題は、2 番目のコンボ ボックスの after update イベントで、3 番目のコンボ ボックスが空白に戻ることです。

4

1 に答える 1

1

私はいつもこれをしています。AfterUpdate() で、依存コンボボックスの行ソースを設定します。

Sub Combo1_AfterUpdate()

 comboBox2.RowSource = "SELECT .... WHERE FIELD = " & Combo1.Value

 comboBox3.RowSource = ""  ' Reset the third combo until after the 2nd is set.

End Sub
Sub Combo2_AfterUpdate()

 comboBox3.RowSource = "SELECT .... WHERE FIELD = " & Combo2.Value

End Sub

これは、クエリが実際に何かを返している場合に機能します。

于 2013-02-11T17:43:58.107 に答える