質問: こんにちは。初歩的な質問なのですがお願いいたします。 テーブルのデータを1レコードずつ表示するフォームを作成しました。 そのフォームに年月日を、年、月、日、に分けて表示したいのですが、 テーブルには「年月日」フィールドしかないため、テーブルを参照して年、月、日を分けるクエリを作成しました。 そのクエリからフォームに年、月、日を表示するようにしたのですが フォームに次のレコードのデータを表示しても、年月日だけ最初の1レコード目のデータを参照し続けます。 そこで、Dlookup を使ってフォームのIDフィールドと同じIDのレコードを参照するようにしたのですが エラーになってしまいます。 作成したものは以下のようになります。 テーブルA ID 年月日 クエリB IDフィールド → テーブルAのIDフィールドを参照 年月日フィールド → テーブルAの年月日フィールドを参照 年フィールド → 年:Year([年月日]) ←クエリBの年月日フィールドから年だけを取り出している 月フィールド → 月:Month([年月日]) ←クエリBの年月日フィールドから月だけを取り出している 日フィールド → 日:Day([年月日]) ←クエリBの年月日フィールドから日だけを取り出している フォームC ID → テーブルAのIDフィールドを表示 --------------------年月日が1レコード目のデータしか表示されない時の書き方----------------------- 年 → =DLookUp("年","クエリB") ← クエリBの年フィールドを表示 月 → =DLookUp("月","クエリB") ← クエリBの月フィールドを表示 日 → =DLookUp("日","クエリB") ← クエリBの月フィールドを表示 ↑エラーにならないが、最初の1レコード目のデータしか表示しない -----------------------------年月日がエラーになる時の書き方------------------------------------ 年 → =DLookup("[年]","[クエリB]","[ID]=" & Forms![フォームC]![ID]) ← エラーになる 月 → =DLookup("[月]","[クエリB]","[ID]=" & Forms![フォームC]![ID]) ← エラーになる 日 → =DLookup("[日]","[クエリB]","[ID]=" & Forms![フォームC]![ID]) ← エラーになる ↑フォームCに表示したIDと、クエリBのIDが同じレコードの 年、月、日を表示しようとした書き方 ---------------------------------------------------------------------------------------------- IDに対応した年月日を表示したいのです。 ご教授よろしくお願いいたします。
回答: 現状はテキストボックスのコントロールソースに、 =DLookUp("年","クエリB") という式を設定しているのですか。 また、フォームの「レコードソース」プロパティには「クエリB」と設定されていますか。 だとしたら、テキストボックスのコントロールソースを下記のようにフィールド名に変更すれば、対応するレコードのデータが表示されます。 年 月 と 日 も同様です。 あるいは、クエリで 年、月、日 の演算フィールドを作成せずに、 テキストボックスのコントロールソースに直接下記のように式を設定してもOKです。 =Year([年月日]) =Month([年月日]) =Day([年月日]) DLookupはレコードソースにないテーブルのデータを参照するときに使うものです。