• ベストアンサー

Accessで検索画面を作る方法

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

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

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

専門家ではないので、一般人の私のやり方で恐縮です。 手順は次の通り。 (1)パラメータクエリを作成する (2)マクロを作成する (3)オートフォームでフォームを作成する (4)コマンドボタンを配置し、クリック時イベントにマクロを登録する これで開くたびに検索ができるかと思います [手順] (1)パラメータクエリを作成する 作成しておいたクエリをデザインビューで開く ↓ 検索条件に [得意先コードを入力して下さい] と入力する [](角カッコ)がポイントです ↓ 名前をつけて保存する (ここでは仮に"Q_得意先検索"とします) (2)マクロを作成する マクロオブジェクトに切り替えます ↓ [新規作成]を選択します ↓ アクションリストの中から[閉じる]を選択します ↓ アクションの引数の[オブジェクトの種類]から[クエリ]を選択します ↓ [オブジェクト名]から[Q_得意先検索]を選択します ↓ 名前をつけて保存します (ここでは仮に"M_検索"とします) (3)オートフォームでフォームを作成します フォームオブジェクトに切り替えます ↓ [新規作成]を選択します ↓ ウィンドウから[オートフォーム:○○形式]を選択します (ここは自由に選んでください) ↓ [元になるテーブルまたはクエリ]から[Q_得意先検索]を選択する ↓ 名前をつけて保存する (ここでは仮に"F_検索"とします) (4)コマンドボタンを配置し、クリック時イベントにマクロを登録する デザインビューに切り替えます ↓ 領域を広げてコマンドボタンを作成します (ツールボックスを表示させておいて下さい) ↓ コマンドボタンを右クリックして[プロパティ]を選択する ↓ [イベント]タブに切り替えて[クリック時]から[M_検索]を選択する ↓ 上書き保存する これで実行すると、パラメータクエリが働くので検索ができるかと思います。 オートフォームでは、テキストボックス等の大きさがばらばらになるので調整をすると良いと思います。

abcdef2007
質問者

お礼

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

その他の回答 (3)

noname#140971
noname#140971
回答No.3

回答2、レコードソース設定編。 SELECT 得意先一覧.得意先名 FROM 得意先一覧 WHERE (((得意先一覧.得意先コード)=Forms!フォーム2!得意先コード)); フォームのレコードソースを上のように設定します。 1、得意先コード・・・非連結。 2、得意先名・・・・・・[得意先名]に連結。使用可能=いいえ。編集ロック=はい。 この場合も、フォームに書く VBA コードは僅か1行です。 Option Compare Database Option Explicit Private Sub 得意先コード_AfterUpdate()   Me.Requery End Sub どちらかと言うと、これは Access の機能を利用しているので負荷が多いと思います。 が、簡単に実現できるやり方でもあります。

noname#140971
noname#140971
回答No.2

回答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関数を開発する必要があります。

  • kurodai2
  • ベストアンサー率38% (77/202)
回答No.1

>大まかにどのような画面を作成すればいいのかわかりません。 >その後はどうしたらいいのかわかりません。 あまりに、漠然としすぎて 回答が難しいです。 http://www.fom.fujitsu.com/goods/access/ 先ずは、このアドレスにある書籍のような一通りの基礎部分のテキストを参考にご覧になっては 如何でしょうか? そうすれば、ピンポイントでの質問になると思います。

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

関連するQ&A

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

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

  • Accessで期間抽出方法

    アクセスの検索フォームで 期間の抽出をしたいと思っています。 クエリではできるのですが、クエリではなく、コードビルダを使用しています。 「検索フォーム」で条件を入力し、「T_マスタテーブル」から作成した 「検索結果フォーム」に表示したいのです。 検索フォームの 「取得日1」に1999/3/6、「取得日2」に2002/4/25 と入力した場合、1999/3/6~2002/4/25の間が表示されるようにしたいのです。 どのように入力すればいいのでしょうか? 宜しくおねがいがします。 Ac2000

  • ACCESSでテーブルでの自動入力

    ACCESS 2007を使っています。 SQLとかは分かりません。(貼り付けとかも、そもそもどこに貼り付けるのかもよく分かりません) 得意先(100件)を、営業担当者(5人)にそれぞれに割り振ります。 得意先テーブル(得意先ID、名前、住所、担当者ID、営業担当者名)(とりあえずは、営業担当者名だけは空白) 営業担当者テーブル(担当者ID、営業担当者名)を 作成します。 クエリのほうで、以下の二つのテーブルの以下の要素を合体させたものを作ります。 得意先テーブルの(得意先ID、名前、住所、担当者ID) 営業担当者テーブルから(営業担当者名) すると、 得意先クエリ(得意先ID、名前、住所、担当者ID、営業担当者名)まで入ったもの、がつくれます。このクエリは、得意先ID、担当者ID両方がきちんと入力された項目のみがリストアップされます。 それで、以下疑問点なのですが、 ・基本的に、得意先の情報を新規で入力していく際は、この得意先クエリをベースに作成された、得意先フォームから入力していくというのが一般的なのでしょうか。 (テーブル自体に、上記の得意先テーブルに、得意先名まで入ったものを作成することは普通は、しないのでしょうか。入っていた方が何かと便利かと思うのですが、そういった用途には、クエリを基にしたフォームを使うものなのか。あくまでテーブルはデータの保管場所と考え、クエリを使用上の入出力の基本窓口にすべきなのでしょうか) ・現段階で、上記の得意先テーブルで、担当者IDが入力されていないものが多数あるのですが、(エクセルで取り込んだデータ)、この得意先クエリでは、それらは表示されません。そうすると、得意先テーブルから入力していく必要があります。その場合は、得意先テーブル自体か、そこから作られたフォームに、担当者ID(実際にはこれが、代理店IDで、結構多数あるのですが)、を入力していく形になるかと思います。この場合、得意先テーブルだけをベースとしたクエリやフォームをつくり、担当者IDの入力を(入力しやすい形、自動的に選択できるなど)にして、入力をとりあえず終えきるというのは基本でしょうか。 とりとめもない質問になってしまいましたが、よろしくおねがいします。 基本的な考え方など分かればと思います。

  • accessで・・・(検索)

    初心者です。 accessで商品情報のデータベースを作りました。 フォームで一商品一画面にして表示をしているのですが、 上部をあけて検索テキストBOXを作り、【検索】ボタンを右に設置し、 任意の商品コードまたは商品名を入力してボタン押下で下画面に表示させたいです。 クエリは、商品コード、商品名の2項目で作成してみましたがこれも間違っている気がします。 どなたか初心者でも作れるフォームを教えてください。

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

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

  • access コンボボックスの次

    顧客管理・商品管理の簡略化を目指している初心者です。商品マスター・仕入先・販売先というテーブルを作成、商品情報の入力・閲覧のためのフォームを作ろうと思っています。 1)商品マスターテーブルには、仕入先コードと販売先コードが入っています。フォーム上では仕入先名・販売先名も確認したいのですが、 「商品マスターテーブルにそれらを追加したクエリを作成 → クエリからフォームを作成」 という方法でよいでしょうか。 2)フォーム上で仕入先コードと仕入先名のコンボボックスを設置します。コードを選択すると自動的に次の欄に仕入先名が反映されるようにする方法を教えてください。 おそらく非常に初歩的な質問かと思いますが、マニュアルを見たり検索をかけたりしても要領を得ません。アドバイスをどうぞよろしくお願いいたします。

  • 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で複数検索をしたいのですが・・・

    T_1・・・テーブル  No.、得意先名、商品名、売上日、備考 Q_1・・・クエリ  「T_1」を元に作成 「Q_1」からなる「F_1」というフォームのヘッダーに [Txt得意先名]、[Txt商品名]、[Txt売上日]という3つのテキストボックスと、 検索ボタン[Cmd検索]を配置し、1~3つの条件を入力して検索する フォームを作りたいと考えています。 そこで、http://okwave.jp/qa/q2029954.html にあるコードを使い、 下記のコードを書いてみました。 ================= Private Sub Cmd検索_Click() Dim MyCriteria As String MyCriteria = "売上日 ="  If IsNull(Txt売上日) Then   MyCriteria = MyCriteria & True  ElseIf Not IsNull(Txt売上日) Then   MyCriteria = MyCriteria & "#" & Me!Txt売上日 & "#"  Else  End If strfilter = MyCriteria strfilter = strfilter & " And 得意先名 Like '*" & Me.Txt得意先名.Value & "*' And 商品名 Like '*" & Me.Txt商品名.Value & "*'" Filter = strfilter FilterOn = True Me.Requery End Sub ================= ただ、上記のコードでは、[Txt売上日]を空欄で検索した場合、 仮に「T_1」で売上日が未入力だった時にそのデータは検索してくれません。 自分でもいろいろ調べて試したのですが、なかなかうまくいかず・・・。 ご存知の方、教えていただけませんでしょうか? よろしくお願いいたします。

  • Accessのフォームで

    Accessで2つほど質問いたします。 (1)テーブルにフィールドを追加したのですがフォーム上でそのフィールドが追加できません(プロパティで選択できない)、多分クエリーを経由してフォームを作成したのですが、どのクエリーだかわからなくなってしまいました、参照しているクエリーがどれなのかを調べる方法を教えてください。 (2)検索フォームを作成して入力した文字を含む検索をしたいのですが どのようにしたら良いのでしょうか、今は入力の文字列の最初と最後に「 * 」を入力して検索しています。

  • Accessコンボボックスについて

    Accessコンボボックスで選択した番号に連動する名前を他のフィールドへ表示する方法 Access初心者です。 どなたか方法をご存知の方がいらっしゃいましたら、お手数ですがご教授願います。 何分初心者なので、お手数ですが、噛み砕いてお教え頂けると助かります。 請求書の作成フォームを作っています。 フォーム上に[取引先名」という、コンボボックスを配置しています。 そのコンボボックス上から名前を選択できるようにしています。 作成済の請求書を名前別に検索できるようにパラメータクエリを作成して、あいまい検索?(Like検索)で 検索した名前に該当する請求書を抽出できるようにしたいと思っています。 実際にパラメータクエリを作成してみましたが検索結果0件で表示されてしまいます。 その際に作成したものは、「取引先名」フィールドの抽出条件に、Like"*"&[取引先名を入力して下さい]&"*" です。 これで駄目だったので、次に Like"*"& &"*"を削除して、[取引先名を入力して下さい」だけで作成してみましたが 取引先名で検索すると、検索結果は0件でした。 取引先IDで検索すると検索できましたが、何が駄目だったのかがさっぱり分かりませんでした。 説明下手で申し訳ありませんが、どなたかご存知の方がいらっしゃいましたら教えて下さい。

専門家に質問してみよう