• ベストアンサー

複数サブフォームで 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

  • サブフォームにフィルタをかけたい

    サブフォームにフィルタをかけたいのですが エラーになってしまいます。 下記がエラー内容です。 ---------------------------------------------------------- 実行時エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 ---------------------------------------------------------- 細かい概要は テーブル1にフィールドがあり、 レコードには「あああ」と入力されています。 テーブル1がレコードソースとされている「フォーム(2)」をサブフォームとして 親フォーム(フォーム名:フォーム(1))に乗せました。 フォーム(1)を開いた時にフォーム(2)にフィルタをかけたいのですが うまくいきません。 オブジェクト名にカッコを付けているため、 Form_フォーム・・・・ というコードは書けないので ---------------------------------------------------------- Private Sub Form_Open(Cancel As Integer) Forms("フォーム(1)").Controls("フォーム(2)").Form.Filter = "フィールド = '" & "*あ*" & "'" Forms("フォーム(1)").Controls("フォーム(2)").FilterOn = True End Sub ---------------------------------------------------------- としています。 Forms("フォーム(1)").Controls("フォーム(2)").FilterOn = True でエラーになりますが、 この行をなくしたら、フィルタがかかりません。 どうすればサブフォームにフィルタをかける事が出来るのでしょうか? ご教示よろしくお願い致します。

  • Access VBA フィルター

    Microsoft Access のVBAで、メインフォームで条件を設定するとサブフォームがフィルターされて開くというVBAを作っています。 SQL文を「SQLCode」という文字列型変数に入れました。 具体的には以下の内容がSQLCodeに入っています。 [担当者]=[Forms]![検索]![担当者] この変数をフォームにフィルターをかけて開くコードに入れたいのですが、以下の?の部分を教えてください。 Me!Fサブフォーム.Form.Filter. = ? Me!Fサブフォーム.Form.FilterOn = True

  • Access2007 サブフォームでフィルタリングする方法

    お世話になっております。 フォーム上に関連性のないサブフォームがあります。 フォームのコンボボックスでデータを選び検索ボタンをクリックすると、サブフォームのフィールドがコンボボックスのデータで抽出できるようにしたいと思います。 このように書いてみましたが、検索ボタンをクリックするとサブフォームの全てのデータが消えてしまい、実現できませんでした。 Me.FilterOn = True Me.Filter = "(Forms!フォーム!サブフォーム1!コンボ Like '*" & Me.フィールド & "*')" サブフォームでフィルタリングできる方法を教えていただければ幸いです。 よろしくお願いいたします。

  • Me.FilterOn = True は先でも後で

    Me.FilterOn = True は先でも後でも問題ないですか? アクセスのvbaでフォームにフィルタをかけるときに 今まで --------------------------------------- Private Sub コマンド2_Click() Me.Filter = "フィールド = '" & "test" & "'" Me.FilterOn = True End Sub --------------------------------------- とコードを書いていましたが --------------------------------------- Private Sub コマンド2_Click() Me.FilterOn = True Me.Filter = "フィールド = '" & "test" & "'" End Sub --------------------------------------- でも機能しました。 という事は、 Me.FilterOn = Trueは Me.Filter の前でも問題ないのでしょうか? Me.FilterOn = Trueは Me.Filter の後と習ったので疑問に思っています。 よろしくお願いいたします。

  • フィルタの情報を保存したい

    Me.Form.Filter = "" Me.Form.FilterOn = を保存したいのですがどうすればいいでしょうか? フォームにテキストのフィールドと 抽出とクリアのコマンドボタンを設置して、フィルタをかけたり解除したりしています。 途中でフォームを閉じても最後にフィルタをかけたなら、 再度フォームを開いたときに最後に検索したワードでフィルタが開く用にしたいし フォームを閉じる前にフィルタを解除したのなら、 再度フォームを開いたときはフィルタが解除された状態にしたいです。 Private Sub cmd_クリア_Click() Me.Form.Filter = "" Me.Form.FilterOn = False DoCmd.Save acForm, Me.Name End Sub Private Sub cmd_抽出_Click() Me.Form.Filter = "フィールド2 like '*" & Me.txt_フィールド2テキスト.Value & "*" & "'" Me.Form.FilterOn = True DoCmd.Save acForm, Me.Name End Sub としてるのに、フィルタの情報が保存されてません。 再度開きなおしたときは、 必ず全レコードが表示されてしまいます。 フィルタの状態を保存する方法を教えてください。ご回答よろしくお願いします。

  • アクセスVBA 数値の複数抽出について

    アクセスVBAをつかい[厚み]フィールドの0.1と0.5の2つの抽出を 行いたいのですが、0.1のみの抽出は、できるのですが、複数の抽出方法がわからず悩んでいます。 Me.Filter = "[厚み] = 0.1 " Me.FilterOn = True よろしくお願いします。

  • VBAのヒント機能を使ってコードを書きたい

    サブフォームのフィルタを解除する場合 Me.Controls("サブフォーム").Form.FilterOn = False これで出来るのですが、 この構文をVBAのCTRL+Jのヒント機能で書くとき、 Me.Controls. までは問題なく行くいのですが、 その続きは、画像のように4つのプロパティしか選べず、 Form_サブフォーム がでてきません。 Me.Controls.Form_テーブル1のサブフォーム.Form.FilterOn = False にすると、”.Form_テーブル1のサブフォーム”の部分で、 コンパイルエラーになります サブフォームをヒント機能を使って描く方法を教えてください。

  • 複数の条件で検索したい!

    複数の条件で検索したい! 現在下記のコードでフォームのtxtBoxとcmbBoxの条件でサブフォームを絞込みしています。 これを複数の条件を満たしたレコードだけを絞込みしたいのですが、 txtBox1の条件も拾うしcmb1の条件も拾ってしまう・・・ これを txtBox1の条件を満たした中のcmb1条件も満たすのレコードで絞込みしたいのですが、 どのようにしたら良いか教えてください。よろしくお願いいたします。 Private Sub cmd検索_Click() If Not IsNull(txtBox1) Then サブフォーム.Form.Filter = "顧客コード like '*" & txtBox1.Value & "'" サブフォーム.Form.FilterOn = True End If If Not IsNull(cmb1) Then サブフォーム.Form.Filter = "顧客区分 like '" & cmb1.Value & "'" サブフォーム.Form.FilterOn = True End If If Not IsNull(txtBox2) Then サブフォーム.Form.Filter = "顧客名カナ like '*" & txtBox2.Value & "*'" サブフォーム.Form.FilterOn = True End If

  • access2000のVBAで「直前の操作をキャンセル」

    こんにちわ。 いまaccess2000のVBAでフォームの元になるテーブルへの フィルタ操作をプログラムしています。 1つの条件を与えたときは正常にフィルタできるのですが, 下記のように2つの条件を与えると, 「直前の操作はキャンセルされました」という エラーメッセージが表示されてしまいます。 「 Me.Filter = vbNullString ' クリア Me.Filter = "[項目1]='" & Forms![F_フォーム1].[cmbコンボ1] & "'" Me.Filter = Me.Filter & " AND [項目2]='" & Forms![F_フォーム1].[cmbコンボ2] & "'" Me.FilterOn = True 」 何かコーディングが足りないのでしょうか? 教えてください。お願いします。

  • サブフォームからメインフォームの絞込をしたい

    サブフォームの項目からメインフォームの絞込をおこないたいのですが、うまくいきません やりたいこととデータベースの状況は以下のとおりです メインフォームに「会社名」があり、サブフォームにその会社の「ブランド名」(一社に対し複数存在する)とその「業種」(1つのブランドにつき1つ)がある。 メインフォーム----会社名(テキスト) サブフォーム--ブランド名(テキスト)----業種(コンボボックス) 【やりたい事】 サブフォームにある業種をメインフォーム上のフィルタ用コンボボックスで選択し、選択した 業種を持つ会社名のみ表示したい(たとえばケーキを扱うA社とD社、Z社のみメインフォームで表示するようにする) 【コード】 現在以下のようなコードを作成しています。 テキスト欄に「業種」を打ち込み、コマンドボタンを押して絞り込む ※本当はコンボボックスで選択したいのですが・・・ Private Sub コマンドボタン名_Click() Me![サブフォームのパーツ名].Form.Filter = "[コンボボタン-業種] Like '*" & Me.テキスト欄 & "*'" Me![サブフォームのパーツ名].Form.FilterOn = True Exit_コマンドボタン名_Click: Exit Sub End Sub 作成しましたが、レコードを移動するたびにパラメータ入力のポップアップがでてきます フィルターもかからず、絞込が全くできていません どなたか詳しい方ご教授よろしくお願いいたします