• 締切済み

フォーム上での絞り込みについて

フォーム上での絞り込みについて 皆様、こんにちは。アクセス初心者です。 以前質問させていただいたのですが、やはり一人で解決できない為、再度皆さんの力をお借りしたいと思います。 フォーム上での絞り込みを設定したいのですが、絞り込みのテキストボックスに データを入力してもQueryのデータが反映されません。 Queryにはフォームのテキストボックスへ入力したデータが反映していますが、Queryのデータがフォームへ反映しません。たまに反映されたかと思うと何かの拍子に又反映されなくなります。 (1)クエリに[forms]![フォーム名]![絞り込みのテキストボックス名]と入力 (2)フォームのレコードソースへ上記のクエリ名、かつ絞り込みのテキストの更新後処理 DoCmd.Requery と記載しています。 大変初歩的な質問で恐れ入りますが、どなたかご教示いただけませんでしょうか? 何卒、よろしくお願いいたします。

みんなの回答

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

(1) なんとか問題は解決したようなのですが、何だか 腑に落ちない、という感じのようです。 (実際のところ、私もどうしてマクロが特効薬なの? という感じです。) まず、おさらい、ということでデータベースウィンドウ でマクロを選択し、作成したマクロをポイントし、 ツールからマクロをVISUAL BASICに変換を選択すれば 標準モジュールにプロシージャが作成されます。 その関数名をたとえば, Function マクロ1() となっているのを、 Function funcAAA() として、質問の中で、Me.Requery としていたところを、 Call funcAAA として、機能するか確認してみてください。 これで機能しなかったら、再び、うーん?ですが。 PCの環境がスタンドアローンなのか、サーバーに DBファイルが置いてあるのかわかりませんが、 ときには、そういった環境もいろいろ影響が ある場合があります。あるいは2007のいたずら なのかもしれません。 あるいは、元データのクエリに何らかの問題点が あるのかもしれません。 何も間違っているところは無いのに、簡単な命令が 実行されない、ということは時にはあります。案外、 ファイルを最適化して一旦Accessを閉じてファイルを 立ち上げると何だか直ってしまった、ということも あります。もちろん、AccessのSPごとのバグにも 気を配っておくことも必要で、ときにはSPのバージョン アップが必要なときもあります。なるべくなら バグを違う方法で回避し、SPのバージョンアップは 避けるようにしてはいますが、致命的なバグの場合は バージョンアップも必要でしょう。 (2) コードを書くときには、 1 自動構文チェック、変数の宣言を強制する、には  必ずチェックをいれておく。  たとえば、Option Explicit は常に表示されて  いること。 2 コードが完成するまでは On Error GoTo エラー処理  や、On Error Resume Next などのエラー処理は  すべてコメントアウトしておく。 3 エラーが出たときは、エラー番号とエラー内容を  確認しておく。 4 コードの構造がわかるようにインデントを設定する。 5 コード表を閉じる時や変更したときは必ずコンパイル  をする。 6 あとはいろいろありますが、私はいつも紙と鉛筆、  (最近は新聞の折込の裏側と0.7の水性ボールペン  ですが)を、簡単なコードでも、もちろん規模の  大きいプログラムでも、フロー図などを書いたり  して流れを記録しておきます。 7 オブジェクトの階層構造はよく理解しておく。  フォーム→サブフォーム表示コントロール、  その他、コントロール間の階層と設定、接続方法、  あるいは、関数のメンバ(オブジェクトブラウザ で確認)など。  これが一番面倒で、エラーの出やすい分野  ですが、おおよその理解が出来ればプログラムも  早くなります。 8 3にも関連しますが、エラーや分からないものが  出てきたら、日本と言わず海外のあらゆる国も  巡ってみる。世界にはモンスターと賢人と  篤農家がうようよしています。 最後は脱線気味ですが、お役に立つか分かりませんが このようなところです。 ところで、最近も同じような質問がありました。状況が よく似ていました。 http://oshiete1.watch.impress.co.jp/qa6263467.html

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

>たまに反映されたかと思うと何かの拍子に又反映されなくなります。 レコードを確定したのち検索してみる、ということで、 Private Sub コマンド10_Click() DoCmd.RunCommand acCmdSaveRecord 'あるいは 'Me.Refresh 'Me.Requery 'あるいは DoCmd.Requery End Sub としてみてください。

Yukky47
質問者

お礼

piroin654様 お世話になっています。 いただいた解決法でトライしてみたのですが、やはりだめでした。 ただ、マクロのただの「再クエリ」で解決できました。 自分としては今後野ことを考えるとコードビルダでデータベースを作りたいので、 気持ちがよくありません。この結果から何が悪いのかおわかりでしょうか? おそらくフォームの元データのクエリは絞り込みのテキストデータを反映するので リクエリのコマンドがよくないのではないかと思いますが、DoCmd.Requery、もしくはMe.Requery等で 短い為、間違っているとも思えないのです。コマンドを入力した後、コードビルダを閉じるまでに何かする必要はございますか?私は保存ボタンを押した後、画面を閉じております。この内容で何かわかるようであればお暇なときで結構ですので、ご教示いただければ甚幸です。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

回答1、myRangeです。 今回の補足説明も少々曖昧です。 >●デザイン等を変更、調整、しばらくしてから再度絞り込みしてみると ここは明確に説明されてますが、 >●なぜか反映されなくなってしまうということがありました。 この文言からは、上手くいったり、いかなかったりする、と受け取れます。 実際の現象もそうですか? デザイン変更後は、全然動作しなくなった、ということではないのですね。 ●●何れにしろ、原因究明の早道は、シンプルなファイルでテストしてみることです。 例えば、 フィールドが(番号、名前、区分)、この程度のテーブルを使い Qquery,Formも質問と同じようなのを作ってテストしてみる。 ---------------------------------------------------- 因みに、2010からはVBAのバージョンがアップしてますが 2007で作成したファイルを同じく2007で動かしているようですから これは無関係のようですね。 以上です。  

Yukky47
質問者

お礼

myRange様 ご返信が遅くなり申し訳ございません。 >●なぜか反映されなくなってしまうということがありました。 上記の件、説明が不足しており申し訳ございません。 こちらはデザイン変更後、全く動作しなくなったということです。 これが本当に不思議なのですが、同じPCで作成したファイルの同じ機能が一斉に動作しなくなるのです。 もう一度すべて削除してまた、ファイルを作成して動作している際に検証してみます。 動作するファイルが作れるかが問題ですが。。。 お付き合いいただきありがとうございます。

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

http://oshiete1.watch.impress.co.jp/qa6158981.html こちらの件の続きみたいですが。 Access2007でうまくいかないとのことですが、 ボタンを一つ作って、ボタンのクリックイベントで、 Private Sub コマンド10_Click() 'Me.Requery 'あるいは DoCmd.Requery End Sub で、どうなりますか。

Yukky47
質問者

お礼

piroin654様 ご返信が遅くなり申し訳ございません。 いただいた方法で確認したのですが、何も反応がございませんでした。 本日これからなぜ反応しないのか問題解決できるよう考えてみます。 イベントのビルドの内容は以下の通りとなります。 気にかけていただいているにもかかわらず、返信が遅くて本当に申し訳ございません。 Private Sub コマンド10_Click() DoCmd.Requery End Sub Private Sub 検索_AfterUpdate() DoCmd.Requery End Sub

Yukky47
質問者

補足

piroin654様 ご連絡ありがとうございます。 先日はありがとうございました。 いただいた対応は、明日確認して報告させていただきます。 引き続きよろしくお願いいたします。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

当方も最近Accessを勉強し始めたばかりなので何ですが。。。 絞り込みのテキストボックス名を、「Text絞り込み」として。 (1)「Text絞り込み」TextBoxコントロールの上で右クリックして    プロパティ画面を表示 (2)Text絞り込みのプロパティ画面の、    「更新後の処理」ボックスの右端の ... をクリックすると    VBEの画面が表示されるので、Me.Requeryを一行追加する    '-------------------------------------- Private Sub Text絞り込み_AfterUpdate()   Me.Requery  '●●これを手入力する End Sub '------------------------------------ ただ、 >たまに反映されたかと思うと何かの拍子に又反映されなくなります。 この現象の意味がよく分かりません。 も少し詳しく補足説明した方がいいでしょう。 以上です。  

Yukky47
質問者

補足

my Range様 早速のご回答ありがとうございます。 絞り込みのテキストボックスの更新後の処理で Private Sub Text絞り込み_AfterUpdate() と End Sub の間に以下2つの方法で入力して 試してみたのですが、やはりだめでした。 (1)Me.Requery (2)DoCmd.Requery   >たまに反映されたかと思うと何かの拍子に又反映されなくなります。 も少し詳しく補足説明した方がいいでしょう。 大変失礼いたしました。 上記2つの方法で、2回ほどクエリからフォームにデータがきちんと反映されておりました。 デザイン等を変更、調整、しばらくしてから再度絞り込みしてみるとなぜか反映されなくなってしまうということがありました。(デザイン以外変更したところはありません) 絞り込みデータベースについて再度説明させていただくと、クエリは「forms!フォーム名!テキスト」、クエリの元データはテーブル、絞り込みを実施しているフォームは、このクエリを元にしたものに、絞り込みテキストを追加したものです。 いただいたコメントで思いついたのですが、バージョンの違いなのでしょうか? 家で使用している2010では問題なく反映させることができるます。 うまくいかないのは、2007となります。 お手数をおかけいたしますが、何かヒントをいただけると大変ありがたいです。 よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう