ACCESS VBA初心者です。ネット上の書き込みを参考に下記のようなフォームを作成しデータ検索したいのですが、うまくいかず、ネット上の情報を参考に色々トライしてみたのですが解決できません。
顧客名簿で顧客(会社)名で検索し、当該顧客の関係者(複数)をサブフォーム(帳票形式)に表示しています。さらにサブフォームに表示された一覧から、氏名、所属部署等で検索をかけています。
ところが、メインフォームに設けたテキストボックスで検索した結果をクリアするとき、サブフォームの検索を掛ける前だと、クリアできるのですが、サブフォームの検索を掛けた後では、メインフォームで検索した会社名をクリアできません。サブフォーム内の再検索、クリアは何度でもできます。
サブフォームの検索を掛けた後でも、メインフォームの検索値をクリアする方法をご教示ください。
各種作業のコードは下記の通りとしています。
メインフォームの検索コード
Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("クエリ名")
With qdf
.Parameters("[forms]![フォーム名]![検索用フィールド名]") = Forms!フォーム名!フィールド名
Set rst = .OpenRecordset
.Close
End With
rst.Close
DoCmd.OpenQuery "クエリ名", acViewNormal
DoCmd.Close acQuery, qdf.Name, acSaveYes
メインフォームの検索クリアコード
Me.検索用フィールド名 = ""
Dim dbs As Database
Dim qdf As QueryDef
Dim rst As Recordset
Set dbs = CurrentDb
Set qdf = dbs.QueryDefs("クエリ名")
With qdf
.Parameters("[forms]![フォーム名]![検索用フィールド名]") = Nothing
Set rst = .OpenRecordset
.Close
End With
rst.Close
Me.[サブフォーム名].Form.Requery
※検索値をNullにしてFilterOn=True にする方法(下記サブフォーム内の検索クリアの方法)でも結果は同じでした。
サブフォーム内の検索コード
Dim sFilter As String
sFilter = vbNullString
sFilter = "検索適用フィールド名Like '" & Me.サブフォーム内の検索用フィールド名.Value & "'"
Me.サブフォーム名.Form.Filter = sFilter
Me.サブフォーム名.Form.FilterOn = True
サブフォーム内の検索クリアのコード
sFilter = vbNullString
Me.サブフォーム内の検索用フィールド名 = vbNullString
Me.サブフォーム名.Form.Filter = sFilter
Me.[サブフォーム名].Form.FilterOn = True
Me.[サブフォーム名].Form.Requery
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
ACCESS2007でしたか....
それだと
https://support.microsoft.com/ja-jp/kb/941800
が原因かもしれません....
xMAKISHIx様
本件ずっとフォローいただきありがとうございます。
>https://support.microsoft.com/ja-jp/kb/941800 が原因かもしれません....
⇒ACCESS2007に発生する根本的な問題だったのですね。
まさに、上記URLにありました「•Access 2007 で新規作成したデータにフィルタを実行した場合、2 度目以降のフィルタの実行が動作しない」状況です。
おかげさまですっきりしました。
ご自分でデータやフォームなどを作ってまで、検証していただきありがとうございました。
No.4
- 回答日時:
試しにテストデータを作成して見たのですがうまくいく様なのでこれでどうでしょうか?
http://11.gigafile.nu/hf3eb07091765b6789b8d68441 …
xMAKISHIx様
わざわざ作成していただいたのですね。深謝いたします。
ただ、「企業名で検索」は検索結果をクリアし、再検索をすることもできるのですが、サブフォーム内の「部署」での検索が働きませんでした。
また、部署で検索を掛けた後は、企業名の再検索は働きませんでした。小生が作成したフォームでもサブフォーム内で検索した後は、企業名での再検索はできません。
ちなみに使用しているACCESSは2007です。
No.3
- 回答日時:
あともういっこ
サブフォーム内の検索クリアのコードの
Me.[サブフォーム名].Form.FilterOn = True
はFalseじゃないですか?
xMAKISHIx様
ご連絡ありがとうございます。
>Me.[サブフォーム名].Form.FilterOn = TrueはFalseじゃないですか?
⇒検索条件にヌル値を入れてFilterOnをTrueにしています。サブフォーム内の検索、クリアは問題なく行えます(何度でも繰り返すことができます)。
No.2
- 回答日時:
サブフォームのレコードソースってどうなってますか?
xMAKIShIx様
>サブフォームのレコードソースってどうなってますか?
⇒複数のテーブルからフィールドを持ってきたクエリです。
顧客(会社)名のフィールドはパラメータとし、メインフォームのフォームヘッダーに設けたテキストボックスに顧客名を入力して検索を掛けています。
クエリには氏名、所属部署のフィールドがあり、これに対しメインフォームのフォームフッターに設けたテキストボックスで入力した値で検索を掛けています。
最初にパラメータクエリを勉強して少しずつ作り込んでいったため、パラメータクエリが残っているのですが、これが問題なのでしょうか?
No.1
- 回答日時:
エラーは起きていませんか?
気になったのが「Me.サブフォーム名」のサブフォーム名はちゃんとオブジェクト名になっていますか?
xMAKISHIx様
ご回答ありがとうございます。エラーは起きていません。
質問で書いたように、サブフォーム内の検索をする前であれば、メインフォームのテキストボックスに入力した値で検索し、サブフォームに表示された顧客(会社)の担当者一覧はクリアでき、再検索もできます。
しかし、サブフォーム内に表示された氏名等で検索を掛けると、その後はサブフォームの検索はクリアでき、再検索ができるのですが、メインフォームで検索した顧客(会社)はクリアできません。
現状、その後、顧客名で検索するには一旦フォームを閉じて、再度立ち上げてから行うしかありません。
「Me.サブフォーム名」のサブフォーム名はオブジェクトブラウザで確認しましたが、間違ってはいませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) Accessフォーム 一部のレコードだけを抽出する方法について 1 2022/06/28 18:45
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
ちょっと先の未来クイズ第6問
2025年1月2日と1月3日に行われる、第101回箱根駅伝(東京箱根間往復大学駅伝競走)で、上位3位に入賞するチームはどこでしょう?
-
最強の防寒、あったか術を教えてください!
とっても寒がりなのですが、冬に皆さんがされている最強の防寒、あったか術が知りたいです!
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
【選手権お題その2】この漫画の2コマ目を考えてください
サッカーのワンシーンを切り取った1コマ目。果たして2コマ目にはどんな展開になるのか教えてください。
-
access マクロでのフィルタの解除の方法
Access(アクセス)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
【ACCESS2000】 サブフォームのフィルタ方法
その他(データベース)
-
-
4
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
5
(ACCESS)条件に応じて、テキストボックスを表示・非表示設定
その他(データベース)
-
6
AccessからExcelにエクスポートする時に常に上書きしたい
Excel(エクセル)
-
7
Accessでテーブルの値をテキストボックスに代入するには?
Access(アクセス)
-
8
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
9
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
10
access別のテーブルを参照してテキストボックスに値を表示、編集したい
Access(アクセス)
-
11
コンボボックスで選択したものをクリアーしたい(アクセス VBA)
Access(アクセス)
-
12
Accessでフィルタの実行アクションをクリアするには?
Access(アクセス)
-
13
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
14
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
15
ACCESS──メインフォームでサブフォームのレコード件数をカウントしたい
Access(アクセス)
-
16
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
17
Accessで埋め込んだサブフォーム(データシート形式)でデータ追加ができない
Access(アクセス)
-
18
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
19
アクセスのfilter、複数条件の記述方法を教えてください。
Access(アクセス)
-
20
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォームに対してGoToRecor...
-
サブフォームに変数を代入し、R...
-
親フォームからサブフォームの...
-
親・子リンクフィールドの設定...
-
クエリで出来た表にチェックボ...
-
Access メインフォーム サブフ...
-
ACCESS 帳票フォームとデータ...
-
Access 登録ボタンからサブフォ...
-
ACCESSサブフォームにデータ反...
-
【Access】サブフォームのソー...
-
ACCESS VBA メインフォーム及び...
-
Access2010 サブフォームの並び...
-
access フォーム上で複数行の...
-
Accessでセレクタをダブルクリ...
-
Access2007 ラベルの削除がで...
-
ACCESS──メインフォームでサブ...
-
Accessのサブフォーム
-
ACCESSにて
-
access vba サブフォームに条件...
-
皆さん使っているブラウザを教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
サブフォームに対してGoToRecor...
-
クエリで出来た表にチェックボ...
-
ACCESS──メインフォームでサブ...
-
親フォームからサブフォームの...
-
Accessで埋め込んだサブフォー...
-
親・子リンクフィールドの設定...
-
ACCESS VBA メインフォーム及び...
-
ACCESSにて
-
サブフォームを非表示させる方...
-
Access VBA には Gridはないで...
-
サブフォームのあるフォームか...
-
access フォーム上で複数行の...
-
ACCESSのフォームで列固定?
-
Access2010 サブフォームの並び...
-
Access フォームで条件抽出し...
-
Excel VBA 全部のUserForm名
-
ACCESSのサブフォームコピーに...
-
ACCESSで条件によってサブフォ...
-
Access 登録ボタンからサブフォ...
-
Accessでセレクタをダブルクリ...
おすすめ情報