• Sábado 27 de Abril de 2024, 00:01

Autor Tema:  Recordcount En -1  (Leído 1854 veces)

Fernando_P

  • Miembro activo
  • **
  • Mensajes: 88
    • Ver Perfil
Recordcount En -1
« en: Viernes 4 de Junio de 2004, 19:09 »
0
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.

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Recordcount En -1
« Respuesta #1 en: Sábado 5 de Junio de 2004, 08:51 »
0
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.

ROBER.29

  • Miembro MUY activo
  • ***
  • Mensajes: 421
    • Ver Perfil
    • http://www.contrapixel.com
Re: Recordcount En -1
« Respuesta #2 en: Lunes 7 de Junio de 2004, 09:26 »
0
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.
Roberto García
Moderador de Visual Basic.
Gerente
[contra]PixeL S.L.
Valladolid