Accessのフォームがうまく検索できません。



◇-Accessのフォームがうまく検索できません。-ゆきえ(10/11-17:09)No.14805
 ┗Re:Accessのフォームがうまく検索できません。-Rei(10/12-09:54)No.14843
  ┗Reiさ〜ん できました!多分  [報告]-ゆきえ(10/12-14:06)No.14863
   ┗Re:Reiさ〜ん できました!多分  [報告]-Rei(10/12-16:52)No.14876
    ┗頭ではわかるのですが・・・-ゆきえ(10/12-18:08)No.14881
     ┗なるほど-Rei(10/12-18:42)No.14885

14805Accessのフォームがうまく検索できません。ゆきえ 10/11-17:09

OS名:Windows98
パソコン名:gateway
ソフト名:Access97
Accessで社員情報なるものを作りました。
<説明が下手でごめんなさい。>
テーブルには[社員情報]他[所属名]などがあります。
クエリーには[全員一覧]などがあります。
帳票形式では[全員一覧]の抽出条件で『Like "*" &』を使って
うまく検索ができました。

しかし、単票形式でもっと単純で簡単な検索がしたいのですが
うまくできません。
◆人の名前を検索して、その人の情報を表示させたい
という感じです。
今は、リストボックスで入力も可の状態にしています。
値集合ソースにはSQLステートメントを使い、社員情報全部を載せ、
列数と列幅で名前だけを表示させるように指定しました。
で、次にその名前を選んだらデータが表示されるようにしたいのです・・・
私が取った行動ですが、更新後処理の[イベントプロシージャ]で
Me.RecordSource="全員一覧"にしたり、"社員情報"にしたり
Me.RecordSetだとか色々身近なデータを手本にして入れて見たのですが
うまくいかず・・・
そして今はシンプルにDoCmd.Requeryにとどまっています。

どうしたら、うまく検索ができるのでしょう・・・教えてください。

14843Re:Accessのフォームがうまく検索できません。Rei 10/12-09:54
記事番号14805へのコメント
ゆきえさんは No.14805「Accessのフォームがうまく検索できません。」で書きました。
>ソフト名:Access97
>Accessで社員情報なるものを作りました。
><説明が下手でごめんなさい。>
>テーブルには[社員情報]他[所属名]などがあります。
>クエリーには[全員一覧]などがあります。
>帳票形式では[全員一覧]の抽出条件で『Like "*" &』を使って
>うまく検索ができました。
>
>しかし、単票形式でもっと単純で簡単な検索がしたいのですが
>うまくできません。
>◆人の名前を検索して、その人の情報を表示させたい
>という感じです。
>今は、リストボックスで入力も可の状態にしています。
>値集合ソースにはSQLステートメントを使い、社員情報全部を載せ、
>列数と列幅で名前だけを表示させるように指定しました。
>で、次にその名前を選んだらデータが表示されるようにしたいのです・・・
>私が取った行動ですが、更新後処理の[イベントプロシージャ]で
>Me.RecordSource="全員一覧"にしたり、"社員情報"にしたり
>Me.RecordSetだとか色々身近なデータを手本にして入れて見たのですが
>うまくいかず・・・
>そして今はシンプルにDoCmd.Requeryにとどまっています。
>
>どうしたら、うまく検索ができるのでしょう・・・教えてください。

もう一つ別にクエリーを作成して、
リストボックス(コンボ?)の値を名前の抽出条件に
指定するようにすればリストボックスの値にに応じた
レコードを抽出できます。
ご存知だと思いますが抽出条件には
forms![フォームの名前]![コンボの名前]
を指定します。
この作成したクエリーをフォームのRecordSourceに指定して
リストボックスの更新後処理でMe.Requeryすれば
たぶんご希望のとおりの動作をします。

14863Reiさ〜ん できました!多分  [報告]ゆきえ 10/12-14:06
記事番号14843へのコメント
Reiさんは No.14843「Re:Accessのフォームがうまく検索できません。」で書きました。
>もう一つ別にクエリーを作成して、
>リストボックス(コンボ?)の値を名前の抽出条件に
>指定するようにすればリストボックスの値にに応じた
>レコードを抽出できます。
>ご存知だと思いますが抽出条件には
>forms![フォームの名前]![コンボの名前]
>を指定します。
>この作成したクエリーをフォームのRecordSourceに指定して
>リストボックスの更新後処理でMe.Requeryすれば
>たぶんご希望のとおりの動作をします。
>

他のAccessではできたのに、恐らくちょっとしたミスなのかどうしても
動かず、自分なりにアレンジしてみました。(といってもたまたまできたのですが・・・)
Reiさんのおっしゃったように、まずクエリーを作成しました。(検索クエリー)
そしてコンボボックスの値集合ソースでSQLを使い名前を表示させました。
(ここで不思議だったのがなぜか、他のではできたのに同じようにやってもここでは
[forms]![フォームの名前]![コンボの名前]だと表示されなくなってしまうことでした。)
そして更新後の処理でMe.RecordSource="検索クエリー"をしたら検索結果が出てくるように
なりました!!フォームのレコードソースはそのままテーブルの名前のままでした。
しかしレコード件数が1件になってしまうため、一応隣に「新規」ボタンを
つくるようにしたら、件数もちゃんと出てきて、試したところちゃんとテーブルにも
他のフォームにも反映されていました。
感激です。Reiさんがレスをくださったおかげで落ち着いて頭を整理し、考えることができまし
た。
こんな作業1つ1つでも思いどおりに動くと嬉しいものですね。
本当にありがとうございました。

ゆきえ

