プロが教える店舗&オフィスのセキュリティ対策術

Access2016/windows10を使用しております。
テーブル(Tbl_data_Report)をレコードソースとした帳票型の検索フォームがあります。
検索フォームのフォームヘッダーにはいくつかのテキストボックスとコンボボックスを配置し
そこに入力したキーワードでフィルターをかけ、データ抽出を行っています。
この抽出は下記コード(btn_絞込_Click)でできています。

更に、この検索フォームのフォームヘッダーにトグルボタン「Report_id」「訪問年」「所在国」を配置し、トグルボタンのON/OFFで上記で抽出したデータの並べ替え(昇順/降順)をしたいのですが、並べ替えを実施すると先の抽出が戻ってしまい、全データで並び変わってしまいます。
抽出をかけない状態では、並べ替えはできています。

抽出結果を維持したまま、並べ替えをする方法をご教示願います。
なお、あくまでも抽出結果を見てから並べ替えをしたいので、抽出時に並べ替えるのはなしとしてください。

’***複数条件での抽出/絞り込***
Private Sub btn_絞込_Click()
Dim dbsMy As DAO.Database
Dim rsMy As DAO.Recordset
Dim strFilter As String

Set dbsMy = CurrentDb
Set rsMy = dbsMy.OpenRecordset("Tbl_Data_Report", dbOpenDynaset)

strFilter = "Report_id >= 1"

If Not IsNull(Me.Cbo_訪問年) Then
strFilter = "Visit_Year ='" & Me.Cbo_訪問年 & "'"
End If

If Not IsNull(Me.Cbo_所在国) Then
strFilter = strFilter & " AND Customer_Country Like '*" & Me.Cbo_所在国 & "*'"
End If

rsMy.Filter = strFilter
Set rsMy = rsMy.OpenRecordset
Set Me.Recordset = rsMy
Me.Requery

Set rsMy = Nothing
Set dbsMy = Nothing
End Sub

’***トグルボタンによる並べ替え***
Private Sub btn_Report_id_Click()
If Me.btn_Report_id.Value = True Then
Me.OrderBy = "Report_id desc"
Else
Me.OrderBy = "report_id asc"
End If
Me.OrderByOn = True
End Sub

A 回答 (1件)

トグルイベントの時にフィルタプロパティがどうなってるか検証してみて。


フィルタがクリアされてるなら、フィルタを何処かに退避させて、トグルのたびに再セットするとか。
それが無理なら、SQLを都度書き換えて対応するしかない。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!