recordset.recordcount が-1を返した

VBAからMySQLのバックエンドDBへ

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = “MySQL接続文字列”

rs.open “select 略”,cn,adopenkeyset,adlockoptimistic
debug.print rs.recordcount
以下略
が-1になってびっくり

いろいろ調べて
cn.CursorLocation = adUseClient
cn.ConnectionString = “MySQL接続文字列”
でちゃんとcountしてくれました。

ではSQLserverではと
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.ConnectionString = “SQLserver接続文字列”

rs.open “select 略”,cn,adopenkeyset,adlockoptimistic
debug.print rs.recordcount
以下略
はちゃんとcountします。CursorLocationは

書かなくても
cn.CursorLocation = adUseClient と書いても
cn.CursorLocation = adUseServer と書いても同じ

でした。

うーん