• ベストアンサー

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

  • Access、検索用フォームでのあいまいな検索

    現在、Accessでデータベース作成をしています。 テーブル:  ・テーブルA          ・テーブルB          (A・B間にリレーションシップ設定) クエリ    ・検索クエリ(テーブルA・テーブルBを元に作成) フォーム   ・検索用フォーム(デザインビューでフォーム作成より)          ・検索結果フォーム(検索クエリを元に作成) また、以下のような設定を入力しました。 「検索クエリ」の抽出欄  Like "*" & [Forms]![検索用フォーム]![検索したい名前] & "*"・・(1)  ※検索したい項目、すべての抽出欄に設定済 「検索用フォーム」  検索実行ボタンを作成し、マクロを設定  ・フォームを開く→「検索結果フォーム」  ・フィルタ→「検索クエリ」 上記の設定により、検索用フォームに検索文字を入力することで、その結果を「検索結果フォーム」に反映することができました。 ただ、テーブルAが元になっている項目の抽出欄のみに(1)を入力すると、うまくいくのですが、テーブルBが元になっている項目欄にも (1)を入力しようとすると、検索用フォームからうまく検索することができなくなります。 2つのテーブルを元にしたクエリからは、検索用フォームをつかった複数のOR検索はできないのでしょうか?? ご存知の方、ぜひ教えてください。 よろしくお願いいたします。

  • accessでの住所印刷

    accessを使用しています。 基のテーブルがあり、フォーム・クエリで抽出作業が終わりました。 この抽出データ(住所)を封筒に印刷したいと思うのですが、どのような順序でレポートを作成したら良いのでしょうか? ご回答をお願いいたします!

  • Access2003 検索用フォームでの検索がうまくいかない

    Access2003 検索用フォームでの検索がうまくいかない とある、テーブルを参照するフォームを作成。 そしてテキストbokを設けて、各項目毎にキーワードを指定してデータを抽出できるようにしたいのですが、 どうもうまくいきません。 検索は出来ているのですが、全部ひっかからないのです。 例えば ID という項目を検索するbox に"1"を入力して ID=1の全データを抽出しようとすると、一部検索にかかってこないものがある という具合です。 テーブルに入力されている数字や文字が本当に一致しているかどうかも調べましたが確かに一致しています。 実際、テーブルを開いて ctr+f で検索すると全てひっかかります。 何が原因なのでしょうか??? 私の作った手順は以下のとおりです。 テーブル作成(エクセルからインポート) ※空白の欄もあります フォーム新規作成でフォーム作成 フォーム上にテキストbox作成 クエリ作成 (Like "*" & [Forms]![フォーム名]![テキストbox名] & "*" ) マクロ作成⇒フィルタ実行/上の手順で作ったクエリを登録 マクロをフォーム上へドロップ およそこのような手順です。

  • accessのレポートで封筒に住所を印刷したい

    accessを使用しています。 基のテーブルがあり、フォーム・クエリで抽出作業が終わりました。 この抽出データ(住所)を封筒に印刷したいと思うのですが、どのような順序でレポートを作成したら良いのでしょうか? ご回答をお願いいたします!

  • accessのレポートで封筒に住所を印刷

    accessを使用しています。 基のテーブルがあり、フォーム・クエリで抽出作業が終わりました。 この抽出データ(住所)を封筒に印刷したいと思うのですが、どのような順序でレポートを作成したら良いのでしょうか? ご回答をお願いいたします!

  • ACCESSのフォームで、絞込み検索すると重複したレコードが増えてしま

    ACCESSのフォームで、絞込み検索すると重複したレコードが増えてしまいます。 ACCESSのフォームで、コンボボックスを6ほど設置し、条件を絞り込んでデータを抽出するシステムを作成しました。 抽出自体は問題なく出来ているのですが、再クエリを実行した時、同じ抽出条件と結果が複数レコード表示されてしまいます。 調査した結果、フォームプロパティのレコードソースに設定していますクエリの実行結果の件数と同じ件数分増えてしまうようです。 そして、そのフォームをしばらく使用していますと、「これ以上テーブルを開くことができません。」とのメッセージが出てしまいます。 これも何か関係しているのでしょうか? いろいろと調べてみましたが、解決する事ができませんでした。ご指導、宜しくお願いします。

  • Access フォームのコンボボックスでの検索

    Access2010で質問です。 フォーム上のコンボボックスで レコードを検索・抽出したいと考えています。 以下のような事をやりたい場合、 フォームやVBAをどのように 作ればよろしいのでしょうか? お忙しいところたいへん恐れ入りますが、 ご教授いただけますと助かります。 ======テーブルの説明===== 以下の3つのテーブルがあります。 ◆メインテーブル |No|職業 |住所|年齢|名前| -------------------------- |01|会社員|東京| 31|品川| |02|自営業|埼玉| 30|川口| |03|会社員|東京| 30|渋谷| |04|自営業|埼玉| 20|戸田| |05|自営業|埼玉| 20|熊谷| |06|自営業|東京| 30|太田| ◆職業テーブル |No|職名 | ----------- |01|自営業| |02|会社員| |03|無職 | ◆住所テーブル |No|地名| --------- |01|東京| |02|埼玉| |03|千葉| そして、各テーブルは 以下のようにリレーションされています。 ・職業テーブルはメインテーブルの「職業」へリレーション ・住所テーブルはメインテーブルの「住所」へリレーション =====検索方法の説明===== 検索はフォーム上で行いたいです。 フォームに以下のようなコンボボックスを2つ作成します。  コンボボックス1・・・職業が選べます  コンボボックス2・・・住所が選べます それぞれのコンボボックスで条件を選んだ後、 「実行」ボタンを押すことで検索結果を表示させたいです。 ◆両方のコンボボックスが空欄だった場合 「検索条件を選んでください」との メッセージボックスを表示させたいです。 ◆複数のレコードが抽出された場合にやりたい事 各レコードの「年齢」を比較して 値が一番小さいレコードだけが 抽出されるようにしたいです。 「年齢」が同じ値だった場合(競合した場合)は 「No」の値が小さいレコードを抽出したいです。 ◆検索結果の表示方法 抽出されたレコードの「名前」だけを フォームに表示したいです。 =====検索結果の例(やりたい事)===== ◆事例1 コンボボックス1=「会社員」 コンボボックス2=「東京」 検索結果=「渋谷」 01と03が検索にヒットしますが 「年齢」の値が小さい方(03)だけを 抽出されるようにしたいです。 ◆事例2 コンボボックス=「自営業」 コンボボックス=「埼玉」 検索結果=「戸田」 まず02と04と05が検索にヒットしますが 02の「年齢」の値が大きいので除外します。 次に04と05の「年齢」の比較ですが、 同じ値になっています。 したがって「No」の値が小さい04が 抽出されるようにしたいです。 ==================== 以上です。 できるだけ詳細に書いたつもりですが、 不足な情報がありましたらご指摘ください。 なにとぞよろしくお願いいたします。

  • Accessで検索フォームを作成したい。

    Access2000でDBをつくりました。 そのデータから検索をして、抽出をしたいのです。 検索条件をいれるデータはこれ、と決まっていればパラメータークエリでもつくればいいのですが、どれでも検索条件にするようにしたい、と使用者から頼まれました。 入力方法としては単票フォームを開き、検索したい項目に、検索条件をいれると抽出される、というようなものです。 検索したい項目は日付かもしれないし、名前かもしれない、はたまた会社名かもしれない、とバラバラなのです。 その項目毎にパラメータクエリをつくるのもちょっと・・・と思うので。 何かいい方法はありますでしょうか? よろしくお願いします。

  • Accessの検索フォームで。

    Accessを使ってデータベースを作成しています。 「テーブル1」があり、これには 名前ID 名前 入力日 チェック項目1 チェック項目2   : とあります。 これをもとに「検索クエリ」を作成しました。 検索クエリの項目は「テーブル1」とまったく同じですが、 すべてを検索するわけではないので ・名前ID  「検索項目なし」 ・名前  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![名前]),[氏名],'*' & [Forms]![検索条件入力フォーム]![名前] & '*') ・入力日  「検索項目なし」 ・チェック項目1  「Like IIf(IsNull([Forms]![検索条件入力フォーム]![チェック項目1]),[チェック項目1],[Forms]![検索条件入力フォーム]![チェック項目1])」 ・チェック項目2  ※上記と同じ。   : としてあります。 この「検索クエリ」をもとに「検索条件入力フォーム」を作成してあります。 名前の欄に「田中」と入力すれば、「田中」がつく人がすべて検索されるというようなカンジになっています。 「テーブル1」に空欄があり、その場合に、検索がうまくいきません。 「検索クエリ」のところですべてに条件を入れればいいのですが、フォームに全てが入っていないので。。。 やはりフォームに「テーブル1」の項目すべてを含め、クエリで条件を入れるべきでしょうか? これが今考えている中では一番手早いようなカンジがするのですが、どうしてもあまりスマートなやり方ではないような気がして。。。 これしかないのであれば、これでやりますが、他にいい方法があれば、教えていただけないでしょうか? あまり上手な文章ではないので、補足要求があれば補足します。 宜しくお願いします。 Ac2000です。

  • ACCESSの検索フォーム

    アクセス初心者なのですが教えてください。 検索フォームをつかっていくつかの条件に当てはまるデータをフォームで抽出したいのですがどのようにしたらいいか分かりませんどなたか教えてください。 マクロでWHEREつかってやってみたのですがいくつかの条件を入れたのですが途中で切れてしまうのと、ひとつでも空欄があるとまったく抽出しません。 どうかよろしくお願い致します。

専門家に質問してみよう