• 締切済み

Accessのサブフォームを検索

Accessで質問があります。 メインフォームに個人名簿があり、その人のセミナー受講実績が、セミナー受付情報として、サブフォームになっています。 個人名簿(個人ID、名前、住所、電話番号・・・) セミナー受付情報(個人ID、受付日、受講番号、セミナー名、入金日・・・) リンク親/子フィールドに個人IDを指定しています。 別の検索フォームから、サブフォームの受講番号を入力して、該当する個人名簿を検索する事はできますか?

みんなの回答

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

#1です > 検索フォームにテキストボックスを設置して、そこに受講番号を入力、検索ボタンを押すと 検索フォームをデザインビューで開き、検索ボタンをクリックします。 プロパティを表示させ、イベント「クリック時」を、[イベントプロシージャ]にしてから 右横の「・・・」をクリックします。 すると VBA を記述する画面へ切り替わるので、検索ボタン名が「検索ボタン」なら Private Sub 検索ボタン_Click() End Sub が表示されると思うので、そこに書いていきます。 以下の様に、 Private Sub 検索ボタン_Click()   If (CurrentProject・・・・    ・・・・   End If End Sub DLookup(・・・・) の最後の記述で、 "受講番号=" & Me.検索用受講番号のテキストボックス名 では、受講番号は数値として扱っています。テキスト型なら "受講番号='" & Me.検索用受講番号のテキストボックス名 & "'" の様に ' ' で囲ってください。 .FindFirst "個人ID = " & ・・・・ のところも同様です。 「検索用受講番号のテキストボックス名」は、実態に合わせて変更してください。

kaigojin
質問者

補足

ご丁寧にありがとうございます。 やってみたのですが、 If (CurrentProject.AllForms("F1").IsLoaded) Then With Forms("F1").RecordsetClone.FindFirst "個人ID=" & Nz(DLookup("個人ID","受付_form","受講番号=" & Me.検索),0) の "個人ID=" のところで、 「コンパイルエラー:修正候補:ステートメントの最後」 と出てしまいました。 すみませんが解決方法をよろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.1

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1332875033 では、解決できなかったということになりますか。 メインに検索用の受講番号入力部分があるわけではないのですね。 メイン/サブフォームとなっているフォーム名を「F1」と仮定します。 検索フォームで処理を記述するものとします。 処理内容は似るものになります。 DLookup("個人ID","セミナー受付情報","受講番号=" & Me.検索用受講番号のテキストボックス名) で対象の個人IDを求め、「F1」フォームでそこに移動するようにします。 以下初めの IF で、フォーム「F1」が起動されているか判別します。 起動されていれば「F1」の RecordsetClone 内を検索します。 If (CurrentProject.AllForms("F1").IsLoaded) Then   With Forms("F1").RecordsetClone     .FindFirst "個人ID = " & Nz(DLookup(・・・・), 0) ' DLookupは上記の内容     If (.NoMatch) Then       MsgBox "対象がありません"     Else       Forms("F1").Bookmark = .Bookmark     End If   End With End If ※個人ID、受講番号は数値型とした場合の例です。 ※ Nz(DLookup(・・・・),0) では、受講番号が一致するものがなければ NULL となるので、NULL なら、0 としています。 個人IDに 0 が存在するのなら存在しない数値にしてください。 ※検索フォームのプロパティ「作業ウィンドウ固定」が「はい」になっていると、  他フォームへの値代入とはできなかったかと思います。 ※(未検証) こちらは、やり取りできるのでわからなかったら補足してください。 現状私がわからないのは、 > 受講番号を入力して、該当する個人名簿を検索 部分で、受講番号に重複するものがあるのか? 上記例では、重複するものが無い時のものになります。

kaigojin
質問者

補足

