CursorLocation CursorType

前回の続き vbaからsqlserverへ
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
 cn.ConnectionString = “SQLserver接続文字列”
 cn.open
Set rs = New ADODB.Recordset
 rs.CursorLocation = adUseClient ’前回はcnにしたけど今回はrs

rs.open “select・・・・”,cn,adopendynamic,adlockoptmistic
debug.print rs.recordcount
debug.print rs.cursortype

で返らないと思ったrecordcountがちゃんと返るのですが
rs.cursortypeを見るとどうもadopendynamicになってない

でこういうサイト見つけました
http://d.hatena.ne.jp/replication/20090312/1236866953
マイクロソフトのヘルプはリンク切れ

カーソル位置でカーソルタイプが決まる?のようです
adopendynamic adopenforwardonly がサーバサイド
adopenstatic adopenkeyset がクライアントサイド

adUseClientを明示したらadopenstaticが決定するのかな?

では今までほとんど明示していないのでデフォルトのサーバーサイドカーソルでadopenkeysetも矛盾あり?実はdynamicになっていた?
MysqlとSQLserverでも挙動に違いがありそうです。

カーソル位置とカーソルタイプとロックタイプは齟齬がないように組み合わせないと意図したようになってない可能性ありですか

難しいですrecordset

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です