2008-09-16 13 views
6

Productテーブルなどの製品を表示するAccess 2007フォームを作成しました。 Productテーブルのフィールドの1つは、この製品の親カテゴリに対応するCategoryIDです。Access 2007でフォームコンボボックスをバインドする

フォームでは、CategoryIDは、Categoryテーブルにバインドされたコンボボックスとして表す必要があります。ここでのアイデアはかなり簡単です:新しいカテゴリを選択するとProductテーブルのCategoryIDが更新されるはずです。

私が遭遇している問題は、新しいカテゴリを選択すると、ProductテーブルのCategoryIDを更新するのではなく、CategoryテーブルのCategoryNameが更新されるということです。これは、コンボボックスがCategoryテーブルのCategoryNameにのみバインドされている必要があるためです。

現在の製品のCategoryIDが12で、カテゴリテーブルのCategoryName "Chairs"で新しい値を選択した場合、コンボボックスの "Tables"(CategoryID 13)はCategoryIDを更新します

カテゴリテーブルをcomboxボックスにバインドして、datatextfield(Accessに存在することを望みます)をCategoryNameにしてdatavaluefieldはCategoryIDであり、選択したコンボボックス項目が変更されたときにProductのCategoryIDのみが更新されますか?

編集:以下の受け入れ可能な回答を参照してください。また、列数を2に変更する必要があり、すべてが完全に機能するようになりました。

答えて

4

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

ああ、はいアリソンは、申し訳ありませんが、私は= 2

0

コンボボックスのColumnCountを設定し忘れてしまったまた、あなたのカテゴリテーブルは、[区分名]フィールドに主キーを持っていることを確認する必要があります。元の構成では、更新がキーに違反するとのエラーまたはメッセージがスローされているはずです。同じ名前の2つのカテゴリを持つことができるようです。