Microsoft Access 掲示板

フォームの並べ替えをレポートに反映させたい

6 コメント
views
6 フォロー

いつも大変お世話になり助かってます。
今回はフォームの並べ替えをレポートに反映させたいのです。
フォームのレポート開くコマンドボタンには現在下記コードを記述してます。
” DoCmd.OpenReport rptName, acViewPreview, WhereCondition:=Me.Filter, OpenArgs:=stArgs ”
これにフォームの並べ替えした状態をレポートに反映させるには、どう追記したらいいでしょうか?

beginner
作成: 2025/02/20 (木) 10:52:02
通報 ...
1

現状、フォームの並べ替えはどのようにしていますか。

OrderByプロパティを利用しているのなら、それをOpenArgs引数でレポートに渡してレポート側でOrderByプロパティに設定すればいいでしょう。ただ、現状のコードをみるとOpenArgs引数はすでに利用しているようなので工夫が必要です。

レコードソースのクエリで並べ替えをしているなら、その並べ替えの設定をレポートのレコードソースにも反映させることになります。

どちらにしても、現状、フォームの並べ替えをどのようにしているかの詳細な情報が必要です。

2
beginner 2025/02/20 (木) 11:58:42 61dd6@f300d

hatenaさん ありがとうございます。
フォームのオプションボタンopg2を下記でしてます
Select Case opg2 '並び替え設定
        Case 1
          Me.OrderBy = "[ふりがな] ASC"
        Case 2
          Me.OrderBy = "[顧客合計] ASC"
        Case 3
          Me.OrderBy = "[顧客合計] DESC"
    End Select

    Me.OrderByOn = True

レポートのレコードソースはフォームと同じクロス集計クエリを使ってます。

3

フォームのレポート開くコマンドボタンの全コードを提示してください。
stArgsをどのように設定しているか知りたいので。

4
beginner 2025/02/20 (木) 13:56:20 61dd6@f300d

hatenaさん コードは下記です
” Dim rptName As String, opg1 As Integer, opg2 As Integer
    Dim txKubun As String, txSort As String, stArgs As String

    rptName = "R年度別売上集計_Cross_顧客と営業担当別"
    opg1 = Me.[opg_kubun].Value
    opg2 = Me.[opg_Sort].Value

    Select Case opg1 '担当区分
        Case 1
          txKubun = "社内営業担当:設定なし"
        Case 2
          txKubun = "社内営業担当:A"
        Case 3
          txKubun = "社内営業担当:B"
    End Select

    Select Case opg2 '並べ替え設定
        Case 1
          txSort = "※顧客社名で並べ替え"
        Case 2
          txSort = "●顧客合計金額を昇順で設定"
        Case 3
          txSort = "■顧客合計金額を降順で設定"
    End Select

    'レポートに渡すOpenArgsを組立
    stArgs = txKubun & "," & txSort

    MsgBox stArgs

    DoCmd.OpenReport rptName, acViewPreview, WhereCondition:=Me.Filter, OpenArgs:=stArgs
    DoCmd.Maximize  ”

  OpenArgsはレポートFormat時イベントに下記でしてます(念の為にレポートの非表示テキストボックス[tx_Args]のコントロールに設定してます)
   ” 'フォームからのOpenArgs[tx_Args]を分割して代入
       Dim v As Variant
       v = Split(Nz(Me.[tx_Args]), ",")
       Me.tx_kubun = v(0)
       Me.tx_sort = v(1)  ”

5

コードはマークダウンのコードブロックにいれると読みやすくなります。
使い方は書きをご参照ください。

Microsoft Access 掲示板 の使い方 Microsoft Access 掲示板 - zawazawa


    Select Case opg2 '並べ替え設定
        Case 1
          txSort = "※顧客社名で並べ替え"
        Case 2
          txSort = "●顧客合計金額を昇順で設定"
        Case 3
          txSort = "■顧客合計金額を降順で設定"
    End Select

上記のように並べ替え設定がOpenArgs引数に格納されているのでそれを利用するのが簡単ですね。


と思ったのですが、よく考えたらレポートを開くときフォームは開いたままだと思いますので、フォームのOrderByを参照してレポートのOrderByに代入すればいいですね。

レポートの開くときイベントに下記のコードでどうでしょう。

    Me.OrderBy = Forms!フォーム名.OrderBy
6
beginner 2025/02/20 (木) 16:48:08 61dd6@f300d

hatenaさん ありがとうございます。
それですんなり解決しました。確かにフォームからしか開かないレポートですので、シンプルにこうすればいいですね。
*掲示板の使い方はすみませんでした。説明をよく見ておきます。
今回も大変お世話になりました。