Microsoft Access 掲示板

DoCmd.OpenForm レコードソース外のクエリによる抽出条件について / 1

10 コメント
views
4 フォロー
1

クエリB は担当毎の集計、
欲しいのは、担当+区分毎の特定の区分の集計、
まったく別の出力なので一つのクエリで実現は不可能です。

クエリC・・・[担当、区分(グループ化)]、[金額(合計)]

というクエリを作成しておいて、フォームA を開く時に、レコードソースを書き換えるようにすればいいでしょう。

Docmd.OpenForm "フォームA", , , "抽出条件式", , , "クエリC"

というように OpemArgs引数(第7引数)にクエリ名を設定しておいて、
フォームAの開く時のイベントプロシージャに下記のように記述します。

Private Sub Form_Open(Cancel As Integer)
    If Me.OpenArgs <> "" Then
        Me.RecordSource = Me.OpenArgs
    End If
End Sub
通報 ...
  • 2
    mae 2019/04/22 (月) 16:23:19 修正 13630@32811 >> 1

    ご回答ありがとうございます。
    クエリC・・・[担当(グループ化)]、[区分(グループ化)]、[金額(合計)] ということでいいんですよね??
    例えば抽出条件式に

    Docmd.OpenForm "フォームA", , , "[クエリC]![区分]=[Forms]![フォームB]![区分]", , , "クエリC"
    

    と記述しても開く時にパラメータの入力を求められてしまいます。"抽出条件式"にはフォームAに関係しているフィールドしか記述できませんか?
    区分の抽出をしたい場合はクエリCの抽出条件に書き込むしかないのでしょうか?

    3
    hatena 2019/04/22 (月) 19:14:32 修正 >> 2

    前回の回答を下記に修正します。

    まず、フォームのデザインビューで「レコードソース」プロパティをは空白にしておいてください。
    開く時のイベントプロシージャは下記にしてください。

    Private Sub Form_Open(Cancel As Integer)
        Me.RecordSource = Me.OpenArgs
    End Sub
    

    フォームを開く時は、OpenArgs には、テーブル名かクエリ名を設定しておいてください。