- ベストアンサー
ACCESS 検索後に指定フォームを表示させるには?
こんにちは。 今、仕事で家庭用機器の商品の管理をしています。 ACCESSを使って各商品の詳細を入力しています。 オーディオ機器、DVD機器、モニター機器、オプション機器の4種類のテーブルがあり、それぞれに入力用フォームを作成してあります。 質問したいのは、型式の検索用フォームを作成して、検索を実行するとその型式がある入力用フォームを開き、データ(メーカー、値段、大きさなど)を表示させたいということです。 検索フォームで型式を入力 ↓ 検索 ↓ 型式が一致する入力用フォームを開き、 データを表示 テーブルやフォームが複数ある場合はどういう風に設定すればいいのでしょうか? テーブルを1つにまとめた方がやりやすいのでしょうか? 分かりにくければ補足いたしますので、よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
入力用フォームはレコードソースを変えて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
その他の回答 (3)
- usagisp
- ベストアンサー率23% (4/17)
今までの回答とは少々違うかもしれませんが 登録処理と、検索処理を別々につくる。 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はあまりとくいではないので、「クエリー」の活用がメインでこれらを「マクロ」にてフォームにて処理するようにしています。
お礼
ご回答ありがとうございます。 返答が遅れて申し訳ありませんでした。 うまくいきました!!
- sanbit
- ベストアンサー率32% (16/50)
1.型式の検索用フォームを作成してください。 (1)このフォームに型式を入力するためのテキストボックスを張付けます。 (2)コマンドボタンを張付けます フォームの操作→フォームを開く→フォームを選択(オーディオ機器の入力フォーム) →特定のレコードを表示するチェック →検索フォームのテキストボックス名<->入力フォームの型式のフィールド名 →文字列選択→任意の名前(オーディオ機器) (3)コマンドボタンを張付けます。 DVD機器、モニター機器、オプション機器の4種(2)と同様あと3個作成します。 ご質問の内容のようになるかと思います。 テーブル1つにする方が良いかも知れません、(フイールド項目が同じなら) より簡単になりそうですコンボボックスのするとか? ご質問の趣旨と違ってましたらごめんなさい。
お礼
ご回答ありがとうございます。 返答が遅れて申し訳ありませんでした。 うまくいきました!!
検索フォームのイメージが判りませんので、どうも... 仮に、[品種名][型番]というレコード情報が表示されるのであれば、 フォームにコマンドボタンを配置して、 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
お礼
ご回答ありがとうございます。 返答が遅れて申し訳ありませんでした。 うまくいきました!!
お礼
ご回答ありがとうございます。 返答が遅れて申し訳ありませんでした。 早速やってみたところうまくいきました!!