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
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)