• ベストアンサー

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

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

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答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