Microsoft Access 掲示板

サブフォームの検索

5 コメント
views
4 フォロー

度々申し訳ありません。
主フォームとサブフォームの問題で質問です。

①案件グループフォーム
②サブ案件フォーム
③リンクテーブル
 案件グループ番号と案件番号を主キーとする

このとき、案件グループのヘッダーで案件番号を検索した際、サブフォームに該当の案件番号を含む案件グループを開くことはできますでしょうか…
色々調べたつもりなのですが、案件グループが固定のものしか見つけることができませんでした。
今回は案件グループ自体が複数存在しております…

どんぐり
作成: 2020/09/10 (木) 17:45:12
通報 ...
1

念の為に確認ですが、「案件グループフォーム」上にサブフォームコントロールがありそこに「サブ案件フォーム」が埋め込まれているということでしょうか。(たまに、主フォームと別に引いていフォームのことをサブフォームと表現される方がみえるので)

サブフォームコントロールだとするなら、リンク親フィールドとリンク子フィールドの設定を「案件番号」に設定すれば、自動でメインフォームの案件番号でサブフォームのデータは絞り込まれます。

これで解決でないのなら、メインフォーム、サブフォームのテーブルのフィールド構成、クエリならSQL文とうを提示して、どのようにしたいのか具体的に説明してください。

2
どんぐり 2020/09/12 (土) 22:05:51 1d451@2d897

お返事ありがとうございます!先ほど「Microsoft Access 掲示板用ファイル送信」からサンプルデータを送信させていただきました。
具体的にやりたいことは、
①「F案件グループ」のヘッダーの検索ボックスで「5555」と検索
②サブフォーム内に「5555」が含まれる、案件グループ「0002」のページを開く
※案件NOが空のものも存在します。
※本当は存在しないで欲しいのですが、案件NOが複数のグループに存在する可能性もあります。
※案件NOをインデックス(重複無)にしないのは、空のものを作りたいことがあるためです。

以上になります。お時間ある際にご確認いただけたらうれしいです。

3
どんぐり 2020/09/12 (土) 22:09:21 1d451@2d897 >> 2

②について説明不足でしたので書きなおします。
②サブフォーム内の案件NOに「5555」が含まれる、案件グループ「0002」のページを開く

こういった感じのことができるようにしたいです…

4

送付されたファイル 検索したい.accdb

ファイル見ました。
「F案件グループ」フォームの検索ボタン「コマンド14」のイベントプロシージャを下記のように記述してください。

Private Sub コマンド14_Click()
    Dim FindWhat

    FindWhat = DLookup("案件グループID", "クエリ1", "案件No='" & Me.テキスト12 & "'")
    If IsNull(FindWhat) Then
        MsgBox "該当する案件Noは見つかりませんでした。"
    Else
        Me.案件グループ.SetFocus
        DoCmd.FindRecord FindWhat
    End If
End Sub

これでご希望の結果になると思います。

検索テキストボックス「テキスト12」はコンボボックスに変更するとより使いやすくなると思います。
「テキスト12」を右クリックして[コントロールの種類の変更]-[コンボボックス]をクリック。
「値集合ソース」に下記のSQLを設定します。

SELECT DISTINCT T案件.案件NO FROM T案件 WHERE T案件.案件NO Is Not Null; 

上記の改修をしたファイル 検索したい_hatena.accdb

5
どんぐり 2020/09/13 (日) 09:56:00 1d451@2d897

ありがとうございます!
すごく複雑なことかと思っていたのですが、こんなに短いコードで解決したのですね…
勉強不足でスミマセン。本当に助かりました。