- 締切済み
Access VBA フィルター
Microsoft Access のVBAで、メインフォームで条件を設定するとサブフォームがフィルターされて開くというVBAを作っています。 SQL文を「SQLCode」という文字列型変数に入れました。 具体的には以下の内容がSQLCodeに入っています。 [担当者]=[Forms]![検索]![担当者] この変数をフォームにフィルターをかけて開くコードに入れたいのですが、以下の?の部分を教えてください。 Me!Fサブフォーム.Form.Filter. = ? Me!Fサブフォーム.Form.FilterOn = True
- NKM_Chitose
- お礼率0% (3/5217)
- Access(アクセス)
- 回答数3
- ありがとう数0
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- kkkkkm
- ベストアンサー率65% (1615/2454)
変数に入れたいのでしたら SQLCode = "担当者=" & [Forms]![検索]![担当者]] Me!Fサブフォーム.Form.Filter = SQLCode Me!Fサブフォーム.Form.FilterOn = True 質問ではFilter. になっていますが最後のドットはなしで
- chayamati
- ベストアンサー率41% (254/607)
検索フォームに以下をコーディングします ------------------------------------------------------------------- Private Sub 担当者_Exit(Cancel As Integer) DoCmd.OpenForm "サブフォーム名", , ,"[担当者]=[Forms]![検索]![担当者]" End Sub -------------------------------------------- イベントはクリックイベント、チェンジイベント等考えられますが、 値が確定してからのエキジットイベントが最適かと 蛇足ですが、メインフォーム、サブフォームは 納品書のヘッダー情報(納入日、顧客名…)をメインフォームと呼び 明細情報(品名、規格、数量…)をサブフォームと呼びます 貴方の呼ばれるメインフォームを自分は メニューまたは目次としています
- kkkkkm
- ベストアンサー率65% (1615/2454)
Me!Fサブフォーム.Form.Filter = "担当者=" & [Forms]![検索]![担当者]] Me!Fサブフォーム.Form.FilterOn = True で試してみてください。 検索フォーム内のサブフォームでしたら、サブフォームのデータタブでリンク親フィールドとリンク子フィールドを設定しておけばVBAでフィルターを指定する必要が無いと思います。
関連するQ&A
- 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 」 何かコーディングが足りないのでしょうか? 教えてください。お願いします。
- ベストアンサー
- その他(プログラミング・開発)
- サブフォームにフィルタをかけたい
サブフォームにフィルタをかけたいのですが エラーになってしまいます。 下記がエラー内容です。 ---------------------------------------------------------- 実行時エラー 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 でエラーになりますが、 この行をなくしたら、フィルタがかかりません。 どうすればサブフォームにフィルタをかける事が出来るのでしょうか? ご教示よろしくお願い致します。
- ベストアンサー
- オフィス系ソフト
- 複数条件のフィルタができない
マイクロソフトアクセスです。 アクセスで親フォームからサブフォームへフィルタをかけたいのですが Sub フィルタ() With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With End Sub だとうまくできません。 With Forms("F_親フォーム").Controls("SF").Form .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' or " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" .FilterOn = True End With これならフィルタされるのですが、 どちらかだけになってしまいます。 .Filter = "カテゴリ like'" & Forms("F_親フォーム").Controls("cmd_カテゴリ").Value & "' and " _ & "施設名 like '" & Forms("F_親フォーム").Controls("txt_施設名").Value & "'" の文法がおかしいのだと思うのですが、どこが変ですか?
- ベストアンサー
- その他(データベース)
- 複数サブフォームで filteron=false
Access+VBA です フォームに複数のサブフォームでそれぞれフィルタをかけます。 Me.Filter=fstr1 (他のサブフォームでは fstr2・・・・) Me.FilterOn=True 一方のフィルタを解除すると Me.FilterOn=False 他のサブフォームのフィルタも解除されてしまいます。 考えられる原因はなんでしょうか?
- ベストアンサー
- Visual Basic
- フィルタの情報を保存したい
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 としてるのに、フィルタの情報が保存されてません。 再度開きなおしたときは、 必ず全レコードが表示されてしまいます。 フィルタの状態を保存する方法を教えてください。ご回答よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- フィルターの文字列を空にしたいのですが
親フォームからサブフォームを閉じる時に、フィルターの文字列を空にしたいのですが Private Sub Form_Close() Me.Controls("F_SubMain").Form.Filter = Empty DoCmd.Save acForm, Me.Name MsgBox Me.Controls("F_SubMain").Form.Filter DoCmd.ShowToolbar "Ribbon", acToolbarYes End Sub としても、フィルターの文字が残ってしまいます。 親フォームにサブフォームに入れてるので、 そのサブフォームのフィルタの文字列を空白にしたいのですが DoCmd.Save acForm, Me.Name で保存できないようなのですが DoCmd.Save acForm, Me.Controls("F_SubMain").Form もエラーになりました。 こういうことをやりたい場合、どうすればいいでしょうか?
- ベストアンサー
- オフィス系ソフト
- フィルタでワイルドカードは使えない?
アクセスのフォームにフィルタを掛けたいのですが Form_F映画.Filter = "タイトル = '" & "*イングロリアス*" & "'" Form_F映画.FilterOn = True Form_F映画.Requery だとひっかかりませんが、 Form_F映画.Filter = "タイトル = '" & "イングロリアス・バスターズ(字幕)" & "'" だとひっかかります。 フィルタでワイルドカードを使う方法を教えてください!!
- ベストアンサー
- オフィス系ソフト
- VBAのヒント機能を使ってコードを書きたい
サブフォームのフィルタを解除する場合 Me.Controls("サブフォーム").Form.FilterOn = False これで出来るのですが、 この構文をVBAのCTRL+Jのヒント機能で書くとき、 Me.Controls. までは問題なく行くいのですが、 その続きは、画像のように4つのプロパティしか選べず、 Form_サブフォーム がでてきません。 Me.Controls.Form_テーブル1のサブフォーム.Form.FilterOn = False にすると、”.Form_テーブル1のサブフォーム”の部分で、 コンパイルエラーになります サブフォームをヒント機能を使って描く方法を教えてください。
- ベストアンサー
- オフィス系ソフト
- Access マクロ SQLは合ってるのに②
Microsoft Access でマクロ(VBAではない)を制作しています。「検索画面」フォームに情報を入力して「検索実行」を押すと「全項目」フォームがフィルターされて表示するようにしたいです。 制作したマクロ① フォームを開く フォーム 全項目 Where条件式 [投稿者]=[Forms]![検索画面]![投稿者] 制作したマクロ② ローカル変数の設定 変数名 [SQLCode] 値の代入 変数 [LocalVar]![SQLCode] 値 "[投稿者]=[Forms]![検索画面]![投稿者]" フォームを開く フォーム 全項目 Where条件式 [LocalVar]![SQLCode] ローカル変数の削除 変数 [LocalVar]![SQLCode] このマクロを実行したところ、マクロ①は正しく実行されましたが、マクロ②はフィルターされずにフォームが表示されました。 どこを直せば良いのか教えてください。
- 締切済み
- Access(アクセス)
- Access2007 サブフォームでフィルタリングする方法
お世話になっております。 フォーム上に関連性のないサブフォームがあります。 フォームのコンボボックスでデータを選び検索ボタンをクリックすると、サブフォームのフィールドがコンボボックスのデータで抽出できるようにしたいと思います。 このように書いてみましたが、検索ボタンをクリックするとサブフォームの全てのデータが消えてしまい、実現できませんでした。 Me.FilterOn = True Me.Filter = "(Forms!フォーム!サブフォーム1!コンボ Like '*" & Me.フィールド & "*')" サブフォームでフィルタリングできる方法を教えていただければ幸いです。 よろしくお願いいたします。
- 締切済み
- その他(データベース)