いつも大変お世話になり助かってます。
今回はフォームの並べ替えをレポートに反映させたいのです。
フォームのレポート開くコマンドボタンには現在下記コードを記述してます。
” DoCmd.OpenReport rptName, acViewPreview, WhereCondition:=Me.Filter, OpenArgs:=stArgs ”
これにフォームの並べ替えした状態をレポートに反映させるには、どう追記したらいいでしょうか?
通報 ...
現状、フォームの並べ替えはどのようにしていますか。
OrderByプロパティを利用しているのなら、それをOpenArgs引数でレポートに渡してレポート側でOrderByプロパティに設定すればいいでしょう。ただ、現状のコードをみるとOpenArgs引数はすでに利用しているようなので工夫が必要です。
レコードソースのクエリで並べ替えをしているなら、その並べ替えの設定をレポートのレコードソースにも反映させることになります。
どちらにしても、現状、フォームの並べ替えをどのようにしているかの詳細な情報が必要です。
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
レポートのレコードソースはフォームと同じクロス集計クエリを使ってます。
フォームのレポート開くコマンドボタンの全コードを提示してください。
stArgsをどのように設定しているか知りたいので。
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) ”
コードはマークダウンのコードブロックにいれると読みやすくなります。
使い方は書きをご参照ください。
Microsoft Access 掲示板 の使い方 Microsoft Access 掲示板 - zawazawa
上記のように並べ替え設定がOpenArgs引数に格納されているのでそれを利用するのが簡単ですね。
と思ったのですが、よく考えたらレポートを開くときフォームは開いたままだと思いますので、フォームのOrderByを参照してレポートのOrderByに代入すればいいですね。
レポートの開くときイベントに下記のコードでどうでしょう。
hatenaさん ありがとうございます。
それですんなり解決しました。確かにフォームからしか開かないレポートですので、シンプルにこうすればいいですね。
*掲示板の使い方はすみませんでした。説明をよく見ておきます。
今回も大変お世話になりました。