前回の続き 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