1

2 つのコンボ ボックスを含むフォーム (fCen1-20) があります。最初のコンボ ボックスは Lookup Value と呼ばれ、ドロップダウンには、データベース内のすべてのテーブルの主キーとして機能する Lookup_Value フィールドが含まれています。2 番目のコンボ ボックスは [カテゴリ] と呼ばれ、ドロップダウンには [カテゴリ]、[コード]、および [テーブル] フィールドが含まれています。

ユーザーがルックアップ値とカテゴリを選択し、それらの選択に対して、選択したルックアップ値に対して選択したカテゴリの値を返すクエリを通知したいと思います。複雑な要因は、各ルックアップ値が 1500 を超える一意の情報カテゴリに関連付けられており、それぞれに一意のコードが割り当てられていることです。このコードはフィールド名として機能します。

ご参考までに、私のコードと私の理論的根拠を以下に貼り付けました。

SELECT [Forms]![fCen1-20]![Category 1].Code 
' Rationale: Get the value for the Code associated with a given category

FROM [Forms]![fCen1-20]![Category 1].Table 
' Rationale: Reference the Table where the selected Category/Code is housed

ON [Forms]![fCen1-20]![Category 1].Table.Lookup_Value = _ 
        [Forms]![fCen1-20].[Lookup Value]; 
' Rationale: Select only those records in the table 
' for which the Lookup_Value field matches the Lookup Value  
' selected in the form

このコードを実行すると、「FROM 句の構文エラー」というエラーが表示されます。これを機能させる方法について何か提案はありますか? 追加の詳細や説明が必要な場合はお知らせください。ありがとう!

4

1 に答える 1

1

これをクエリで使用する場合、フォームfCen1-20がフォーム ビューで開かれていると想定して動作する可能性があります。

SELECT [Forms]![fCen1-20]![Category 1]

返される値は、現在選択されているコンボ ボックス行のバインドされた列から取得されます。3 つの列が含まれているという事実[Category 1]は重要ではありません。データベースエンジンは、「バインド」された列のみを認識します。(コンボのプロパティ シートの [データ] タブで、コンボの [バインドされた列] プロパティを確認してください。) バインドされた値は、クエリで使用できる唯一のコンボ値です。

これらの列から値を取得するために列名をコンボ名に追加することはできないため、これらは両方とも失敗します。

[Forms]![fCen1-20]![Category 1].Code
[Forms]![fCen1-20]![Category 1].Table

それが、あなたのアプローチが機能していないと私が信じる理由についての私の説明でした。ただし、代わりに何を提案すればよいかわかりません。一般に、テーブルの主キーをコンボのバインドされた値として使用する場合、そのバインドされた値をDLookupクエリの式で使用できます。例として、すべての値が数値であると仮定すると...

SELECT fld1, fld2, etc
FROM YourTable
WHERE some_field = DLookup(
    "lookup_field",
    "AnotherTable",
    "pkey_field = " & [Forms]![fCen1-20]![Category 1]
    );

残念ながら、あなたが達成しようとしていることを明確に理解していないため、その提案があなたの状況に役立つかどうかはわかりません.

于 2013-08-09T17:09:12.777 に答える