• ベストアンサー

複数サブフォームで filteron=false

Access+VBA です フォームに複数のサブフォームでそれぞれフィルタをかけます。 Me.Filter=fstr1 (他のサブフォームでは fstr2・・・・) Me.FilterOn=True 一方のフィルタを解除すると Me.FilterOn=False 他のサブフォームのフィルタも解除されてしまいます。 考えられる原因はなんでしょうか?

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

  • ベストアンサー
  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.3

すいません。。。 RowSource ではなく RecordSource です。

situmonnsya
質問者

お礼

>解除のみRecordSourceを使用する この方法が一番です。 移動ボタンにも「フィルタ」とでないしスッキリしました。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.2

>ST="ID番号 >=1" >Filter = ST >FilterOn = True それもありだと思います。 他の方法で行くと「RowSource」を使用する方法も考えられます。 子フォーム1の元データが「testクエリー」だったとすると <フィルタ設定時> me.子フォーム1.Form.RowSource="select * from test where ID番号=1" me.子フォーム1.Form.Requery <フィル解除時> me.子フォーム1.Form.RowSource="test" me.子フォーム1.Form.Requery こんな方法はどうでしょう? またフィルタ設定は現行のFilterを使用する方法で 解除のみRowSourceを使用する方法もチョイスできます。

すると、全ての回答が全文表示されます。
  • takkunnet
  • ベストアンサー率74% (32/43)
回答No.1

それらのコードはどこに記述されていますか? それぞれのフォーム内ではないですか? 各フォームに記述してみたところ確かに不審な動作してますね。。。 親ホーム内でその処理を記述してやると回避できました。 子フォーム1、子フォーム2、親フォームとあった場合 子フォーム1内の「Me.FilterOn=False」 の代わりに 親フォームにて「Me.子フォーム1.Form.FilterOn=False」 としてやるとうまくいきました。

situmonnsya
質問者

補足

ありがとうございます。 試してみましたが出来ませんでした。 ただ単に空フォーム[A]をひとつ作って、その中に[B]世帯主(例)と[C]家族構成(例)のサブフォームを置いているだけです。 フィルタ設定と解除のボタン([B]用と[C]用 計4個)を[A]に置いてやってみました。 >親フォームにて「Me.子フォーム1.Form.FilterOn=False」 の方法で試しましたが、やはり片方を解除するともう片方も解除されます。 う~~~ん とりあえず、FilterOn = False の代わりに ST="ID番号 >=1" Filter = ST FilterOn = True でくりぬけてます。 これでもアリですよね!。 でも、移動ボタンに常に「フィルタ」と表示されて気になります。

すると、全ての回答が全文表示されます。

関連するQ&A