VBA

ACCESS VBA でレポートの並べ替え

投稿日:

はじめに

ACCESSでレポートを出力する際に並べ替えを行う場合、VBAを利用すると簡単に行う事ができます。

動的に設定できるため同じレポートをいくつも作らなくて良いのでとても便利なのですが、先日少しハマりましたのでメモ。

 

まずVBAでレポートを出力する記述

レポート出力フォームのボタンをクリックしたときのイベントプロシージャ

Private Sub レポート出力_Click()
    Dim stDocName As String
    Dim strWhere As String
    Dim strSortKey As String

    strDocName = "出力レポート"
    strWhere = "入社年 = #2019/04/01#"

    Select Case cboSortKey.Value
        Case "フリガナ"
            strSortKey = "フリガナ"
        Case "社員番号"
            strSortKey = "社員番号"
        Case "生年月日"
            strSortKey = "生年月日"
        Case Else
            strSortKey = "フリガナ"
    End Select

    DoCmd.OpenReport stDocName, acPreview, , strWhere, , strSortKey
    DoCmd.Maximize
End Sub

strDocName : レポート名
strWhere  : フィルター(絞り込みの条件)
strSortKey  : 並べ替えキー

DoCmd.OpenReport でレポートを開くときに並べ替えキーをパラメータとして渡します。

 

レポートを開くときのイベントプロシージャ

Private Sub Report_Open(Cancel As Integer)
    If Len(Me.OpenArgs) > 0 Then
        'レポートの並び順を設定
        Me.OrderBy = Me.OpenArgs
        'レポートの並べ替えを実行
        Me.OrderByOn = True
    End If
End Sub

DoCmd.OpenReport でレポートを開くときに渡されたパラメータは、Me.OpenArgsで受け取れます。

 

 

ハマった事象と解決法

レポートを開くとき OrderBy に並べ替えキーを設定することで並び変わるはずなのですが、何故かソートされません。

以前はソートされていたと思うのですが、先日確認したら動かない事に気がつきました。

原因が何なのかいろいろ確認してみたら、レポートのデザイン時に設定できる「並べ替え/グループ化の設定」が原因でした。

※レポートのデザイン時に右クリックすると表示されます。

 

ここで設定されている並べ替えを解除したら並べ替えが上手く機能するようになりました。

どうやらレポートデザインの並べ替え設定が優先されるようです。

 

※ACCESS2010、2013、2016で確認しました。

 

スポンサードリンク

スポンサードリンク

-VBA
-,

Copyright© あきらちんの技術メモ , 2024 All Rights Reserved Powered by STINGER.