Microsoft Access 掲示板

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

6 コメント
views
6 フォロー
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