![]() |
Recordcount no me cuenta bien
Hola!
Tengo una aplicación con Firefox 2.0 y acceso al mismo mediante dbExpress. El caso es que al arrancar (en el FormCreate) relleno un DBGrid con los datos de un IBQuery y justo tras el open() del query en un TLabel muestro el número de registro del DBGrid mediante la propiedad RecordCount del query y si hay registros me muestra un 1 haya los registros que haya. Más adelante si cambio el query y hago lo mismo ya me funciona y me muestra el valor correcto. ¿A qué se puede deber? Gracias |
Cita:
Prueba a lanzar una consulta con COUNT. Posiblemente al abrir no se esté trayendo todos los datos y por eso no devuelve bien el Count. Además hacerlo con SQL+COUNT es más eficiente que usar RecordCount. |
Cita:
|
Cita:
sólo refleja el valor correcto si llegas hasta el final del conjunto de datos. Prueba a hacer un DataSet.Last antes de mostrar el valor de recordcount en el label. Aunque la sugerencia de Neftalí es mucho mas eficiente. |
Cita:
En Bases de datos tipo Paradox y similares, funciona bien sin necesidad del Last. |
La verdad tengo entendido q solo falla con las conexiones ADO pero por un principio logico que la conexion no trae todos los registros solo hasta qe lso necesite
|
Con FireBird e IBX me fallaba, y no se por qué, pero como dice defcon1_es, poniendo DataSet.Last funciona, aunque quizás sea mejor lo que te indica Neftali.
|
Cita:
Con una simple consulta SQL del tipo COUNT será más eficiente:
|
Gracias por las respuestas. En efecto haciendo Last antes del Recordcount ya me cuenta bien los registros, la pega es que en el DBGrid se me selecciona el último registro lo que no es demasiado lógico. Asi que me quedo con el "select count" que si además es más eficiente mejor que mejor :)
Gracias a todos. PD: Se me fue la pinza con lo del Firefox, es lo que pasa cuando no has dormido una mierda :P |
La diferencia entre el select count y el last es que el primero te lo devuelve el servidor, al contrario del last que obligas a l cliente a tener todos los registros para contarlos
|
Cita:
:D Saludos |
| La franja horaria es GMT +2. Ahora son las 21:50:05. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi