• ベストアンサー

Accessでの検索

宜しくお願いします。 Accessで検索フォームを作成しようと思っています。 フォームから入力した番号を検索して 結果をテキストボックスに表示するといった感じです。 質問の内容は複数のテーブルがある場合、 どのようにすればいいのか?です。 色々調べてみたのですが、わかりません・・・。 ご存知の方がおりましたら教えて下さい。 宜しくお願いします。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

どうも遅くなりました。 検索フォームの名前をF検索とします。 1 デザインビューでフォームを作成するを   選択。 2 デザインビューの中で右クリックから   フォームフッターヘッダーを選択。 3 詳細部分にテキストボックスを5つ   設置。ラベルは除去。 4 各テキストボックスの名前を、管理番号   名前、発行日、売上券の管理番号、品目   とする。 5 フォームのプロパティのサイズ自動修正   を、いいえ に設定。 6 フォームのヘッダーと詳細の間にテキスト   ボックスを一つ置き、名前をtx検索と   する。 7 同じくボタンを一つ設置、名前をcmd検索   とする。ボタンのクリック時からコード   ビルダーを選択。コード表が開かれたら   以下の文を Private cmd検索_Click() と   End Sub の間に挿入。 8 コード表のツール→参照設定からDAOにチェック。 Dim db As Database Dim rs As Recordset Dim strSQL As String strSQL = "SELECT 発行テーブル.管理番号, 発行テーブル.名前, 発行テーブル.発行日, 売上テーブル.売上券の管理番 号, 売上テーブル.品目 " & _ "FROM 発行テーブル INNER JOIN 売上テーブル ON 発行テーブル.管理番号 = 売上テーブル.売上券の管理番 号 " & _ "WHERE (((発行テーブル.管理番号)='" & [Forms]![F検索]![tx検索] & "'));" Set db = CurrentDb Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot) Me.RecordSource = strSQL Me.管理番号.ControlSource = Nz("[発行テーブル].[管理番号]") Me.発行日.ControlSource = Nz("[発行テーブル].[発行日]") Me.名前.ControlSource = Nz("[発行テーブル].[名前]") Me.売上券の管理番号.ControlSource = Nz("[売上テーブル].[売上券の管理番号]") Me.品目.ControlSource = Nz("[売上テーブル].[品目]") rs.Close Set rs = Nithing db.Close Set db = Nothing 以上で出来上がると思いますが、変更点や うまく動かないなどがあれば書きこんで ください。

menta2000
質問者

お礼

piroin654さん 望み通りのフォームになりました!! 本当にありがとうございます!! 感謝、感謝です! では、失礼します。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

状況はわかりました。まずは管理番号を テキストボックスに入力し、検索結果を 他のテキストボックスに表示したい、という ことでよろしいでしょうか。 それで、表示したい検索結果はどういう ものであればいいのですか。

menta2000
質問者

補足

>まずは管理番号をテキストボックスに入力し、検索結果を 他のテキストボックスに表示したい、という ことでよろしいでしょうか。 はい、そうです。 必要な検索結果は全てのフィールド項目です。 何度も申し訳ないです。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

複数のテーブルの構造が同じ 場合はユニオンクエリを作成し、 それをメインフォームやサブ フォームのレコードソースに して検索に使用してもいいで しょうし、あるいはレコード セットとしてVBAで検索ができます。 異なる場合はテーブル同士が リレーションを取れるキーが 必要となります。 複数のテーブルの構造はどのように なっていますか。

menta2000
質問者

お礼

piroin654さん 書き込みありがとうございます。 テーブルは2つあります。("・"の部分がフィールド名) 発行テーブル(主キーは管理番号) ・管理番号(テキスト) ・名前(テキスト) ・発行日(日付) 売上テーブル(主キー無し) ・売上券の管理番号(テキスト) ・品目(テキスト) 管理番号が記載された伝票を発行する(発行テーブルで管理) 売上となった場合、伝票の管理番号を入力(売上テーブルで管理)と いったことを行いたいのです。 宜しくお願いします。

関連するQ&A

  • ACCESSでの検索について

    現在ACCESSで管理&検索したい情報があるのですが、、 いわゆる検索エンジンのキー入力のように フォーム側から1つのテキストボックスに複数の 一致条件を入れて検索することは可能でしょうか? 可能でしたら その方法を教えてもらえませんか 例 テーブル側 →いちごはうまーい!        メロンはあまーい!        レモンはすっぱーい! フォーム側 検索キー →いちご あまーい フォーム側 表示   →いちごはうまーい!             メロンはあまーい! ちょっとわかりずらいでしょうか??

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

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

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

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

  • ACCESS2000 あいまい検索の結果からデータをフォームに取得

    MSACCESS2000にてフォームを作り、テキストボックスに入力された文字で、データをあいまい検索し、複数表示するようになってます。like [テキストボックス]&"*" 複数表示されたデータから1つを選択し、フォームのテキストボックスに取得することは可能なのでしょうか? ACCESSを始めたばかりで、いろいろ調べたりしているのですが、可能かどうかが知りたいのです。どうか宜しくお願いします。

  • Access2000で、検索システムを作ろうとしています。

    このカテゴリで初めて質問させて戴きます。 当方、一週間前にAccessに触れたばかりの初心者です。 Access2000を用いて「書名の検索」を行う場合に、 例えば書名番号を定めておいて、その番号をテキストボックスに記入すれば 指定された書物が出てくる、と云う検索の仕組みはわかるのですが、 本の題名の一部を入力すると、 「その一部の言葉が含まれる書名」が検索結果として出てくる、 と云う仕組みは作れますでしょうか。 例えば、フォームを作って、テキストボックスに「筐」と入力すると、 「魍魎の筐」も「筐の中の失楽」も表示されるような。 「*」を使って操作する、ような感じはするのですが、 具体的にどのようにすれば良いか判りません。。。 初就職でデータベース管理を任され、焦っております。 どうぞ宜しくお願い致します。

  • ACCESS2003でクエリを使った検索フォームを作っています。

    ACCESS2003でクエリを使った検索フォームを作っています。 クエリは以下の様になっています。 ----------  番号   タイプ   品名  1111   AA     商品1  2222   AA     しょうひん2  3333   BB     商品しょうひん3 ---------- 品名のフィールドの抽出条件に ---------- Like "*" & [Forms]![品名検索フォーム]![品名検索] & "*" ---------- と入れています。 品名検索フォームは帳票タイプで、フォームヘッダーにテキストボックスを設け 「品名検索」と名前をつけています。 テキストボックスに【商品】と入力すれば番号1111と3333が、【しょうひん】と入力すれば 番号2222と3333が抽出されるように設定し、ここはうまく動きました。 ただ、このフォームを開いた際、テキストボックスは空欄になっているため、全レコードが 表示されてしまいます。テキストボックスが空欄の際は、何も表示したくないのですが どこを触ればいいのでしょうか? どうかよろしくお願いいたします。

  • Access2002での複数項目検索について

    教えてください。 Access2002でデータベースを作っています。 ふたつのテーブルから選択クエリを作成、そのクエリ内で部分一致のパラメータを設定し、 複数項目(5つ)の検索を行っていましたが、検索のたびに毎回5つのダイアログボックスを クリア(必要項目を入力、入力しないパラメータは「OK」でとばす)するのがめんどくさいと 使用者にいわれ、検索フォームからの検索に変えたいと思っています。 その場合、  (1)選択クエリを基としたフォームを新規作成し、  (2)非連結のテキストボックスを5つ作り、それぞれ適当な名前を付け、  (3)クエリの抽出条件の欄の現在パラメータ設定をしているところを、       [Forms]![フォーム名]![テキストボックス名]に変える だけではできないのでしょうか。。 いろいろWeb上で調べたり、本を読んで見よう見まねでつくってみましたが、出来上がった フォームから検索ボタン(「クエリの実行」ボタン)を押しても、全件が表示されてしまうの です。 パラメータではできているのに・・・。 どなたか、ご教示くださるとうれしいです。 よろしくお願いいたします。

  • Accessのフォームにて顧客番号を検索して無ければ新規作成したい

    Access2003のフォームで社員管理システムを作ろうとしていますが、VBAの記述でわからないことがあるので、教えてください。 まず、テキストボックス「txt_検索」に社員番号を入力し「cmd_検索」ボタンを押すと、社員管理テーブルの社員番号フィールドより検索をします。 社員管理テーブルに該当するレコードがある場合は、レコードの編集となり、社員番号がない場合はテキストボックス「txt_社員番号」に「txt_検索」の値を入れた新規レコードの作成としたいのです。 入力した値でレコードの検索をして、無いなら新規作成といったコードは どのような記述になるのか教えてください。 よろしくお願いいたします。

  • アクセスである文字を含む検索

    ACCESS2000を使っています。 あるデータテーブル「発注書テーブル」があって、ここでは「(1)ID」「(2)顧客名(法人)」「(3)発注商品」「(4)納品済チェック」の4つフィールドがあるとします。 作業はフォームで行います。フォーム名は「発注書フォーム」。 「(2)顧客名」から検索をかけたくて、検索コマンドボタンをつくり、「検索フォーム」を発注書フォームとまったく同じ形態でつくり、そこにとべるようにしました。 「検索フォーム」には「検索」というテキストボックスを作ります。 「検索クエリ」というクエリを作り、発注書テーブルを素とし、すべてをデザインビューで表示するようにしました。 そして、「(2)顧客名」の抽出条件に[Forms]![検索フォーム]![検索]を入力します。 すると、「検索フォーム」の「検索」をコンボボックスにして、顧客名をすべて表示させ選択した場合は、「検索フォーム」では、選択した顧客の情報が表示されるようになりました。 が、しかし、「検索」をコンボボックスではなく、テキストボックスで、しかも顧客名の一部だけを入力したら、その文字を含むすべてのレコードを表示してほしいのです。 そこで、「検索クエリ」の「(2)顧客名」抽出条件にlike"*[Forms]![検索フォーム]![検索]*"と入力してみました。 そして「検索フォーム」の「検索」テキストボックス(非連結)に顧客名の一部を入力したところ、ぜんぜん絞りこみ抽出してくれません。 もちろん、クエリ上でも絞り込んでいない模様です。 どうしたら文字の一部からその文字を含む顧客名のレコードを全て抽出し、表示させることができるでしょうか? 細かくてすみませんが、かなり困ってます。 どうかわかる方、教えてください。 まったくちがう方法(別の手法)でもかまいません。 この説明でわからない部分がありましたら補足しますのできいてください。 よろしくお願いします。

  • アクセスのマクロでの再検索

    ACCESSで住所録を作っています。 入力のためにフォームを作成し、そのフォーム上にボタン「検索」「すべて表示」を作りたいと思っています。 マクロ  1.「検索」はアクションを「フィルタの実行」、フィルタは別にクエリで作成し、別に用意したテキストボックスに文字を入れてボタンを押すことによって検索できるように設定しました。  2.「すべて表示」は1つめのアクションが「全レコードの表示」、2つめのアクションが、検索文字を入れるテキストボックスへの「値の代入」で「""」を指定しました。 これでやってみたのですが、1回目の「検索」はうまく働くのですが、「すべて表示」して、2回目以降「検索」ボタンを押しても、1回目と同じ結果しか出てきません。 この2つのボタンが正しく働き、再検索ができるようにするにはどうすればよいのでしょうか? モジュールを作成するのでしょうか? ぜひご指導をお願いいたします!