• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ADOでSeekメッソッドが使えません。)

ADOでSeekメソッドが利用できません

このQ&Aのポイント
  • Access 2003 VBAでADOを使用してSQL Server 2008 R2 Expressのテーブルを参照していますが、Seekメソッドを利用することができません。
  • "現在のプロバイダーは Index 機能に必要なインターフェイスをサポートしていません"というエラーが発生しています。
  • 詳細な原因は分かりませんが、SQL Serverの初心者ですので、解決方法を教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • nora1962
  • ベストアンサー率60% (431/717)
回答No.2

> DAO感覚でIndexしてseekすれば高速検索が簡単にできると甘く考えておりました。 そう美味しい話はあまり、ありません。 DAO感覚でやろうするなら、一捻りしてパススルークエリとワークテーブルを使うやり方があります。 最初のクエリ発行の際にある程度の絞り込みが出来るのが前提ですが、ワークテーブル(INDEX作成済み)の全件削除、パススルーのSQL組み立てとこのパススルークエリのデータをワークテーブルに挿入するクエリの実行。 後は、非接続ですが、高速に扱えます。 更新の場合は、別途ADOでもいいので更新・削除・追加クエリを発行することになります。 ただし、非接続なので、他のユーザーが更新していないか、チェックして更新用のSQLを実行することになりますので、ADOのトランザクション機能を使うのがいいかもしれません。 欠点は最初のパススルークエリでのデータ件数が多いと、ネットワーク負荷・DISK負荷が高いのでレスポンスが悪いのと、ワークテーブルの全件削除と挿入を繰り返すのでローカルのACCESSのファイルが肥大化しやすいことです。

kazz-voice
質問者

お礼

詳細な回答、ありがとうございます。 ご説明を参考に、またストアドなどを勉強しながら作業を進めさせていただきます。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

SQLOLEDBで作成するRECORDSETがIndex、Seekに対応していないためだと思います。

kazz-voice
質問者

お礼

大震災で被災してしまい、遅れましたが回答ありがとうございます。 つい先ほど、電力復旧いたしました。 DAO感覚でIndexしてseekすれば高速検索が簡単にできると甘く考えておりました。 もう少し勉強します。 それにしても、findメソッドだと激しく遅いです。 万一、SQLOLEDB以外でIndex、Seekに対応するADOプロバイダーをご存知の方がいらっしゃったら教えていただけると助かります。

関連するQ&A