La instrucción EXECUTE del componente ADODB.Command. me regresa un conjunto de registros pero me cambia el tipo de cursor a adOpenForwardOnly al ejecuta la instrucción SQL, cuando inicialmente lo había declarado dinámico........¿A que se debe esto y como lo corrigo.? Debe ser dinámico para que la propiedad RecordCount se llene con la cantidad de registros que regreso el stored procedure y no con -1. RESPONDE ENRIQUE MARTINEZ ========================= Si estas utilizando el método «Execute» del objeto «Command» para devolver una referencia a un objeto «Recordset», de nada sirve que con anterioridad establezcas la propiedad «CursorType» a «adOpenDynamic», porque al llamar al método «Execute» estás creando una NUEVA referencia del objeto «Recordset», por tanto, la propiedad «CursorType» tendrá su valor predeterminado: «adOpenForwardOnly». Prueba a usar cursores del lado cliente, mediante la utilización de la propiedad «CursorLocation» del objeto «Connection», de ésta forma, al abrir el «Recorset» la propiedad «CursorType» será «adOpenStatic» y podrás leer el número de registros devueltos: Dim cnn As New ADODB.Connection Dim cmd As ADODB.Command Dim rs As ADODB.Recordset ' Establezco la conexión With cnn ' Cursores del lado cliente .CursorLocation = adUseClient .ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\Bd1.mdb" .Open End With ' Crea un objeto Command. Set cmd = New ADODB.Command With cmd .ActiveConnection = cnn .CommandType = adCmdText .CommandText = "SELECT * FROM Socios" Set rs = .Execute() End With ' Número de registros MsgBox rs.RecordCount