Mit "set rsSql = " wird ein neues Recordset erstellt (nämlich vom Command) und das vorherige verworfen !

Mit der Execute-Methode können im 3. Parameter entsprechende Optionen angegeben werden:
Set rsSql = cmSql.Execute(,,adOpenKeyset)

Microsoft hat absichtlich die Methoden so getrennt, dass man das nützlichste heraussuchen kann.
Im Recordset.Open() kann ja auch ein Command-Objekt angegeben werden. Dies eignet sich nur nicht für Command's mit Parametern "select ... where key=?".

Schau in der Hilfedatei zu ADO nach.