• ベストアンサー

アクセスのマクロ機能を使った検索について質問です。

 200件のデータがありまして、ある条件に合致したデータのみを連票形式で表示したいのですが、上手くいきません。ご教授願います。  例えば、名前で検索する時に「鈴木一郎」で検索すると該当データは1件ですので単票形式で表示させても問題無いわけですが、「鈴木*」とワイルドカードを使って検索した場合には該当データが5件とかあるわけです。この場合に、該当する5件を連票形式で単一のビューで表示したいのですが、いきづまってます。どなたか教えてください。お願いします。  マクロを実行させるボタンは単票形式のフォーム上に貼り付けてあります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

はじめまして。  表示させたい項目はフォームでしょうか?レポートでしょうか?  フォームでの組み方ならSQL(クエリ)との組み合わせがよいでしょう。 あとでレポートの表示にも役立ちます。 ▼こんなデータ例で説明します。 ----------------------------------------------  ○テーブル名  [名前データ]  ○フィールド名 [コード] [名前] ---------------------------------------------- コード データ 001   山田 一郎 002   鈴木 太郎 003   佐藤 花子 004   鈴木 良子 005   坂本 久太郎 : : ▼用意するもの  1)名前データのデータシート型フォーム [FORM02]  2)上記をサブフォームとして表示させる単票フォーム[FORM01] ▼名前データのデータシート型フォーム[FORM02]の作成  1.普通にデータシート型のフォームを作ります。  2.レコードソースを書き換えます。 ---例----------------------------------------------------------- SELECT 名前データ.コード AS コード, 名前データ.名前 AS 名前 FROM 名前データ WHERE ((名前データ.名前) Like IIf(IsNull([Forms]![FORM01]![名前]),"*","*" & [Forms]![FORM01]![名前] & "*")); #Like IIf(~が重要! ▼単票フォーム[FORM01]の作成  1.先に作った[FORM02]をサブフォームとして埋め込みます。   名前を[SubForm]としてつけておきます。  3.検索用フィールドのテキストボックスを非連結で作って   おきます。このとき、名前は「名前」としてください。  4.「名前」の更新後処理に、以下プロシージャを組み込みます。 ------------------------------------- Private Sub 名前_AfterUpdate() DoCmd.Requery "SubForm" End Sub -------------------------------------  これでFORM01を開いた時は全登録データが表示され、名前フィールド になにか検索文字列が入り、更新されたタイミングで、SubForm に該当 分のみが表示される仕組みのできあがりです。  これを応用すれば、レポートも同様に検索分のみを表示させることが できますよね。(フォーム内にレポートをオープンするコマンドボタン をつくっておき、オープンするレポートのレコードソースを、検索ソー スと同様にする) がんばってください。

hirokun925
質問者

補足

回答ありがとうございます。がんばって、やってみます。

その他の回答 (1)

  • misaki02
  • ベストアンサー率66% (4/6)
回答No.2

例ですが 単独テーブルのデータ表示を 条件検索しない状態で 1件ずつ表示していくことはできますか。 これができるなら いったん検索結果を仮テーブルに出力してから 作業を行って 終了時にデータを戻してはどうでしょうか。 全くのシロウトなのでおかしなことを 書いてますが できると思います。

hirokun925
質問者

補足

回答ありがとうございます。1件づつの表示は可能です。 「いったん検索結果を仮テーブルに出力してから」のところがミソでしょうか?

関連するQ&A