6

I've created an Access 2007 form that displays, for example, Products from a Product table. One of the fields in the Product table is a CategoryID that corresponds to this product's parent category.

In the form, the CategoryID needs to be represented as a combo box that is bound to the Category table. The idea here is pretty straightforward: selecting a new Category should update the CategoryID in the Product table.

The problem I'm running into is that selecting a new Category updates the CategoryName of the Category table instead of updating the CategoryID in the Product table. The reason for this is that it seems that the combo box must be bound only to the CategoryName of the Category table.

What happens is if the current product has a CategoryID of 12 which is the CategoryName "Chairs" in the Category table then selecting a new value, let's say "Tables" (CategoryID 13) in the combo box updates the CategoryID of 12 with the new CategoryName "Tables" instead of updating the Product table CategoryID to 13.

How can I bind the Category table to a combox box so that the datatextfield (which I wish existed in Access) is the CategoryName and the datavaluefield is the CategoryID and only the CategoryID of the Product will be updated when the selected combo box item is changed?

Edit: See the accepted answer below. I also needed to change the column count to 2 and everything started to work perfectly.

4

2 に答える 2

5

コンボボックスのクエリでは、両方の値を使用する必要があります。
例:SELECT CategoryId、CategoryName FROMCategoryTable...コンボボックスを最初の列CategoryIdにバインドします。コンボボックスの列幅を0inに設定します(2番目の値は必要ないため、制限はありません)。これにより、選択した値を含む最初の列が非表示になります。それはあなたが見たいすべてである説明値をそれに示しています。したがって、コンボボックスで別のオプションを選択すると、コンボボックスによって返される値は、CategoryNameではなく、バインドされた値、CategoryIdになります。

ああ、はい、アリソン、申し訳ありませんが、コンボボックスのcolumncount=2を設定するのを忘れました。

于 2008-09-16T03:10:47.067 に答える
0

また、Categories テーブルの CategoryName フィールドに主キーがあることも確認する必要があります。元の構成では、更新がキーに違反することを示すエラーまたはメッセージがスローされているはずです。そのままでは、同じ名前のカテゴリを 2 つ持つことができるようです。

于 2008-09-17T02:03:44.443 に答える