• Domingo 22 de Diciembre de 2024, 13:04

Autor Tema:  Cantidad De Registros En Una Consulta  (Leído 4632 veces)

solcito

  • Miembro MUY activo
  • ***
  • Mensajes: 143
    • Ver Perfil
Cantidad De Registros En Una Consulta
« en: Jueves 10 de Marzo de 2005, 22:43 »
0
Hola todos. Estoy haciendo una consulta a una base de datos, en mi programa necesito saber la cantidad de registros que me devuelve de esa consulta.

lo que hago es lo siguiente:

recordset.RecordCount

y me devuelve -1 !!

estoy segura que esa consulta devuelve algo porq me lo muestra en una grilla, lo que no me funciona es el recordConunt

Desde ya muchas Gracias!

Pd: es urgente  :angry:  esto me esta trabando todo  :(
Everything that has a beginning has an end.....

ArKaNtOs

  • Miembro de PLATA
  • *****
  • Mensajes: 1253
  • Nacionalidad: mx
    • Ver Perfil
Re: Cantidad De Registros En Una Consulta
« Respuesta #1 en: Viernes 11 de Marzo de 2005, 14:49 »
0
porque no te mueves al ultimo registro y de ahi tomas el recordcount, eso hago yo y me funciona a la perfeccion ;)  :kicking:

solcito

  • Miembro MUY activo
  • ***
  • Mensajes: 143
    • Ver Perfil
Re: Cantidad De Registros En Una Consulta
« Respuesta #2 en: Viernes 11 de Marzo de 2005, 19:22 »
0
No se porq no me funciona!!  :(  probé con el de ir hasta el ùltimo registro y tampoco, cuando hago

recordset.MoveLast   me devuelve el siguiente error:

"No se puede reiniciar la posicion del conjunto de filas"

No se porq es esto y necesito solucionarlo urgente, si alguien tiene idea o ya le pasó alguna vez.....

Saludos
Everything that has a beginning has an end.....

ebolo

  • Miembro MUY activo
  • ***
  • Mensajes: 188
    • Ver Perfil
Re: Cantidad De Registros En Una Consulta
« Respuesta #3 en: Viernes 11 de Marzo de 2005, 19:52 »
0
Hola solcito, has comprobado que la consulta realmente te da algún registro?. Supongo que sí. Si no lo has hecho compruébalo.
Yo lo que hago es poner la consulta SQL en una variable(xej.: cons) y luego la meto en el clipboard:
   Clipboard.Clear
   Clipboard.SetText cons
Luego abro la bd con el access, creo una consulta sin nada y pego en la vista SQL el contenido de la Clipboard mediante Ctrl+V.
Y veo que ocurre.
Es que ese error creo recordar me salió una vez y era por que no la consulta no daba ningún registro.

Saluods y suerte.

solcito

  • Miembro MUY activo
  • ***
  • Mensajes: 143
    • Ver Perfil
Re: Cantidad De Registros En Una Consulta
« Respuesta #4 en: Viernes 11 de Marzo de 2005, 20:29 »
0
Prbar que la consulta me trajera algo, es lo primero que hice, y si me trae algo, el problema está en como yo hago la consulta:

Código: Text
  1.  
  2.  
  3. Public Function BuscarCredObs(ByVal credencial As String) As ADODB.Recordset
  4. Dim cm As ADODB.Command
  5.  
  6. On Error GoTo ErrorBuscarCredObs
  7.  
  8. Set BuscarCredObs = New ADODB.Recordset
  9. Set cm = New ADODB.Command
  10.  
  11. With BuscarCredObs
  12.     .CursorType = adOpenStatic
  13.     .CursorLocation = adUseClient
  14.     .LockType = adLockOptimistic
  15. End With
  16.  
  17. With cm
  18.     .ActiveConnection = CadenaConecc
  19.     .CommandType = adCmdStoredProc
  20.     .CommandText = "SH_BuscarCredObs_sel"
  21.     .Parameters.Append .CreateParameter("@Credencial", adChar, adParamInput, 8, Mid(Trim(credencial), 1, 8))
  22.     .Parameters.Append .CreateParameter("@Fecha", adDate, adParamInput, 8, Date)
  23.     .Parameters.Append .CreateParameter("@registros", adInteger, adParamOutput, , lngRegistros)
  24.     Set BuscarCredObs = .Execute
  25. End With
  26.  
  27.  
  28. ErrorBuscarCredObs:
  29. ....
  30. ....
  31.  
  32. End Function
  33.  
  34.  

La hago de esta manera para poder hacerlo en un procedimiento almacenado.

Haciendolo de esta manera:

Código: Text
  1.  
  2.  
  3. Public Function BuscarCredObs(ByVal credencial As String) As ADODB.Recordset
  4.  
  5. On Error GoTo ErrorBuscarCredObs
  6.  
  7. Set BuscarCredObs = New ADODB.Recordset
  8.  
  9. With BuscarCredObs
  10.     .ActiveConnection = CadenaConecc
  11.     .CursorType = adOpenStatic
  12.     .CursorLocation = adUseClient
  13.     .LockType = adLockOptimistic
  14.     .Source = "<consulta>"
  15.     .Open
  16. End With
  17.  
  18. ErrorBuscarCredObs:
  19. ..
  20. ...
  21. End Function
  22.  
  23.  

si funciona, pero me parece mas prolijo y eficiente tener la consulta en un procedimiento, pero no funka :(, no se porq ??
Everything that has a beginning has an end.....

Brroz

  • Miembro de PLATA
  • *****
  • Mensajes: 1058
    • Ver Perfil
Re: Cantidad De Registros En Una Consulta
« Respuesta #5 en: Sábado 12 de Marzo de 2005, 08:05 »
0
Hola solcito.

Citar
CursorLocation = adUseClient

Tener el cursor sql 'del lado del cliente' es lo que hace funcionar la prodiedad recordcount (Esto teniendo en cuenta que hay proveedores de datos que no soportan esta propiedad).

Si usas una llamada a un procedimiento almacenado mediante el método execute del recordset, mucho me temo que no te va funcionar la propiedad recordcount... pero siempre hay solución: usa una sentencia SQL del tipo "SELECT COUNT(*) FROM Tabla" para obtener la cuenta de registros de tu selección.

Chao.