• ベストアンサー

ACCESS 検索後に指定フォームを表示させるには?

こんにちは。 今、仕事で家庭用機器の商品の管理をしています。 ACCESSを使って各商品の詳細を入力しています。 オーディオ機器、DVD機器、モニター機器、オプション機器の4種類のテーブルがあり、それぞれに入力用フォームを作成してあります。 質問したいのは、型式の検索用フォームを作成して、検索を実行するとその型式がある入力用フォームを開き、データ(メーカー、値段、大きさなど)を表示させたいということです。 検索フォームで型式を入力  ↓ 検索  ↓ 型式が一致する入力用フォームを開き、 データを表示 テーブルやフォームが複数ある場合はどういう風に設定すればいいのでしょうか? テーブルを1つにまとめた方がやりやすいのでしょうか? 分かりにくければ補足いたしますので、よろしくお願い致します。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

入力用フォームはレコードソースを変えて4つ作成し 検索フォームにて 型式のテキストボックス 機器の種類選択のオプションボックスまたはコンボボックス 検索ボタン を作成する。 検索ボタンクリックイベントに下記のような設定をする Private Sub 検索_Click() On Error GoTo Err_検索_Click Dim stDocName As String Dim stLinkCriteria As String Select Case 機器の種類 Case 1 stDocName = "オーディオ" Case 2 stDocName = "DVD" Case 3 stDocName = "モニター" Case Else stDocName = "オプション" End Select stLinkCriteria = "[ID]=" & "'" & Me![型式] & "'" DoCmd.OpenForm stDocName, , , stLinkCriteria Exit_検索_Click: Exit Sub

blindcrow
質問者

お礼

ご回答ありがとうございます。 返答が遅れて申し訳ありませんでした。 早速やってみたところうまくいきました!!

その他の回答 (3)

  • usagisp
  • ベストアンサー率23% (4/17)
回答No.4

今までの回答とは少々違うかもしれませんが 登録処理と、検索処理を別々につくる。 1.「マスター」ファイルの作成      機種・メーカー・購入先名        マスターにて検索が確実になります。    例:機種品名マスター      入力時:ホップアップさせる。          マスター以外入力できないようにする。        例:DVD・TV・洗濯機・クーラー・等大分類です。 2.「メインファイル」の作成  1)メインファイル(キーファイル)と詳細ファイルを分ける方法があります。  2)メインフォーム上の項目(例です)   機種、メーカ、商品名、型式、価格、購入日、購入先店名   キーNO(自動発生させる) 3.「詳細ファイル」の作成   1)キーNOにてメインファイルとリンクする。   2)必要フィールドを作成する。   3)1つのテーブルにした方が良いと思います。 4.「機種別表示マスタ」に表示させる項目のファイルをつくる。     メイン登録の機種により詳細ファイルの表示させる項目を     替えるためです。 5.登録処理  1)スタートで、上部に「メインフォーム」下部に「詳細ファイル」を表示させる。  2)上部のメインファイルにて登録してゆく  3)終わった時点で詳細ファイルにメインにて発生した「キーNO」をフィルドにセットし画面に表示させる。  4)詳細の項目:メインの機種により表示させる項目名をかえる。  5)内容を登録してゆく。 6.検索・修正処理  1)フォーム上部に型式を指定する項目をつくり、入力する。    マスターをホップさせれば入力が省け、精度が上がる。  2)メインファイルを検索し、同一データを下部に表示させる。    メインファイルの「キーNO」にて詳細ファイルが自動的に検索できるので表示させる。  3)同時に修正も可能にしておけば修正もできる。 7.一括問い合わせ処理  1)敬作したい項目を上部につくる。    一応は、メインファイルの項目を表示させる。  2)入力された項目でメインファイルを検索し、「キーNO」にて詳細データも表示させる。 こういうやり方もいかがですか。 私は、VBAはあまりとくいではないので、「クエリー」の活用がメインでこれらを「マクロ」にてフォームにて処理するようにしています。

blindcrow
質問者

お礼

ご回答ありがとうございます。 返答が遅れて申し訳ありませんでした。 うまくいきました!!

  • sanbit
  • ベストアンサー率32% (16/50)
回答No.3

1.型式の検索用フォームを作成してください。  (1)このフォームに型式を入力するためのテキストボックスを張付けます。  (2)コマンドボタンを張付けます   フォームの操作→フォームを開く→フォームを選択(オーディオ機器の入力フォーム) →特定のレコードを表示するチェック →検索フォームのテキストボックス名<->入力フォームの型式のフィールド名 →文字列選択→任意の名前(オーディオ機器)  (3)コマンドボタンを張付けます。 DVD機器、モニター機器、オプション機器の4種(2)と同様あと3個作成します。 ご質問の内容のようになるかと思います。 テーブル1つにする方が良いかも知れません、(フイールド項目が同じなら) より簡単になりそうですコンボボックスのするとか? ご質問の趣旨と違ってましたらごめんなさい。

blindcrow
質問者

お礼

ご回答ありがとうございます。 返答が遅れて申し訳ありませんでした。 うまくいきました!!

noname#22222
noname#22222
回答No.2

検索フォームのイメージが判りませんので、どうも... 仮に、[品種名][型番]というレコード情報が表示されるのであれば、 フォームにコマンドボタンを配置して、 Private Sub コマンド_入力フォームを開く() On Error Resume Next   Dim strDocName As String   Select Case Me.[品種名]     Case XXXX        strDocuName = "オーディオ""     Case XXXX        strDocuName = "DVD"     Case XXXX        strDocuName = "モニター"     Case XXXX        strDocuName = "オプション"     Case Else        strDocuName = ""   End Select   DoCmd.OpenForm stDocName, , , "[型式]='" & Me![型式] & "'" End Sub

blindcrow
質問者

お礼

ご回答ありがとうございます。 返答が遅れて申し訳ありませんでした。 うまくいきました!!

