• ベストアンサー

ACCESSのフォームを使っての住所録の検索なのですが,

Accessのフォームを使って住所録から,データを抽出し,その結果をまず表示,その後ラベルシールに印刷をしたいのですが,フォームでの検索は,テーブルのすべての項目について複数の項目を同時検索をできるようにしたいです。 テーブルの構造はごく普通の住所録です。データ件数は8万件ほどです。 どういう方向で作業を進めるべきか分からないのですが,こういった場合は,まず,検索用のフォームを作成し,コマンドボタン(検索・印刷)を配置して, それに対してイベントかマクロの記述をするんだろうなとは思うのですが・・・ 私が思うに,抽出結果を格納するテーブル・検索フォーム・ラベル印刷用のレポートが必要なのだろうと思いますが,それらが何でつながっていくのかが分かりません。参考書などでは,一つ一つのことが別々に書いてあって作業の全体像が分かりません。作業の方向と必要なスキルが同程度などか詳しい方教えてください。

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

  • ベストアンサー
noname#1296
noname#1296
回答No.2

まず、検索結果を格納するテーブルはなくても大丈夫ではないでしょうか。 色んな方法が考えられますが、自分だったらこうするという方法で... 仰るとおり、検索用のフォームを作成します。検索結果のフォーム、ラベル用のレポートは条件を考えずに全部のレコードを表示するようなレコードソースでいいと思います。検索条件になるフィールドは全部持たす必要がありますし、フォームやレポートに表示する必要がなくても、非表示で配置して下さい。 検索条件フォームで入力した条件を元に、検索ボタンのクリック時のイベントプロシージャで Dim strWHERE As String strWhere="" strWhere=strWhere &"([名前] ='"& forms![F_検索条件]![名前] &"')" strWhere=strWhere &"AND (都道府県='"& forms![F_検索条件]![都道府県] & "')" みたいなWHERE句を生成し、その条件で検索結果のフォームをOpenFormで開きます。 ラベル印刷ののレポートも同様ですね。検索結果から印刷するようにするのでしたら、検索結果のフォームに印刷ボタンを配置して、そのクリック時のイベントプロシージャでOpenReportのWHERE句の引数部分に上記の条件を指定して下さい。

その他の回答 (1)

noname#5067
noname#5067
回答No.1

一応、一通りのことを書きます。 (1)条件入力と結果表示用のフォームを作成。これはひとつのフォームでいいでしょう。このフォームには複数の条件入力フィールドと[検索]ボタン、結果表示用のフィールド、[印刷開始]ボタンがあればいいでしょう。アプリを終了するボタンもあるとカッコがつくでしょうか? (2)[検索]コマンドボタンを配置し、クリック時イベントにて、条件に入力された値を元にしたSQL文を構成・クエリを作成します。 (3)結果表示のフォームのソースは(2)で作成したクエリにします。検索結果をわざわざテーブルに保存する必要はないでしょう。テーブルにする場合、結果をインサートしないといけなくなるので、処理が遅くなります。 (4)検索結果表示後は、[印刷開始]ボタンのクリックイベントでレポートを開けばよいです。このレポートのデータソースは、もちろん検索結果のクエリです。 カンタンに一通りの流れはこんな感じですが、当然、条件入力値のチェックだったり、検索結果0件時は印刷しない、とかいうロジックも必要です。 マクロでもできるでしょうが、ココはひとつVBAをゴリゴリ書いて、素敵なものを作っちゃってくださいな。 不明な点はまた書き込んでください。

関連するQ&A