A return value of -1 often means the cursor does not support the requested operation. Use the RecordSet.Supports method to find out if a particular recordset will support the function you are requesting. Oh and by the way, just because you open a recordset as a particular type, ADO can switch it down to another type with no warning... a type that may not support the operation you are looking for! Thanks MiscroSoft. Lost a few hairs on that one.
Even if a particular recordset type supports an operation, the OLEDB Provider or ODBC driver must also support that operation. Good luck finding out what operations are supported by which interface. trial and error.