• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessのフィルター機能について質問です。)

Accessのフィルター機能について質問です。

このQ&Aのポイント
  • 検索フォームから主フォームに反映させるコードとは
  • 主フォームの検索結果をサブフォームに影響させない方法は
  • 主フォームのレコードが変わっても、サブフォームを新規登録状態にする方法は

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

> 主フォームのレコードが変わっても、サブフォームは常に新規登録状態 ということは、 サブフォームはデザインで「データ入力用」が「はい」となっているのでしょうか。 (主フォームと関連するレコードがあっても表示せず、新規行のみにしておきたい?) 2010 は持っていないので、2007 での動きになるのですが・・・・   With Forms("F01-1")     .Filter = "顧客コード = " & Me!顧客コード     .FilterOn = True   End With と主フォームの FilterOn を設定すると、サブフォームの DataEntry が False に 自動変更され、既存のレコードが表示されます。 その後、サブフォームを DataEntry = True しても、Filter のかかった主フォームの 「レコード移動」直前に DataEntry = False に変更設定される動きのようです。 ※ このことを言われているのでしょうか?  以下はそうだとして 機械翻訳で読みにくいのですが、「仕様」っぽい事が書いてあります。 ACC2000: フォームまたは選択範囲の変更フォームの"DataEntry/データ入力用"プロパティでフィルターを適用します。 http://support.microsoft.com/kb/198948/ja Filter にこだわってみると、 主フォームの「レコード移動時」サブフォームを DataEntry = True に都度設定します。 サブフォームコントロール名を「FSUB」と仮定すると Private Sub Form_Current()   Me.FSUB.Form.DataEntry = True End Sub ただ、この場合チラつきます。 もう Filter は使わずに、主フォームのレコードソースを直接書き換える・・・・ (サブフォームの「データ入力用」を「はい」として使いたい場合) Forms("F01-1").RecordSource = _      "SELECT T03.商品コード, T03.日付, T03.顧客コード," _     & " T01.会社名, T01.住所, T01.電話番号 FROM T03 INNER JOIN T01" _     & " ON T03.顧客コード = T01.顧客コード" _     & " WHERE T03.顧客コード = " & Me!顧客コード & ";" のような感じで、WHERE 条件に 顧客コードを記述したものを設定します。 ※ 上記のSQLは雰囲気で書いたので正式なものにしてください。   (この時にはレコード移動時は昔のままで) ※ レコードソースを書き換えるのが嫌だったら、チョッと工夫します。 元々のレコードソースには、主フォームヘッダ部に非表示で配置したテキストボックスを 条件として参照するようにしておきます。 非表示のテキストボックス名を「検索用顧客コード」と仮定した場合、 レコードソースは SELECT ・・・・・ WHERE T03.顧客コード = Nz([Forms]![F01-1]![検索用顧客コード],0); とか・・・ で、検索フォームでは、そのテキストボックスに顧客コードを設定し、 主フォームを Requery します。   With Forms("F01-1")     .検索用顧客コード = Me!顧客コード     .Requery   End With ※ チョッと、視点を変えた方法として(主フォームのレコードソースはそのままで) サブフォームのレコードソースの抽出条件にありえないものを記述しておきます。 (サブフォームの「データ入力用」は「はい/いいえ」どちらでも) 表示するものが1つもないので、新規登録部分しか表示されないと思います。 例えば、 SELECT * FROM T02 WHERE コード = 0; 「コード」はオートナンバでしたよね。多分 0 は使っていないと思うので、 (動いたという検索フォームでの Filter 設定部分はそのまま使います) ※ 解釈が違っていた等々・・・・補足してください。  (補足いただいても、わからないかもしれません) ※ サブフォームは帳票で良いのでしょうか(画像からはデータシートに見えなくも)

nmt3942
質問者

お礼

いつもありがとうございます!!!! どなたからもお返事がないので無理なのかなぁと半分諦めておりました。 他力本願な自分もいけないのですが… ですが、まさか30246kiku様にお返事いただけるとは思いもよらず、 とても嬉しかったです! そして的確なアドバイスの結果、できました! サブ、メインとともに「データ入力用」は「はい」になっています。 フィルターにこだわり、サブフォームのDataEntry = Trueの方法で やってみたところすんなりできました。 これを応用したいデータは画面を変える(動かす等)ことがないので、 チラつきを気にすることがないので、こちらで十分対応できました! 他に提示していただいた2つも試してみたいと思います。 本当にいつもありがとうございます。 文句なくベストアンサーです(^^) 蛇足ですが… 2010に代わってあまりにも様式が変わっていて戸惑うことばかりです笑 マウスホイールができないことやすでにシマシマフォームであることも 便利になったなぁと感心する一方でした。 また一から学びなおし頑張ります!

関連するQ&A