SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Fernando_P en Viernes 4 de Junio de 2004, 19:09

Título: Recordcount En -1
Publicado por: Fernando_P en Viernes 4 de Junio de 2004, 19:09
Hola,
utilizando recordset, necesito despues de abrirlo con una coinsulta SQL determinada en él, obtener la cantidad de registros que posee el recordset, al hacerlo obtengo -1.

Código: Text
  1. Private Sub Form_Load()
  2. 'establece la conexión con la BD para llenar el combo box
  3. Dim rsEstaciones As New ADODB.Recordset
  4. Dim strconex As String
  5. 'crea la conexión con la BD
  6. conex.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
  7.    "C:\Interfaz\BD\biobio.mdb" ' <- Cambie esta ruta.
  8. 'crea la instuccion SQLpara consulta a BD
  9. strconex = "select estacion.nombre from estacion"
  10. 'Abre la conexión.
  11. conex.Open
  12. rsEstaciones.Open strconex, conex, adOpenDynamic, adLockOptimistic, adCmdText
  13. Debug.Print rsEstaciones.RecordCount
  14. Do While Not rsEstaciones.EOF
  15.       
  16.    List1.AddItem rsEstaciones!nombre
  17.    rsEstaciones.MoveNext
  18.  
  19. Loop
  20. rsEstaciones.Close
  21. 'conex.Close
  22. End sub
  23.  
  24.  

MSDN me dice que aparece cuando el objecto ADO no puede determinar el nro de registros.

¿Por que pasa esto?, ¿que hay de malo con la consulta o al abrir el recordset?
¿Como se soluciona este problema?

Desde ya gracias.
SAludos

Fernando.
Título: Re: Recordcount En -1
Publicado por: Brroz en Sábado 5 de Junio de 2004, 08:51
Hola Fernando.

Prueba a usar un cursor 'del lado del cliente'
Código: Text
  1.  
  2. conex.CursorLocation = adUseClient
  3.  
  4.  
antes de abrir la conexión.

Aún así, esto también depende del proveedor OleDb que utilices: no todos soportan la función RecordCount. Para este caso, siempre podrías crear una función que obtuviese la cuenta de registros previamente. Sencillamente ejecuta la misma sentencia SQL sustituyendo la SELECT por un SELECT COUNT(*): El primer campo del primer y único registro devuelto indicará el número de registros.

Suerte.
Título: Re: Recordcount En -1
Publicado por: ROBER.29 en Lunes 7 de Junio de 2004, 09:26
Hola,

La propiedad RecordCount sólo funciona dependiendo del modo de apertura. Cuando abras el recordset hazlo de la siguiente forma:

Código: Text
  1.  
  2. rsEstaciones.Open strconex, conex, 3, 1
  3.  
  4.  

Espero que te sirva de ayuda.

Un saludo.