Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(その他 : Microsoft 365)
Dlookup表示項目をfilterできない
投稿日時: 23/12/12 16:58:12
投稿者: 滝沢

テーブルが下記の2つあります。
・販売履歴テーブル
顧客cd−販売日−商品cd−数量
・顧客マスタ
顧客cd−顧客名−住所
 
フォームが下記の1つあります。
・販売履歴フォーム
レコードソースが販売履歴テーブル(クエリではない)の帳票フォーム
表示項目:顧客cd−顧客名(Dlookup使用)−販売日−商品cd−数量
−−−−−−−−−
  Me.Filter = "顧客名 like '*" & Me.txt_検索ボックス & "*'"
  Me.FilterOn = True
 
販売履歴フォームで上記を行うと1件も表示されません。
顧客名以外で同様のFilterOnは正しく動作します。
Dlookup表示しているだけの項目は抽出できない仕様でしょうか?
 
よろしくお願い致します。

回答
投稿日時: 23/12/12 17:31:19
投稿者: Suzu

滝沢 さんの引用:
Dlookup表示しているだけの項目は抽出できない仕様でしょうか?

 
その通りです。

回答
投稿日時: 23/12/12 17:35:19
投稿者: sk

引用:
・販売履歴フォーム
レコードソースが販売履歴テーブル(クエリではない)の帳票フォーム

引用:
・販売履歴テーブル
顧客cd−販売日−商品cd−数量

引用:
Me.Filter = "顧客名 like '*" & Me.txt_検索ボックス & "*'"

連結フォームのフィルター条件において参照可能なフィールドは、
そのフォームのレコードソースに含まれているフィールドに限られます。
 
フォーム上の演算コントロールや非連結コントロールは
フィルター条件の参照範囲には含まれません。
 
[顧客名]という名前のフィールドがフォームのレコードソースに
存在しなければ、上記のフィルター条件式は無効です。
 
引用:
表示項目:顧客cd−顧客名(Dlookup使用)−販売日−商品cd−数量

この場合の[顧客名]はフォーム上の演算コントロールに過ぎません。
 
例えば「[販売履歴テーブル]と[顧客マスタ]を[顧客cd]をキーとして外部結合し、
[販売履歴テーブル]の全てのフィールドと[顧客マスタ]の[顧客名]を返す
選択クエリ( または SELECT 文)」をそのフォームのレコードソースとし、
詳細セクション上のテキストボックス[顧客名]のコントロールソースを
フィールド[顧客名]に変更なさればよろしいでしょう。

投稿日時: 23/12/12 18:12:17
投稿者: 滝沢

Suzu様、sk様
コメントありがとうございます。
 
そういうものなんですね。
レコードソースをクエリに変更することにします。
ありがとうございます。