PDA

Ver la Versión Completa : RecordCount en query (Interbase)


Pedro-Juan
02-12-2006, 21:55:58
Hola a todo/as.:) Un saludo.

Estoy utilizando RecordCount de un query para obtener el número de registros que han sido seleccionados en la consulta SQL. (Interbase)
Algo así como esto:

nNumero := DataModule.Query.RecordCount;
Form.Label.Caption := IntToStr(nNumero);

Pero en algunos casos me da un resultado de -1, cuando hay registros seleccionados

He leído en la ayuda de Delphi que sólo se recomienda el uso de RecordCount en dBase y Paradox.

Conoceis alguna alternativa a RecordCount para interbase?

Muchas gracias.

roman
02-12-2006, 22:20:09
Obtienes -1 porque el servidor no manda todos los registros de una vez, así que la componente no tiene forma de saber cuál es total de registros obtenidos hasta que no recorra todos. Desconozco si exista una manera mejor, pero siempre puedes lanzar una consulta previa del tipo

SELECT count()

con los mismso criterios (WHERE) que la cláusula original. Aunque representa una consulta extra, en general debe ser muy rápida.

// Saludos

vtdeleon
03-12-2006, 03:10:53
Saludos

Tambien puedes invocar FetchAll del dataset (query.fetchall), aunque tiene el incoveniente de que va a traer todos los registro del servidor, pero si crees que traera pocos registros, pues no creo que afecte mucho el rendimiento.