Microsoft Access 掲示板

Recordsetcloneでフィルタとソートができない。

2 コメント
views
4 フォロー

よろしくお願いいたします。

サブフォームのRecordsetcloneで、フィルタとソートができません。
フォームの表示とは別に、裏でフィルタとソートをかけデータを参照したいと思っています。
コードはコマンドボタンクリック時に設定してあります。

    Dim rst As Recordset

    Dim sup As Long '仕入先ID
    Dim item As Long '業務用品ID
    Dim unit As Variant '単位
    Dim OdrNum As Long '発注ナンバー

    If MsgBox("一括注文書作成を実行しますか?", vbYesNo) = vbYes Then

        Set rst = Me.frm注文依頼発注用_一覧Sub.Form.RecordsetClone
        
        rst.Filter = "注文書作成チェック = True AND 発注ナンバー = NULL"
        rst.Sort = "仕入先ID ASC,業務用品ID ASC,単位_注文数"
        rst.MoveFirst
    
        Do Until rst.EOF
            
            If rst!仕入先ID <> sup Then

あん
作成: 2023/12/13 (水) 11:21:15
最終更新: 2023/12/13 (水) 11:22:20
通報 ...
1

DAOのRecordsetは、FilterプロパティやSortプロパティを設定したあと、再度開きなおさないと反映されません。
また、Nullは=演算子ではなくIs演算子で判定します。

        Set rst = Me.frm注文依頼発注用_一覧Sub.Form.RecordsetClone
        
        rst.Filter = "注文書作成チェック = True AND 発注ナンバー Is NULL"
        rst.Sort = "仕入先ID ASC,業務用品ID ASC,単位_注文数"
        Set rst = rst.OpenRecordset '←これが必要
        rst.MoveFirst
    
        Do Until rst.EOF


2
あん 2023/12/13 (水) 12:39:43 b41ab@2928c

hatena様

ご回答ありがとうございます。

ご指摘の通りやってみましたら、バッチリできました。

Set rst = rst.OpenRecordset で再設定しないといけない事を初めて知ったので勉強させてもらいました。
ありがとうございました!

助かりました。