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


    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)