Hola!
Los parámetros para el método Open de un Recordset ADO son, por orden:
- Origen del recordset
- Conexión en la que se basa
- Tipo de cursor
- Tipo de bloqueo
El tipo de cursor puede ser adOpenDynamic, adOpenForwardOnly, adOpenKeyset o adOpenStatic... adOptimisticdbOpen no es un tipo de cursor, me temo que el error está ahí.