質問

たとえば、Product テーブルの Products を表示する Access 2007 フォームを作成しました。Product テーブルのフィールドの 1 つは、この製品の親カテゴリに対応する CategoryID です。

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

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

現在の製品のCategoryIDが12で、これはCategoryテーブルのCategoryName「Chairs」である場合、新しい値を選択します。たとえば、コンボボックスで「Tables」(CategoryID 13)を選択すると、CategoryID 12が新しい値で更新されます。 Product テーブルの CategoryID を 13 に更新する代わりに、CategoryName "Tables" を使用します。

datatextfield (Access に存在することが望ましい) が カテゴリ名、datavaluefield が カテゴリ ID になり、選択したコンボ ボックスの項目が変更されたときに製品のカテゴリ ID のみが更新されるように、カテゴリ テーブルをコンボックス ボックスにバインドするにはどうすればよいですか? ?

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

役に立ちましたか?

解決

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

ああ、はい、アリソン、ごめんなさい、コンボボックスの列数 = 2 に設定するのを忘れていました。

他のヒント

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top