ID非公開さん
2022/1/13 22:30
3回答
ACCESSのSeekについて。 NETで検索したのですが、なかなか情報を見つけれなかったので、質問します。 Dim dbs As Database
ACCESSのSeekについて。 NETで検索したのですが、なかなか情報を見つけれなかったので、質問します。 Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("MT_申込", dbOpenTable) rst.Index = "PrimaryKey" rst.Seek "=", Me![顧客ID検索] If rst.NotMatch Then Seekをクエリで実行することは、可能でしょうか? Dim dbs As Database Dim rst As Recordset Set dbs = CurrentDb Set rst = dbs.OpenRecordset("Q_申込", dbOpenTable) rst.Index = "PrimaryKey" rst.Seek "=", Me![顧客ID検索] If rst.NotMatch Then それとも、クエリなら、FindFirstを利用しなければならないのでしょうか? 出来れば、Seekで実行したいと思っています。 くだらない質問ですが、回答いただければ幸いです。 何卒宜しくお願い致します。
Microsoft Access | Visual Basic・65閲覧
ベストアンサー
DAOのSeekメソッドはレコードセットの Type が dbOpenTable でしか適用されません。 Type は OpenRecordset の第2パラメータのことです。 そして、dbOpenTable は基本的にAccessの「ローカルのテーブル」にしか指定できません。 クエリのオープンは dbOpenDynaset が規定で、無理やり dbOpenTable を指定するとエラーになります。 よってクエリではSeekは利用できません。 Seekの検索速度は速いとのことですが使える場面が限定されてしまいます。 逆にクエリなんですからFindFirstなんか使わないでオープン時にSQLで言うWHERE句で絞ってしまえばいいのです。
Seekメソッドに関する思い出 (教訓?) Accessを使って初期のころ、テスト環境をローカルテーブルで作成してSeekで検索する仕組みをVBAで組み上げてから、本稼働としてリンクテーブルに変更したらズッコケた記憶がよみがえります。 ・・・Seekにはイイ思い出がありません。
質問者からのお礼コメント
回答ありがとうございました。 WHERE句でやってみます。
お礼日時:1/14 11:47