![]() |
RecordCount en Interbase
Que tal amigos, tengo una duda:
Actualmente tengo un proyecto en delphi que utiliza un TIBQuery que accesa a una base de datos en interbase, sin embargo, al invocar la propiedad .RecordCount, siempre me devuelve 1 a pesar de que esté cargado con varios registros (con más de uno), a menos que haga un "last" antes de preguntar por el recordcount, sin embargo el hecer last alenta muchísimo el proceso, alguno de ustedes sabe porqué ocurre esto con el redordcount, hay manera de obtenerlo sin hacer un "last" previo? p/ej. close; sql.clear; sql.add('select * from tabla_1 '); open; last; //debo de hacerlo para que el recordcount me devuelva la cantidad //real, de registros, de lo contrario siempre devuelve 1 if (recordcount >0) then begin DlgMessage('el query está cargado con '+ IntToStr(recordcount)); de antemano, gracias |
Como puedes ver en la ayuda de Delphi, la propiedad RecordCount indica el número de registros que se han recogido del servidor y no el número total de registros. Conforme recorres el query, se recogen más registros y aumenta RecordCount de manera que sólo hasta que has recorrido todos (lo cuál logras con Last) obtienes el número total. Esto es así porque al hacer la consulta, el servidor, a diferencia de como sucede con bases de datos como paradox, no envía todos los registros a la vez sino conforme se van requiriendo.
Algo que podrías hacer es contar los registros antes de ejecutar la consulta con una sentencia: select count(*) from tabla_1 Si la consulta tiene condiciones agregas éstas a la sentencia anterior. // Saludos |
Ok Roman, me queda claro, gracias
|
La franja horaria es GMT +2. Ahora son las 17:54:05. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi