PDA

Ver la Versión Completa : RecordCount me devuelve -1


mayte
11-07-2007, 12:11:22
Hola a tod@s:
Trabajo con Delphi 6 y accedo a través de BDE a una base de datos Access.
Me gustaría ayuda con una consulta a mi base de datos.
Tras preparar la consulta con instrucciones:
Consulta.SQL.Add('select ..');
Consulta.SQL.Add('from ..');
Consulta.SQL.Add('where ..');
La ejecuto:
Consulta.Prepare;
Consulta.Open;
ShowMessage('Registros: '+IntToStr(Consulta.RecordCount));
El mensaje es Registros: -1
Pero dispongo de un TDBGrid para mostrar el resultado de la consulta y curiosamente ahí si se muestran los registros seleccionados.
Mi duda es porqué no funciona correctamente la propiedad RecordCount.

Si alguien tiene idea de qué está pasando, me ayudaría mucho.
Gracias y saludos

kuan-yiu
11-07-2007, 13:03:10
RecordCount no es fiable para obtener el número de tuplas de la consulta. Existen muchas ocasiones en las que devolverá un número incorrecto o ningún número.
Si necesitas el número exacto te recomiento que cambies esa instrucción por otra consulta con un count().

mayte
11-07-2007, 13:16:26
Muchas gracias por la información.
No entiendo la razón por la que una propiedad diseñada al efecto puede fallar, ¿será que no estoy haciendo las cosas correctamente?.
En cualquier caso, no sé cómo reemplazar dicha instrucción por un count() que no trabaja con consultas.

kuan-yiu
11-07-2007, 13:49:55
En consultas normales RecordCount funciona bien, pero en cuanto la consulta tiene "joins" o "unions" a mi me ha dado problemas.
Lo que hago es crear otra consulta clónica de la primera, algo así:

Consulta original: Select * from miTabla
where miCampo='algo'
Consulta contador: Select count(*) from miTabla
where miCampo='algo'

kuan-yiu
11-07-2007, 13:56:34
Aclaración: count() debes aplicarlo sobre el campo clave de la consulta y si ese campo es índice mejor que mejor, así será más óptima.

Mick
11-07-2007, 15:18:18
RecordCount no es que falle o no sea fiable, simplemente no es aplicable cuando nos conectamos a una base de datos cliente servidor o digamos que tiene un significado distinto, esto ha sido respondido mil veces en estos foros, por ejemplo:

http://www.clubdelphi.com/foros/showthread.php?t=6580

Saludos

mayte
11-07-2007, 15:40:14
Gracias por la información, Kuan-yiu y Mick.
Había revisado ya otras dudas y respuestas referentes a mi consulta y todo aclarado. Para evitar problemas, evitaré usar RecordCount.

Saludos y hasta próximas dudas.