こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Accessで検索画面を作る方法

Accessで簡単な検索ができる画面を作りたいのですが
大まかにどのような画面を作成すればいいのかわかりません。

例えば得意先コードを入力すると得意先名がでるような
画面を作りたいのですが・・・
得意先コードと得意先名がのったテーブルとクエリを1つ作成しました。
その後はどうしたらいいのかわかりません。
フォームで検索できるようにしたいのです。
よろしくお願いします!!

投稿日時 - 2007-07-06 10:38:50

QNo.3143774

すぐに回答ほしいです

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

専門家ではないので、一般人の私のやり方で恐縮です。
手順は次の通り。

(1)パラメータクエリを作成する
(2)マクロを作成する
(3)オートフォームでフォームを作成する
(4)コマンドボタンを配置し、クリック時イベントにマクロを登録する

これで開くたびに検索ができるかと思います

[手順]
(1)パラメータクエリを作成する
作成しておいたクエリをデザインビューで開く

検索条件に [得意先コードを入力して下さい] と入力する
[](角カッコ)がポイントです

名前をつけて保存する
(ここでは仮に"Q_得意先検索"とします)

(2)マクロを作成する
マクロオブジェクトに切り替えます

[新規作成]を選択します

アクションリストの中から[閉じる]を選択します

アクションの引数の[オブジェクトの種類]から[クエリ]を選択します

[オブジェクト名]から[Q_得意先検索]を選択します

名前をつけて保存します
(ここでは仮に"M_検索"とします)

(3)オートフォームでフォームを作成します
フォームオブジェクトに切り替えます

[新規作成]を選択します

ウィンドウから[オートフォーム:○○形式]を選択します
(ここは自由に選んでください)

[元になるテーブルまたはクエリ]から[Q_得意先検索]を選択する

名前をつけて保存する
(ここでは仮に"F_検索"とします)

(4)コマンドボタンを配置し、クリック時イベントにマクロを登録する
デザインビューに切り替えます

領域を広げてコマンドボタンを作成します
(ツールボックスを表示させておいて下さい)

コマンドボタンを右クリックして[プロパティ]を選択する

[イベント]タブに切り替えて[クリック時]から[M_検索]を選択する

上書き保存する




これで実行すると、パラメータクエリが働くので検索ができるかと思います。
オートフォームでは、テキストボックス等の大きさがばらばらになるので調整をすると良いと思います。

投稿日時 - 2007-07-06 12:55:14

お礼

ご丁寧にありがとうございました。
2)のマクロを設定するとどうなるのでしょうか?
設定しましたが、コマンドボタンを押下しても何も変化がありません。

それと、F_検索をクリックするとパラメータクエリで検索できますが
次に検索するときは一度閉じてからしか検索できないのでしょうか?
フォームの画面で得意先コードを入れて検索ボタンをクリックすると
得意先名がでてくるように設定したいのですが・・
ややこしくてすみません。
よろしくお願いいたします。

投稿日時 - 2007-07-06 17:14:57

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(4)

回答2、レコードソース設定編。

SELECT 得意先一覧.得意先名 FROM 得意先一覧 WHERE (((得意先一覧.得意先コード)=Forms!フォーム2!得意先コード));

フォームのレコードソースを上のように設定します。

1、得意先コード・・・非連結。
2、得意先名・・・・・・[得意先名]に連結。使用可能=いいえ。編集ロック=はい。

この場合も、フォームに書く VBA コードは僅か1行です。

Option Compare Database
Option Explicit

Private Sub 得意先コード_AfterUpdate()
  Me.Requery
End Sub

どちらかと言うと、これは Access の機能を利用しているので負荷が多いと思います。
が、簡単に実現できるやり方でもあります。

投稿日時 - 2007-07-06 11:38:22

回答1、DLookup関数編。

<得意先一覧>
ID____得意先コード___得意先名___________読み
1_____101________________新日本商事(株)____シンニホンショウジ
2_____102________________山田商店(有)________ヤマダショウテン
3_____103________________田中鉄工所(有)_____タナカテッコウショ

このようなテーブルがあるとします。

フォームには、2つのテキストボックスを配置します。

1、得意先コード・・・非連結。
2、得意先名・・・・・・非連結。使用可能=いいえ。編集ロック=はい。

検索するだけですから、どちらも、非連結で構いません。
[得意先名]は、編集する必要がありませんので、ロックしてしまいます。

この場合、フォームに書く VBA コードは僅か1行です。

Option Compare Database
Option Explicit

Private Sub 得意先コード_AfterUpdate()
  Me.得意先名 = DLookup("得意先名", "得意先一覧", "得意先コード=" & Me.得意先コード)
End Sub

<補足1>

検索する読み: [シンニ______________]

Access の検索機能を利用するには、通常は、このように[読み](検索スペル)の一部を入力させます。
この場合、複数の得意先がヒットすることもありますので、その場合はリストボックス等に検索結果を表示します。
[得意先コード一覧]などをユーザに配布して利用させるのは、Access の機能を活用しないやり方かも知れません。

<補足2>

DLookup関数は、便利です。が、実に、動作速度が遅いです。
この難点は解消するのは、ADO 等で自前のDLookup関数を開発する必要があります。

投稿日時 - 2007-07-06 11:36:07

ANo.1

>大まかにどのような画面を作成すればいいのかわかりません。
>その後はどうしたらいいのかわかりません。
あまりに、漠然としすぎて 回答が難しいです。

http://www.fom.fujitsu.com/goods/access/
先ずは、このアドレスにある書籍のような一通りの基礎部分のテキストを参考にご覧になっては 如何でしょうか?
そうすれば、ピンポイントでの質問になると思います。

参考URL:http://www.fom.fujitsu.com/goods/access/

投稿日時 - 2007-07-06 11:24:55

あなたにオススメの質問