早速の回答ありがとうございます。 検索フォームにテキストボックスを設置して、そこに受講番号を入力、検索ボタンを押すと、その個人名簿に飛ぶようにしたいのですが、上の式は検索フォームのどこに入れれば良いのですか? 式の事が全く分からないので、すみませんが教えてください。 受講番号は重複はしていません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • メインフォームの中のサブフォームの検索はできますか?

    メインフォームに個人名簿があり、その人のセミナー受講実績が、セミナー受付情報として、サブフォームになっています。 個人名簿(個人ID、名前、住所、電話番号・・・) セミナー受付情報(個人ID、受付日、受講番号、セミナー名、入金日・・・) リンク親/子フィールドに個人IDを指定しています。 別の検索フォームから、サブフォームの受講番号を入力して、該当する個人名簿を検索する事はできますか?

  • accessのサブフォームの更新

    いつもお世話になっています。 サブフォームの件でどうしても解らないところがあります。 受講者名簿テーブル 受講者番号、受講者名、受講者住所・・・ 受講者予約テーブル 受講者番号、日付、授業内容 上記の2つのテーブルでそれぞれフォームを作成していて、メインが「受講者名簿F」サブが「受講者予約F(表形式)」、受講者番号でリレーションをしています。 受講者予約テーブルをもとに、日付で検索できるように「受講者日付検索Q」というクエリを作成しました。 「受講者名簿F」のメインテーブルに「日付検索」というのを作成して、「受講者日付検索Q」をもとにしたフォームを開くようにしています。 今回、行いたいことは「日付検索」ボタンの隣に「更新」というボタンを作成し、「日付検索」で表示されたフォームにデータ変更をした際、画面を閉じた後で サブフォーム「受講者予約F(表形式)」の画面に変更が反映されるようにしたいのですが、やり方が思いつきません。 よろしくお願い致します。

  • Accessのサブフォーム内で連続番号を振りたい

    Accessのサブフォーム内で連続番号を振りたい メインフォームで受付番号親(オートナンバー型) サブフォームで受付番号子(数値) でサブフォームで連続番号を振りたい場合の方法が見つかりません。 例: メインフォーム 受付番号親1 サブフォーム 受付番号親1 子1 商品~~~ サブフォーム 受付番号親1 子2 商品~~~  メインフォーム 受付番号親2 サブフォーム 受付番号親2 子1 商品~~~ サブフォーム 受付番号親2 子2 商品~~~ てな具合なんですけど。

  • Access2002の検索について

    社員マスターテーブル 社員ID   テキスト型 氏名   テキスト型 しめい   テキスト型 部署名   テキスト型 研修マスターテーブル 研修ID   数値型 研修名   テキスト型 受講リストテーブル 受付ID   数値型 受付日   日付時刻型 受講日   日付時刻型 社員ID   テキスト型 研修ID   数値型 研修受付クエリ 社員ID   テキスト型(受講リストテーブル) 氏名   テキスト型(社員マスターテーブル) しめい   テキスト型(社員マスターテーブル) 部署名   テキスト型(社員マスターテーブル) 受付ID   数値型  (受講リストテーブル) 受付日   日付時刻型(受講リストテーブル) 受講日   日付時刻型(受講リストテーブル) 研修ID   数値型(受講リストテーブル) 研修名   テキスト型(研修マスターテーブル) 社員が何の研修を受講したのか履歴がほしかったので「社員マスターテーブル」と「研修受付クエリ」を使ってメインサブフォームを作りました。 やりたい事は、このメインサブフォームに検索のボタンを作りたいのです。 社員IDまたは社員名または受講日のいずれかを入力するし検索ボタンをクリックするとメインサブフォームに結果を出したいのです。 マクロのフィルタ?をやってみたのですがよく意味が分からずできませんでした。 どうぞお手数ですがご教授頂けないでしょうか?

  • Accessのサブフォーム

    Access2000です。 フォームを作成し、ツールボックスより「サブフォーム/サブレポート」をクリックしてサブフォームを配置しました。 イベントがEnterとExitしかないやつです。 検索するとサブフォームのテキストボックスが・・・とかあるのですが、何の事やら?です。 この、配置したサブフォームと検索すると色々ヒットするサブフォームは別物なのでしょうか? このシンプルなサブフォームのソースオブジェクトにテーブルを指定して表示させています。 リンク子フィールドやリンク親フィールドは未設定です。 使い方が間違っているでしょうか? このサブフォームの使い方がイマイチよく分かりません。 検索しても前述のように存在しないイベント(?)等の説明でさっぱりです。 分かりやすくどなたかお願いします。。。

  • Access2013 vbaサブフォームのレコード

    [Access2013 vba] ■したいこと サブフォームのレコードの中から、一レコードだけをチェックボックスなどで選択したいのですが、どのようにしたら出来ますでしょうか。 複数行選択は出来ないようにしたいです。 選択したのち、メインフォームの選択ボタンを押すと、そのレコードのID番号を取得して、呼出元のフォームのIDフィールドに代入したいです。 ■画面の流れ・・・ Aフォーム → 帳票型Bフォームで、レコードを選び「開く」ボタンを押す→ B 'メインフォームとCサブフォーム)が開く Cサブフォームのレコードをチェックボックスにチェックを入れて選択する B ' メインフォームの「選択」ボタンを押すと B ' メインフォームと、その前のBフォームが閉じて Aフォームに戻り、AフォームのIDフィールドに選択したIDが格納される。 よろしくお願いします。

  • ACCESSのサブフォーム教えてください☆

    お世話になっております。 メインフォームではなくサブフォームの抽出方法で、コンボボックスでサブフォームのフィールド(例えば、商品名)を選択後、テキストボックスで文字列(例えば、ソフトクリーム)を指定して検索する方法です。メインフォームでのやり方は調べて(VBA)分かったのですがサブフォームは試行錯誤してやってみたのですがうまくいきません。 すみませんが、宜しくお願いします。

  • アクセス2003のサブフォームの値の代入

    アクセス2003でメインフォームにデータシートビューのサブフォームを作成しています。 そのサブフォームのフィールドにイベントで検索用の別のフォームを開くようにしています。 検索用フォームからサブフォームへマクロで値を代入するように しているのですが、サブフォームが見つからないというエラーが表示されます。 どこに問題があるのでしょうか? (ちなみにサブフォームだけ開いて検索フォームを開き値を代入するとうまく行きます。メインフォームからだとエラーになります。) どうぞよろしくお願いします。

  • Accessについて。(サブフォーム)

    アドバイスをお願いいたします。 例えば、子会社の社員名簿を作っているとします。 複数のテーブルがあり、それぞれ テーブル:子会社 フィールド:会社名、所在地 テーブル:社員名簿 フィールド:会社名、社員名、写真 テーブル:社員評価 フィールド:会社名、社員名、評価内容 だとします。 それぞれにクエリを作り、共通部分をリレーションシップでつなぎ、フォームを使って 社員名、会社名、写真、評価 の内容を表示させたいのです。 さて、ここからなのですが、写真が複数枚ある(同じ社員の写真が複数枚ある)場合、フォーム上で選択して、いずれかの写真を表示させたいと思います。 この場合、どのような設計をすれば一番効率的で簡単に表示できるでしょうか。 写真の部分だけ、サブフォームにするのが良いのでしょうか。サブフォームはあまり作ったことが無くて正直不得手にしています。。。

  • ACCESS サブフォームのフィールドにカーソルをあてる

    ACCESS2003で、VBAで簡単なプログラムを作っています。 <やっていること> ・フォームAからフォームBを開きます。 ・そのときにフォームAの番号と一致するデータをフォームBに表示します。 ・フォームBにはサブフォームCが埋め込んでいます。 このサブフォームCの中のフィールドDにカーソルが入っているようにしたいのですが、 Forms!サブフォームC!フィールドD.setfocus としたら、「カレントレコードには、フィールドDという名前のフィールドはありません」というエラーがでます。 フィールドDというフィールドは存在しています。 このような場合、どのように記述するのがよろしいのでしょうか。 よろしくお願いします。

専門家に質問してみよう