以下のコードを使用して、テーブルからデータを取得しています。その後、結果のデータをグリッドにバインドしています。問題は速度にあります。このクエリの実行には約 2 ~ 3 分かかりますが、バックエンドからは 30 ~ 40 秒かかります。
-----------現在のコード ------------------
rs.ActiveConnection = con //con is connection
con.Errors.Clear
rs.CursorLocation = adUseServer
rs.CursorType = adOpenDynamic
rs.LockType = adLockOptimistic
rs.StayInSync = True
On Error Resume Next
rs.Open strCmd //strCmd is query
------- クライアントを使用して試した代替ソリューション ---------------
rs.ActiveConnection = con //con is connection
con.Errors.Clear
rs.CursorLocation = adUseClient
rs.CursorType = adOpenKeyset
rs.LockType = adLockBatchOptimistic
rs.StayInSync = True
On Error Resume Next
rs.Open strCmd //strCmd is query
/// 結果 : 同じ速度
--------レコード セットを開くのではなく実行を使用する代替ソリューション ---------------
com.ActiveConnection = con //con is connection
com.CommandType = adCmdText
com.CommandTimeout = 500
com.CommandText = strCmd //strCmd is query
con.Errors.Clear
On Error Resume Next
Set rs= com.Execute()
//結果:速度は速いですが、グリッドの値を更新しようとすると、以下のエラーが表示されます:
「実行時エラー '3251': 現在のレコードセットは更新をサポートしていません。これは、プロバイダーまたは選択したロックの種類の制限である可能性があります。」