Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   RecordCount me devuelve -1 (https://www.clubdelphi.com/foros/showthread.php?t=45679)

mayte 11-07-2007 12:11:22

RecordCount me devuelve -1
 
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:
Código SQL [-]
Select * from miTabla
where miCampo='algo'
Consulta contador:
Código SQL [-]
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.


La franja horaria es GMT +2. Ahora son las 10:59:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi