• 締切済み

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

フォーム上での絞り込みについて 皆様、こんにちは。アクセス初心者です。 以前質問させていただいたのですが、やはり一人で解決できない為、再度皆さんの力をお借りしたいと思います。 フォーム上での絞り込みを設定したいのですが、絞り込みのテキストボックスに データを入力しても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

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

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

  • Accessであいまい検索するフォームをつくってみたんですが?

    Accessの初心者です。 本などをみながらあいまい検索ができるようなフォームをつくってみましたがフォームを開いた時、全レコードが表示されてしまいます。 クエリーの抽出条件はLike "*" & Forms!フォーム1!テキスト0 & "*"にしてテキストボックスプロパティの更新後処理でDoCmd.Requeryとしました。(意味がよくわからないんですけど) フォームを開いた時やテキストボックスになにも入力されていない時、全レコードが表示されないようにするにはどうすればいいのでしょうか? よろしくお願いします。

  • access クエリ 検索フォームの作り方

    よろしくお願いします。 やりたいこと: フォーム上で、テキストボックスに入力した値を検索して表示したい。 本やウェブで調べて、なんとか一度はやっと出来たのですが、 誤って何かを変更してしまい、使えなくなってしまいました。 今となってはどの資料を見て作れたのかわからなくなりました。 やったこと: クエリ :クエリA   条件にforms!フォームA!txt0を入力 フォーム:フォームA ヘッダーに非連結のテキストボックスtxt0を作成 txt0の更新後処理:docmd.requeryを入力 しかし、txt0に入力しても検索されません。 フォームのプロパティのレコードソース欄にクエリAを選択するようですが、 選択するクエリ名が表示されないので、クエリ名を入力しましたがダメでした。 どこか間違っているのでしょうか。VBAまでは勉強できないので上記範囲内でお願いします!

  • 2段階の絞込み

    クエリ-を使って作業日と作業者の2つを絞り込んでフォームに 表示させようとしています。 作業者の抽出条件はForms![フォーム名]![テキストボックス名]にして 作業日も同じようにForms![フォーム名]![テキストボックス名]すると 作業日と作業者がきちんと表示されました。 これだと1レコードのみの表示になってしまうので「1人の作業者が200204月に作業した日全部」を表示するには作業日の抽出条件をどのように入力したらいいのでしょうか? いろいろやってみたんですが出来ませんでした。 このやりかただと出来ないのでしょうか? すみませんがよろしくお願いいたします。

  • フォームに表示したいんですが・・・

    複数の人数の作業時間を入力するフォームを作成しました。 誤って入力したものをフォーム上で訂正したいので非連結のテキストボックスを 2つ作成しクエリーの「作業日」と「社員番号」のフィールドの抽出条件をforms![フォーム名]![テキストボックス名]としました。 フォームの2つのテキストボックスに「日付」と「社員番号」を入力すると1レコードが表示されました。 間違いを探すのに1日1日入力するのは手間なので、例えばAさんの1年分の レコードから1月1日から1月31までの31レコードをフォームに表示させるにはどうすればよいのでしょうか? いろいろやってみたんですがうまく出来ませんでした。 うまく説明できませんがよろしくお願いいたします。

  • Access2007 サブフォームの新規レコードをすぐにフォームに表示させる方法

    サブフォーム上で適当なレコード(IDと商品名)を選択して、そのレコードにある入力ボタンを押すと、フォームのコンボボックス上にその商品名が出るようなフォームがあります。 すでに入力済みのIDと商品名は表示されます。 ところが、サブフォーム上でIDと商品名を新規入力して入力ボタンを押すと、フォームのコンボボックスは空白となり、商品データが表示されません。 しかし、一旦フォームを閉じて開くと、データは表示されています。 IDと商品名を新規入力して、そのままフォームのコンボボックスに反映させたいと思います。 入力ボタンはこのようにやってみました。 Private Sub 入力_Click() DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 Forms!フォーム!ID = Me.ID End Sub または、 Private Sub 入力_Click() DoCmd.RunCommand acCmdSaveRecord Forms!フォーム!ID = Me.ID End Sub ご教授いただければ幸いです。よろしくお願いいたします。

  • Accessのコンボボックスの絞込み検索について教えて下さい

    Accessで仕入伝票の入力作業をしています。 入力フォームの中のコンボボックスを開いて仕入先コードを入力しますが、仕入先が多いため別のテキストボックス(テキスト名=「読みがな」)に入力された読みがなを使って絞込みをします。方法はコンボボックスの集合ソースのクエリーの社名フリガナのフィールドに 「 like "*" & [forms]![F_入力票]![読みがな] & "*"」と抽出条件を入れました。 これでうまく絞り込みができましたが、同じ様にこれをサブフォームの中で行うとエラー(「読みがな」が存在しない)になってしまいます。 このエラーを回避してうまく絞り込みができる方法を教えて下さい。 よろしくお願いします。

  • Accessでのデータ更新のキャンセルと再クエリについて。

    初心者で申し訳ありません。 (1)Accessで、フォームを作り簡単なデータを管理しています。そこで、入力フォームを開き、データを追加し ているときにキャンセルをしたいと思った場合はどの ようなイベントを記述すればよろしいでしょうか。  (入力したデータを更新したくない) docmd.cancel..を記述しても、結局テーブルに追加 されてしまっているのですが・・・。 (2) ★docmd.requery "○○○"    ★Forms![フォーム名].requery ・・・上記のような再クエリの方法を目にしてるのですが、上と下の違いはあるのでしょうか?この場合はこう・・・とかあるのでしょうか? よきアドバイスお願いいたします。

  • アクセスのメインフォームのみRequeryしたい

    アクセスでフォームを作製しています。 シンプルに「メインフォームの中にサブフォームがある」形で作製し各フォームにはクエリをレコードソースとして指定しています。検索したいデータのコードを入力してそのデータを表示させる・・・という一般的なフォームなのですが、メインフォームのみRequeryさせたいのですができますか? [Forms].[メインフォーム].requery とするとサブフォームまで再計算されてしまいますが、ここでサブフォームは再計算させないで、メインフォームだけ再計算させたいのです。宜しくお願いします。

  • ACCESS 2007で帳票フォームで絞り込み

    はじめまして、ACCESS初心者なのですが、困っています。 商品マスターというテーブル(商品ID、メーカー名、品名、型式)があって、見積フォームの サブフォームの見積詳細フォーム中で、メーカー名、品名、型式をコンボボックスで選択できるようにしており、以前見積もりしたことのある商品をメーカー名、品名、型式をコンボボックスでテーブルから 絞り込みをしながら参照してくるようにしたいのですが、テーブル内にあるレコードと同じものを 選ぶと新しくレコードが追加されてしまいます。同じ場合は追加したくないのですがどうしたら良いのでしょうか? レコードソースはクエリQ_見積詳細で、  見積詳細テーブル(見積No、注文No、数量、単価、商品ID)と商品マスター(商品ID、メーカー、  品名、型式)を商品IDでくっつけているものです。  コンボボックスは3つあって、  1つ目のメーカーCoのコンボボックスはコントロールソース メーカー  値集合ソースはクエリでQ_メーカー  Q_メーカーは商品マスターのテーブルで  フィールド・・メーカー テーブル・・商品マスター 集計・・グループ化 表示・・ON  フィールド・・品名 テーブル・・商品マスター 集計・・グループ化  表示・・OFF フィールド・・IIf([Forms]![見積データフォーム]![見積データフォーム詳細]![品名IDCo]         _Is Null,True,[商品マスター]![品名]=[Forms]![見積データフォーム]! _[見積データフォーム詳細]![品名IDCo]) テーブル・・なし 集計・・グループ化  2つ目の品名IDCoのコンボボックスはコントロールソース 品名  値集合ソースはクエリでQ_品名  Q_品名は商品マスターのテーブルで  フィールド・・品名 テーブル・・商品マスター 集計・・グループ化  表示・・ON  フィールド・・メーカー テーブル・・商品マスター 集計・・グループ化 表示・・OFF  フィールド・・IIf([Forms]![見積データフォーム]![見積データフォーム詳細]![メーカーCo]         _Is Null,True,[商品マスター]![メーカー]=[Forms]![見積データフォーム]! _[見積データフォーム詳細]![メーカーCo]) テーブル・・なし 集計・・グループ化  3つ目の型式Coのコンボボックスはコントロールソース 型式  値集合ソースはクエリでQ_型式  Q_型式は商品マスターのテーブルで  フィールド・・型式 テーブル・・商品マスター 集計・・グループ化  表示・・ON  フィールド・・品名 テーブル・・商品マスター 表示・・OFF          抽出条件 [Forms]![見積データフォーム]![見積データフォーム詳細]![品名IDCo]  フィールド・・メーカー テーブル・・商品マスター 表示・・OFF          抽出条件 [Forms]![見積データフォーム]![見積データフォーム詳細]![メーカーCo]   上記でやると、絞りこみはできるのですが、型式で同じものが2個表示されたり、レコードが新規  で追加されてしまいます。  よろしくお願いします。

専門家に質問してみよう