関連するQ&A

  • ACCESS 型番で検索後、指定のフォームを開くには?

    こんばんは。 アクセスを使い始めて間もない初心者です。 今度、会社でデータの管理を任されることになりました。 会社では商品の種別として、電気温水器・クッキングヒーター・床暖房機・融雪機の4種類扱っています。 テーブル(電気温水器マスター・クッキングヒーターマスター・床暖房機マスター・融雪機マスター)、入力フォーム(電気温水器フォーム・クッキングヒーターフォーム・床暖房機フォーム・融雪機フォーム)をそれぞれ作成して、新商品が出るたびに種類別にデータを入力しています。 データを入力する時は、その都度種別に合った入力フォームを開けば済むのですが、時々他の社員の方に「この型番の商品の詳細データが見たい。」と言われます。 過去に入力した型番など覚えているはずもなく、その都度テーブルを1個づつ開いて確認するため非常に手間がかかってしまいます。 できれば検索用のフォームを作成して、型番を入力してボタンをクリックすると、その型番を4つのテーブルから探し、その型番があるテーブルの入力フォームを開くようにしたいです。(もちろん開いた時にその型番のデータを表示するように。) テーブル、フォームが1個づつならなんとかできそうなんですが、複数のテーブル、フォームの場合のやり方が分かりません。 長文になってしまい、申し訳ありません。 アドバイスのほう、よろしくお願い致します。

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

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

  • ACCESSあいまい検索から入力まで

    VBAいじり始めて数日の超初心者です。 お知恵をおかしください。 ACCESS2000です あいまい検索をしたデータを選択して入力までできるようにしたいと考えていますが、検索の時点でうまくいきません。 関係のある項目 テーブル1 「入力テーブル」     2 「M_商品」 ……「JANコード」             ……「商品名」 フォーム1 「入力フォーム」→コマンドボタンで商品検索のフォームが開く     2 「商品検索」     3 「検索結果」……「JANコード」             ……「商品名」 入力テーブルとM_商品にはリレーションシップがかけてあります。 「M_商品」の中の「商品名」にフィルタをかけ、入力フォーム内に入力したいです。 商品検索のフォームには 非連結のテキスト「txt商品名」と「一致選択」という名のオプショングループ(3つの選択があり、部分一致と前方一致と後方一致です)、検索用のコマンドボタン(cmd検索)があます。 これで検索を実行してみると、コンパイルエラー;SubまたはFunctionが定義されていません、とでて、VBA側のPrivate Sub cmd検索_Click() が黄色くなって、「TakeOut」がグレーになった状態なります。

  • ACCESS 2007で帳票フォームで絞り込み

    はじめまして、ACCESS初心者なのですが、困っています。 商品マスターというテーブル(商品ID、メーカー名、品名、型式)があって、見積フォームの サブフォームの見積詳細フォーム中で、メーカー名、品名、型式をコンボボックスで選択できるようにしており、以前見積もりしたことのある商品をメーカー名、品名、型式をコンボボックスでテーブルから 絞り込みをしながら参照してくるようにしたいのですが、テーブル内にあるレコードと同じものを 選ぶと新しくレコードが追加されてしまいます。同じ場合は追加したくないのですがどうしたら良いのでしょうか? レコードソースはクエリQ_見積詳細で、  見積詳細テーブル(見積No、注文No、数量、単価、商品ID)と商品マスター(商品ID、メーカー、  品名、型式)を商品IDでくっつけているものです。  コンボボックスは3つあって、  1つ目のメーカーCoのコンボボックスはコントロールソース メーカー  値集合ソースはクエリでQ_メーカー  Q_メーカーは商品マスターのテーブルで  フィールド・・メーカー テーブル・・商品マスター 集計・・グループ化 表示・・ON  フィールド・・品名 テーブル・・商品マスター 集計・・グループ化  表示・・OFF フィールド・・IIf([Forms]![見積データフォーム]![見積データフォーム詳細]![品名IDCo]         _Is Null,True,[商品マスター]![品名]=[Forms]![見積データフォーム]! _[見積データフォーム詳細]![品名IDCo]) テーブル・・なし 集計・・グループ化  2つ目の品名IDCoのコンボボックスはコントロールソース 品名  値集合ソースはクエリでQ_品名  Q_品名は商品マスターのテーブルで  フィールド・・品名 テーブル・・商品マスター 集計・・グループ化  表示・・ON  フィールド・・メーカー テーブル・・商品マスター 集計・・グループ化 表示・・OFF  フィールド・・IIf([Forms]![見積データフォーム]![見積データフォーム詳細]![メーカーCo]         _Is Null,True,[商品マスター]![メーカー]=[Forms]![見積データフォーム]! _[見積データフォーム詳細]![メーカーCo]) テーブル・・なし 集計・・グループ化  3つ目の型式Coのコンボボックスはコントロールソース 型式  値集合ソースはクエリでQ_型式  Q_型式は商品マスターのテーブルで  フィールド・・型式 テーブル・・商品マスター 集計・・グループ化  表示・・ON  フィールド・・品名 テーブル・・商品マスター 表示・・OFF          抽出条件 [Forms]![見積データフォーム]![見積データフォーム詳細]![品名IDCo]  フィールド・・メーカー テーブル・・商品マスター 表示・・OFF          抽出条件 [Forms]![見積データフォーム]![見積データフォーム詳細]![メーカーCo]   上記でやると、絞りこみはできるのですが、型式で同じものが2個表示されたり、レコードが新規  で追加されてしまいます。  よろしくお願いします。

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

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

  • access 入力フォームへの表示

    初歩的な質問で申し訳ありません。 accessで商品マスタへの入力フォームを作成しました。 商品マスタテーブルから作成しました。 新規入力ボタン、登録ボタンを作成して、ボタンクリック時にのみ 新しいレコードへの移動、テーブルへのデータ更新を実行するようにしました。 この段階で、できれば入力フォーム上でコンボボックスなどを利用して検索を行い、 選択データをフォーム上に表示させたいと思いました。 ところがまったく知恵が働かず、どうしてよいのやら途方にくれています。 検索フォームを別途設けてもよいのですが、商品数が200たらずで、 今はコンボボックスで十分かなと思っています。 商品マスタにはカタカナ二文字の「検索キー」フィールドを設けており、 これをキーにしてクエリ(「Q商品検索」)で昇順に並べ、コンボボックスのコントロールソースを そのクエリにしました。 コンボボックスの更新後の処理イベントでマクロを使い、 「フォームを開く」にしてみましたが、その他の条件のつけ方がわかりません。 まったく的外れなことをしているのかもしれません・・・。 本やネットの質問過去ログで探してはみましたが、皆さん先を進んでおられて、窮してしまっています・・・。 このような状態でaccessを触るな!とお叱りを受けそうですが、 どうかお助け下さい。 よろしくお願いします。

  • アクセスの検索フォームを作りたい

    アクセス初心者です。 今、商品別納入先リストを作成しています。 例えば、商品Aに対してのテーブル1、商品Bに対してのテーブル2があるとします。 それぞれのテーブルに商品名、納入先、納入日、を入力してあるのですが、納入先だけ分かっていて商品名が分からない場合、両方のテーブルから併せて検索するフォームを作成する場合は、どうすればよいのでしょうか? 宜しくお願いします

  • Access 検索フォームの作り方について

    Accessで受付リスト作成しました。 *受付一覧テーブル:データはここに保存 *入力フォーム:データはここから入力 これとは別に、検索フォームを作りたいのです。 フォームのヘッダーにテキスト(氏名を入力)とトグルボタン("検索開始")を作って、 受付一覧テーブルにあるデータを入力フォームと同じ形式で呼び起こしたいのです。 初心者のため、こんな簡単な質問をして申し訳ございません。 ただ、1点気になるのが、テキストには全くの同一人物のデータが複数あります。 (例) 受付日    氏名 2005/11/2   山田 太郎 2006/02/5   山田 太郎 2007/10/1   山田 太郎 この複数のデータを受付日直近のものから順呼び起こすことは可能でしょうか? 難しいの場合は、単純に検索フォームの作り方をお教えいただけますと大変助かります。 何卒よろしくお願いいたします。

  • access 検索結果をテキストボックスに表示させる方法

    過去の質問見たのですが、どうもうまくできません。 現在の状況ですが、 「商品」「詳細」テーブルがあります。 各レコードの商品にはユニークなコードを付番してあります。 現在、詳細フォームを作成中です。 この、詳細フォーム上にテキストボックスを作成、コード入力をします。 次に検索ボタンを押した時、同じ詳細フォーム上の「名称」「規格」・・などのフィールドに商品テーブルの内容を自動入力させたいのです。 意味、わかりますでしょうか。 なんか、色々試して混乱してきてしまいました。 初心者です。よろしくお願いします。

  • Accessの検索フォーム

    以前にも似たような質問をして、その時は解決したのですが、また同じようなことでつまづいて、以前の回答をみて、 そのとおりにやってるつもりなのに、できなくて…。 テーブル1とフォーム1・フォーム2があります。 フォーム1に入力された情報をもとに、テーブル1の内容を検索して、フォーム2に表示するものを作成しています。 テーブル1には「***.***.**.☆」(情報)という形の情報が入っています。 *の部分の桁数は固定で☆は不定形です。(テキスト形式) フォーム1に入力された情報は「(***.***.)**.*」(検索1)や「(***.***.)**.**」(検索2)などです。 ※()内は入力せず テーブル1の情報の9文字目以降と、フォーム1に入力された情報を比べたくて、以下のようなものを作成しました。 (多少省略等があります) condKensaku = "(Mid(Val(テーブル1.情報),9) between " & Val(Me!検索1.Value) & " and " & Val(Me!検索2.Value) & ")" wherecond = condKensaku DoCmd.OpenForm "フォーム2", acNormal, WhereCond これを実行すると 実行時エラー '2501': OpenForm アクションの実行はキャンセルされました。 と出て、デバッグを押すと、 DoCmd.OpenForm "フォーム2", acNormal, WhereCond の行が黄色になります。

専門家に質問してみよう