Microsoft Access 掲示板

サブフォームの中が一致したフォームを開く

8 コメント
views
4 フォロー

現在のフォームからボタンを押すと、現在のフォームの「種類ID」が含まれるサブフォーム「サブ種類フォーム」が含まれる主フォーム「物件フォーム」を開きたいです。

以下式ですが…間違っていますよね。正しい式を教えていただけませんでしょうか。

DoCmd.OpenForm "F物件", acNormal, "", " Forms![F_物件]![F_サブ種類]!Form![種類ID]=[Forms]![F_現在のフォーム]![txt種類ID]", , acDialog

ニンジャ
作成: 2020/10/02 (金) 15:58:58
最終更新: 2020/10/02 (金) 16:16:27
通報 ...
1
hatena 2020/10/02 (金) 16:50:28 修正

下記の記事が参考になると思います。

サブフォームのフィールドを対象にメインフォームにフィルタをかける - hatena chips

上記はメインフォームのFilterに抽出条件を設定していますが、今回はOpenFormメソッドの第4引数に抽出条件を設定すればいいだけです。

上記を読んでも、どうしたらいいか分からない場合は、
メインフォームのレコードソースのテーブル名(orクエリ名)と、それの主キーと主なフィールド名、
サブフォームのレコードソースのテーブル名(prクエリ名)と、それの主キーと主なフィールド名、
また、サブフォームコントロールのリンク親フィールド、リンク子フィールドの設定を教えてください。

2
ニンジャ 2020/10/03 (土) 13:01:32 f1ed8@83c58 >> 1

ありがとうございます!やってみてうまくいかなかったらまた質問させていただきます。
ところで、こういったことをきちんと理解するにはSQLの勉強をすべきなのでしょうか…

3

Accessではたいていのことはクエリのデザインビューでできますが、サブクエリとかユニオンクエリなどを使えるようになるにはSQLの理解は必要ですね。

4
ニンジャ 2020/10/09 (金) 13:11:03 0029a@1c915

少し前の質問になりますが、うまくいかないため改めて質問です。

5
ニンジャ 2020/10/09 (金) 13:26:16 0029a@1c915 >> 4

すみません、間違って投稿してしまいました…
下記のコードを作りましたがうまく作動しません。

Private Sub btn物件_Click()
    If Not IsNull([txt物件ID]) Then
    DoCmd.OpenForm "F_物件管理", acNormal, "", "物件管理ID In (SELECT 物件管理ID FROM Q_サブ物件 WHERE 区分NO = " & Me.txt区分NO & ")", , acDialog
    Else
    DoCmd.OpenForm "F_物件管理", acNormal, , , acFormAdd
    End If

メインフォームのレコードソースのテーブル名(orクエリ名)Q_物件管理
それの主キーと主なフィールド名、 物件管理ID(主キー)、オーナー情報など
サブフォームのレコードソースのテーブル名(prクエリ名) Q_サブ物件
それの主キーと主なフィールド名 物件ID(主キー)、区分NO、住所など
また、サブフォームコントロールのリンク親フィールド、リンク子フィールドの設定 物件管理ID
区分NO(短いテキスト)で検索したい。

何が間違っているのか、教えていただけると助かります。

6
ニンジャ 2020/10/09 (金) 13:28:49 0029a@1c915 >> 5

ちなみに「btn物件」を配置しているフォームは、また全然別のフォームです。

7
hiroton 2020/10/09 (金) 13:49:18 414c4@f966d

とりあえず

区分NO(短いテキスト)で検索したい。

ならSQLでも文字列が指定されている必要があります

区分NO = " & Me.txt区分NO & ")"

区分NO = '" & Me.txt区分NO & "')"

8
ニンジャ 2020/10/09 (金) 14:01:47 0029a@1c915

やはりそこでしたか…助かりました。ありがとうございました。