• Domingo 22 de Diciembre de 2024, 13:26

Autor Tema:  Record Count  (Leído 2693 veces)

Manuel Castro Gómez

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Record Count
« en: Jueves 19 de Mayo de 2005, 20:33 »
0
Buenas a todos amigos de solo còdigo:
Estoy tratando de obtener la cantidad de registros de un recordset con:
RecordSet.Recordcount pero arroja -1 como valor. ¿A què se debe puesto que el recordset tiene registros?
Ademàs me muevo a travès del recordset con MoveNext y lo hace bièn.
¿Dònde puede estar el problema?
 Gràcias por cualquier ayuda.

eliza_marti

  • Miembro MUY activo
  • ***
  • Mensajes: 267
    • Ver Perfil
    • http://www.solocodigo.com
Re: Record Count
« Respuesta #1 en: Jueves 19 de Mayo de 2005, 23:06 »
0
Hola Manuel... :hola: .prueba ubicandote en el último registro y de ahí le mandas el Recordcount…. :)
Bye Suerte!..  :hola:  :comp:  :P
Conserva la Paz con tu Alma en la bulliciosa confusión de la vida, aún con toda su farsa, penalidades y sueños fallidos, el mundo es todavia Hermoso....

http]
programacion,c,c++,
C#,java,linux,videojuegos,
directX,.NET,allegro,asm,codigo
[

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Record Count
« Respuesta #2 en: Viernes 20 de Mayo de 2005, 00:43 »
0
Qué tal Manuel?

Que puedas usar la propiedad RecordCount de un Recordset depende del tipo de cursor que éste utilice. Si tu recordset utiliza un cursor dinámico lamentablemente no podrás hacer uso de ésta propiedad. No estoy muy seguro de cuales cursores admiten el uso del recordcount en ADO estoy seguro que lo admite los cursores de tipo Static y en DAO creo que los cursores de tipo SnapShot (o sea aquellos que no se actualizan dinámicamente).


DiabloRojo.

Manuel Castro Gómez

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Record Count
« Respuesta #3 en: Viernes 20 de Mayo de 2005, 15:55 »
0
Grácias por las respuestas, pero ya había probado ubicándome en el último registro con Recordser.MoveLast pero me dice un error algo así como que "PROPIEDAD NO ADMITE VUELTA HACIA ATRÁS.
Con relacion a los tipos de cursor que admiten la propiedad RecordCount no estoy muy claro ya que soy relativamente nuevo en el uso de este lenguaje. A continuación les escribo el código que estoy usando y así tal véz les sea más fácil ayudarme:

Dim Cnn As ADO.Connection, _
       Rst  As ADO.Recordset

Set Cnn = New ADODB.Connection
Set Rst = New ADODB.Recordset

Cnn.ConectionString = "Un arvhivo UDL"
Cnn.Open

Rst.Source = "NombreTabla"
Rst.ActiveConnection = Cnn
Rst.Open

If Not Rst.Eof Then
   .....
   ........
   ........
   DataGrid1.Rows = Rst.RecordCount
End If

De nuevo grácias por todo.

Widark

  • Miembro MUY activo
  • ***
  • Mensajes: 246
    • Ver Perfil
Re: Record Count
« Respuesta #4 en: Viernes 20 de Mayo de 2005, 19:03 »
0
Hola Manuel Castro Gómez!

Si el codigo que plasmaste aqui es un fiel copia del que usas, me parece que le hace falta asignarle el tipo de cursos a la coneccion. Yo no conecto un recordset de esa forma:

Código: Text
  1. Cnn.CursorLocation = adUseClient
  2. Cnn.ConectionString = "Un arvhivo UDL"
  3. Cnn.Open
  4. rsRecordset.Open "Sentencia",Cnn,adOpenStatic, adLockReadOnly
  5.  
  6.  

Espero sea lo que le falta, saludos.
[:], Yo si se lo que es trabajar duro, por que lo he visto.
http]
programacion,c,c++,
C#,java,linux,videojuegos,
directX,.NET,allegro,asm,codigo
NoSolocodigo --> Blog de Articulos

DiabloRojo

  • Miembro MUY activo
  • ***
  • Mensajes: 220
    • Ver Perfil
Re: Record Count
« Respuesta #5 en: Viernes 20 de Mayo de 2005, 20:34 »
0
Ok Manuel.
Estuve averiguando un poco. Los únicos cursores que admiten la propiedad RecordCount son los estáticos (adOpenStatic) y los de conjunto de claves (adOpenkeyset).

Citar
Rst.Source = "NombreTabla"
Rst.ActiveConnection = Cnn
Rst.Open

Cuando abres un recordset de esta forma el cursor predeterminado que usa ADO es de tipo solo hacia adelante (adOpenFowardOnly) lo que quiere decir que te puedes desplazar por el conjunto de resultados de tu consulta solo hacia adelante.

Usa la forma que te indica Widark para abrir el recordset:

Citar
Cnn.CursorLocation = adUseClient
Cnn.ConectionString = "Un arvhivo UDL"
Cnn.Open
rsRecordset.Open "Sentencia",Cnn,adOpenStatic, adLockReadOnly

y ya sabes puedes usar adOpenStatic o adOpenKeyset para indicar el tipo de cursor que deseas. La diferencia entre uno y otro es que con el primero no puedes ver los cambios que otro usuario haya hecho en la base de datos mientras que con el otro sí.

Suerte.


DiabloRojo.

Manuel Castro Gómez

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Record Count
« Respuesta #6 en: Viernes 20 de Mayo de 2005, 21:32 »
0
Muchas gracias amigo WIDARK y DIABLO ROJO por las sugerencias suministradas, las acabo de probar y me funcionan perfectamente.

                    Muchos saludos y seguimos hablando.