• ベストアンサー

フィルターについて

印刷プレビューをするとフィルターが勝手に解除 --- Access2007で、フォームの中にサブフォームをデータシートで表示し、フォームを読み込む際に、自動でフィルターがかかるようにVBAで設定しているのですが、印刷プレビューをするとフィルターが勝手に解除されてしまいます。 対処方法などありませんか

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No2です。 サブフォームのレコードソースがテーブルならば、 そのテーブルをもとにクエリを作成し、抽出条件に 条件を設定し、それをサブフォームのレコードソース にするか、あるいはサブフォームのレコードソースで クエリビルダを起動し、クエリと同じような条件設定 をして閉じ、OKという方法ならば、 フォームを印刷プレビューにしても レコードはフィルタがかけられた状態になります。

noname#141015
質問者

お礼

回答ありがとうごさいました

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

サブフォームに単独でフィルタをかけると 印刷時にはフィルタはかかりません。 一番いいのはサブフォームのレコードソースで表形式の レポートをレポートの新規作成からつくり、 そのレポートの開くときのイベントで、 同じフィルタをかけるか、たとえば以下のように。 Private Sub Report_Open(Cancel As Integer) Me.Filter = "ID=1" Me.FilterOn = True End Sub あるいは、レコードソースのところをクリックして クエリビルダを起動し、抽出条件を設定して そのまま閉じて、OKとし、レポートを 開くのがいいのでは、と思います。 また、フォームにテキストボックスを置き、 そこに、任意の数値や文字を入れ、それをフィルタ 条件に設定して、レポートを開くことも できます。その場合は、たとえば、文字型のフィルタを書ける場合は、 Private Sub コマンド1_Click() DoCmd.OpenReport "レポート名", acViewPreview, , "名前='" & Me!テキストボックス名 & "'" End Sub あるいは、数値型のフィルタをかける場合は、 Private Sub コマンド1_Click() DoCmd.OpenReport "レポート名", acViewPreview, , "ID=" & Me!テキストボックス名 & "" End Sub 違いは、 >名前='" & Me!テキストボックス名 & "'" >"ID=" & Me!テキストボックス名 & "" のように、「'」で囲むか囲まないかの違いです。 フォームを印刷するよりはスマートです。

  • heyin
  • ベストアンサー率33% (2/6)
回答No.1

印刷フォームのソースがフィルターされていないんじゃないかなぁ ?

noname#141015
質問者

お礼

回答ありがとうごさいました

関連するQ&A