使いやすいように設計された Microsoft リレーショナル データベース管理システムのファミリ。
実行:
- フォームにフィルタを適用する。
- 抽出されたレコードの中で特定の記載(ID番号や属性など)があるものを検索する。
- 見つからない時は特定のアクションをする(今回は最後のレコードへ移動)
上記3つのアクションをVBAで実行しようとしています。
・・・
しかしこれだとテーブル全体のレコードを検索してしまうのか、「フィルタで抽出されないレコード」がヒットしてもNoMatchプロパティがFalse(検索成功)になってしまいます。
当方でのサンプルでは問題なく NoMatch で判定できました。
検証用コード
Me.Filter = "分類=1"
Me.FilterOn = True
With Me.Recordset
.FindFirst "顧客コード=30"
If .NoMatch Then
MsgBox "該当レコードはありません。"
.MoveLast
End If
End With
顧客コードは主キーで、顧客コード30のレコードは分類1ではありません。
上記を実行すると、「該当レコードはありません。」とメッセージが出た後、最終レコードへ移動します。
分割フォームのコマンドボタンに割り当てて実行しました。
また、データシードビューで、フォームのダブルクリックに割り当てて実行しました。
どうしてもうまくいかない場合は、実際のコードをここに貼り付けてください。