14876Re:Reiさ〜ん できました!多分  [報告]Rei URL10/12-16:52
記事番号14863へのコメント
ゆきえさんは No.14863「Reiさ〜ん できました!多分  [報告]」で書きました。
>Reiさんのおっしゃったように、まずクエリーを作成しました。(検索クエリー)
>そしてコンボボックスの値集合ソースでSQLを使い名前を表示させました。

>(ここで不思議だったのがなぜか、他のではできたのに同じようにやってもここでは
>[forms]![フォームの名前]![コンボの名前]だと表示されなくなってしまうことでした。)

なぜでしょう?わからないですね。
たぶんどこか間違っています(笑)。

>そして更新後の処理でMe.RecordSource="検索クエリー"をしたら検索結果が出てくるように
>なりました!!フォームのレコードソースはそのままテーブルの名前のままでした。

デザイン時のプロパティシートで「そのままテーブルの名前」を
指定していたとしても、
「更新後の処理でMe.RecordSource="検索クエリー"」と
しているのですからフォームのレコードソースはその時点で
「検索クエリー」に変わっているのです。
意味わかりますか?

>しかしレコード件数が1件になってしまうため、一応隣に「新規」ボタンを
>つくるようにしたら、件数もちゃんと出てきて、試したところちゃんとテーブルにも
>他のフォームにも反映されていました。

すみません、これって意味がわからないです。

プロセスはどうであれうまくいって良かったですね。

14881頭ではわかるのですが・・・ゆきえ 10/12-18:08
記事番号14876へのコメント
Reiさんは No.14876「Re:Reiさ〜ん できました!多分  [報告]」で書きました。
>デザイン時のプロパティシートで「そのままテーブルの名前」を
>指定していたとしても、
>「更新後の処理でMe.RecordSource="検索クエリー"」と
>しているのですからフォームのレコードソースはその時点で
>「検索クエリー」に変わっているのです。
>意味わかりますか?

はい。頭では理解できます。たしかに検索クエリーを見に行くとちゃんと検索した
データが入っていますものね。すごく納得です。
ただ、フォームのプロパティを見たときにレコードソース項目が検索クエリーになっていないのは
なんででしょう・・・ん〜・・・
あっ、検索する前(開いた時)は「そのままのテーブル」からデータを引っ張っているから・・・?
<<検索した時そのフォームのレコードソースはその時点で検索クエリーに変身する>>という事でしょうか。
だから目に見えない・・・と?


>>しかしレコード件数が1件になってしまうため、一応隣に「新規」ボタンを
>>つくるようにしたら、件数もちゃんと出てきて、試したところちゃんとテーブルにも
>>他のフォームにも反映されていました。
>すみません、これって意味がわからないです。

たぶん、検索クエリーの中身はいつも1件しかないから1件と表示されるんだと思います。
って説明が下手ですね。すいません。

>プロセスはどうであれうまくいって良かったですね。
ありがとうございます。ただ、また問題があったんですけどね^^;
新規で書いてあるので見つけたらお願いします。


14885なるほどRei 10/12-18:42
記事番号14881へのコメント
ゆきえさんは No.14881「頭ではわかるのですが・・・」で書きました。
>Reiさんは No.14876「Re:Reiさ〜ん できました!多分  [報告]」で書きました。
>>デザイン時のプロパティシートで「そのままテーブルの名前」を
>>指定していたとしても、
>>「更新後の処理でMe.RecordSource="検索クエリー"」と
>>しているのですからフォームのレコードソースはその時点で
>>「検索クエリー」に変わっているのです。
>>意味わかりますか?
>
>はい。頭では理解できます。たしかに検索クエリーを見に行くとちゃんと検索した
>データが入っていますものね。すごく納得です。
>ただ、フォームのプロパティを見たときにレコードソース項目が検索クエリーになっていないのは
>なんででしょう・・・ん〜・・・
>あっ、検索する前(開いた時)は「そのままのテーブル」からデータを引っ張っているから・・・?
><<検索した時そのフォームのレコードソースはその時点で検索クエリーに変身する>>という事でしょうか。
>だから目に見えない・・・と?

プロパティシートはそのフォームの初期状態を
設定してあるだけなので、「更新後処理」などの
イベントプロシージャで
「Me.RecordSource="検索クエリー"」
としていれば、このステップが実行された時に
「レコードソース:なんたらテーブル」
が、
「レコードソース:"検索クエリー"」
に内部的に書き換えられているんです。
再度、意味わかりますか?

>たぶん、検索クエリーの中身はいつも1件しかないから1件と表示されるんだと思います。
>って説明が下手ですね。すいません。

わかりました、了解です。
そのとおり、クエリーでレコードを
絞り込んでいるのですから1件になります。
次レコードボタンとか付けたいのなら
別の方法でやるしかありません。
説明は掲示板では面倒なのでしません。
書籍でも参考にしてください。

あとわたしの勝手な言い分ですけど
質問のタイトルを変えるのはやめませんか?
メーリングリストで見ていると関連性が
全くわからなくなるので。
#なんだかここの掲示板って仕組みがよくわかんない。
#Article番号も掲示板とメーリングリストで
#まったく関連がないみたいだし。

A1.本ページは参考になりましたか? 又はアドバイスがありますか?
解決 参考になった 参考にならなかった アドバイスする

A2.何度目の訪問ですか?
初めて来た   数度目(2〜4) 5回以上来ている   管理人:

A3.何か一言どうぞ(アドレスは書くことができません)

A4.アドレスがあればどうぞ(1つまで)


↑↑↑↑よろしければ押してください↑↑↑↑

何か一言(本ページで参考になったならないを含めて残してあります)
◎:解決 ○:参考になった ×:参考にならなかった !:アドバイスあり

参考回数投稿日時何か一言