
Access 2003 VBA で、ADOを使用してSQL Server 2008 R2 Express のテーブルを参照しています。
Seekメソッドを使いたいのですが、Indexプロパティーを設定すると、
「現在のプロバイダーは Index 機能に必要なインターフェイスをサポートしてません。」
のエラーが発生してしまいます。
SQL Server は初心者です。よろしくお願いいたします。
-以下ソースプログラムです-
Dim con As New ADODB.Connection
Dim rst As New ADODB.Recordset
con.Open "Provider=SQLOLEDB;SERVER=xxxxx;DATABASE=xxxxxx;UID=sa;PWD=xxxxxx;" 'SQL-Serverへ接続
rst.Open "testdata", con, adOpenKeyset, adLockOptimistic, adCmdTableDirect
Debug.Print rst.Supports(adSeek), rst.Supports(adIndex)
’----結果、 false false
rst.Index = "index1"
' ---- 「現在のプロバイダーは Index 機能に必要なインターフェイスをサポートしてません。」のメッセージ
rst.Seek 0, adSeekAfter
No.2ベストアンサー
- 回答日時:
> DAO感覚でIndexしてseekすれば高速検索が簡単にできると甘く考えておりました。
そう美味しい話はあまり、ありません。
DAO感覚でやろうするなら、一捻りしてパススルークエリとワークテーブルを使うやり方があります。
最初のクエリ発行の際にある程度の絞り込みが出来るのが前提ですが、ワークテーブル(INDEX作成済み)の全件削除、パススルーのSQL組み立てとこのパススルークエリのデータをワークテーブルに挿入するクエリの実行。
後は、非接続ですが、高速に扱えます。
更新の場合は、別途ADOでもいいので更新・削除・追加クエリを発行することになります。
ただし、非接続なので、他のユーザーが更新していないか、チェックして更新用のSQLを実行することになりますので、ADOのトランザクション機能を使うのがいいかもしれません。
欠点は最初のパススルークエリでのデータ件数が多いと、ネットワーク負荷・DISK負荷が高いのでレスポンスが悪いのと、ワークテーブルの全件削除と挿入を繰り返すのでローカルのACCESSのファイルが肥大化しやすいことです。
No.1
- 回答日時:
SQLOLEDBで作成するRECORDSETがIndex、Seekに対応していないためだと思います。
大震災で被災してしまい、遅れましたが回答ありがとうございます。
つい先ほど、電力復旧いたしました。
DAO感覚でIndexしてseekすれば高速検索が簡単にできると甘く考えておりました。
もう少し勉強します。
それにしても、findメソッドだと激しく遅いです。
万一、SQLOLEDB以外でIndex、Seekに対応するADOプロバイダーをご存知の方がいらっしゃったら教えていただけると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- Access(アクセス) アクセス レポートを開いたときにパラメーターの自動入力がしたい 4 2022/11/30 11:21
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Visual Basic(VBA) エクセル VBA 条件付き書式 簡略化したい 2 2022/06/02 17:46
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Ruby パイソンエラーについて 1 2022/12/24 14:07
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SI Object Browserのテーブルス...
-
ユニオンクエリの結果をテーブ...
-
accessテーブル作成クエリを実...
-
クエリのキャンセルがいつにな...
-
あるテーブルのデータを追加、...
-
アクセスのテーブル作成クエリ...
-
ADOでSeekメッソッドが使えませ...
-
エクセルでテーブルの最終行が...
-
ExcelをVBAで読み込むと
-
コンボボックスで入力したもの...
-
ファイルメーカーのテーブルの...
-
UNIONなどで複数のテーブルから...
-
位置を指定してフィールドを追...
-
Accessでバージョン違いのファ...
-
「マスタ」と「テーブル」の違...
-
SQLServer Insertが遅い
-
ACCESSのSQLで、NULLかNULLでな...
-
Accessでクエリを完了できませ...
-
インデックスの再構築の意味っ...
-
オラクルではできるのにSQLSERV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SI Object Browserのテーブルス...
-
クエリのキャンセルがいつにな...
-
ユニオンクエリの結果をテーブ...
-
accessテーブル作成クエリを実...
-
AccessでOracleのテーブルをリ...
-
コンボボックスで入力したもの...
-
エクセルでテーブルの最終行が...
-
UNIONなどで複数のテーブルから...
-
あるテーブルのデータを追加、...
-
アクセスのテーブル作成クエリ...
-
VIEWしか読み取れないユーザの...
-
PL/SQLでFROM句に変数を使いたい
-
Access のリレーションシップで...
-
ADOでSeekメッソッドが使えませ...
-
ストアドをまたがるローカル一...
-
レプリケーションしているテー...
-
SQLサーバーのテーブルの値...
-
リンクサーバー接続先の参照エ...
-
ACCESS-リンクテーブルの設定で...
-
重複するレコードに対しフラグ...
おすすめ情報