FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
RecordCount no devuelve dato real
alguien sabe porque usando Firedac la propiedad RecordCount no devuelve el valor real?
estoy haciendo esta funcion
cuando pruebo el query armado en la cadena en el analizador de consulta, devuelve 10 resultados, pero la linea dmGlobal.qryBuscarAnexo.RecordCount devuelve cero en el componente TDfQuery he cambiado la propiedad RecorCountMode a cmFetched y tambien a cmTotal y nada sigue devolviendo cero
__________________
Dulce Regalo que Satanas manda para mi..... |
#2
|
||||
|
||||
En sql, recordcount no devuelve el valor. Aunque debería de hacerlo tras haber ido a .last
De todas formas, lo lógico es hacerlo con un select count(campo) from tabla.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#3
|
||||
|
||||
Cita:
pero eso implicaria generar otra consulta adicional y no es lo que quiero usando ado no hay ese problema, porque en firedac si?
__________________
Dulce Regalo que Satanas manda para mi..... |
#4
|
||||
|
||||
No he probado firedac, ¿no hay acceso al código fuente?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#5
|
||||
|
||||
Eso varia por motor. Que motor usas?
__________________
El malabarista. |
#6
|
||||
|
||||
SqlServer 2000
__________________
Dulce Regalo que Satanas manda para mi..... |
#7
|
||||
|
||||
En motores sql los encargados suelen ser los componentes. Normalmente hacen un fetch para llegar al final y saber los registros que hay realmente.
En tu caso, con esas líneas debería devolver el número de registros, porque ha llegado al final. ¿No devuelve el número de registros ese qryBuscarAnexo.RecordCount?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
||||
|
||||
devuelve cero
__________________
Dulce Regalo que Satanas manda para mi..... |
#9
|
||||
|
||||
¿Y esa variable result tiene true o false?
result := dmGlobal.qryBuscarAnexo.RecordCount >= 1;
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#10
|
||||
|
||||
Por lo que leo en la web de embarcadero, trae el código fuente, así que puedes echarle un vistazo.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#11
|
||||
|
||||
Cita:
tienes el link de embarcadero?
__________________
Dulce Regalo que Satanas manda para mi..... |
#12
|
||||
|
||||
Hola,
¿Te sirve poner la propiedad RecordCountMode en modo cmTotal?, pruébalo, quizá sea lo que buscas.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#13
|
|||
|
|||
Hola,
Has verificado la propiedad FetchOptions.RowsetSize del FDQuery por defecto tiene asignado 50 por lo cual aunque una consulta que supere la cantidad de registros mayor a 50 mostrara inicialmente 50 registros los demás se obtiene utilizando los métodos correspondientes por ejemplo FetchNext recupera los siguientes 50 registros y los carga en el memoria y así sucesivamente. otro método es el FetchAll que los carga todos en memoria. Si antes de hacer el RecordCount llamas al metodo FDQuery.FetchAll o le asignas a la propiedad citada el valor -1 debería funcionar. Saludos, |
#14
|
||||
|
||||
Creo que alguien ya lo ha comentado, pero en los Servidores de Base de Datos (a diferencia de las Bases de Datos de escritorio), por defecto no se obtienen todos los registros de una consulta y en consecuencia los componentes de acceso (en esta caso FireDAC) no rellenan la propiedad RecordCount (que suele quedar a -1).
Comentas que no quieres hacer una consulta para realizar el Count, pero en la mayoría de las ocasiones suele ser mucho peor (en cuanto a rendimiento) realizar un Last que realizar una segunda consulta que realiza un Count. Por último y sólo para comprobar que los filtros son correctos, yo te aconsejaría (aunque sea en Debug) realizar el Count con la misma consulta (incluyando el WHERE) que estás haciendo; Porque me resulta extraño que el valor devuelto sea un cero. No es la primera vez que sin querer implementamos un filtro de forma incorrecta y realmente la consulta está devolviendo 0 registros porque es lo correcto.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#15
|
||||
|
||||
Efectivamente, como dices, con last se avanza registro a registro hasta el final. Sin embargo con count usa el índice por lo que la respuesta es instantánea, sin tener que recorrer nada en la base de datos.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#16
|
||||
|
||||
Cita:
Y no sólo que avanza el puntero, sino que se los trae al cliente con el consiguiente trasiego de información innecesaria por la red (que suele ser leeeeennnto);
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#17
|
||||
|
||||
Cierto, hay que evitarlo
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#18
|
||||
|
||||
Cita:
Cita:
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#19
|
||||
|
||||
No conocía esa opción de la propiedad FetchOptions, Jhonny.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
enviar dato real a sql | Memo6015 | Conexión con bases de datos | 10 | 05-09-2008 08:18:10 |
dato real no exacto | jsanchez | Firebird e Interbase | 2 | 06-09-2007 00:01:20 |
RecordCount me devuelve -1 | mayte | Conexión con bases de datos | 6 | 11-07-2007 16:40:14 |
RecordCount incorrecto en TkbmMemTable. Da el real menos 1 | Wonni | OOP | 1 | 07-06-2007 13:27:08 |
funcion que devuelve el tipo de dato de un variant | samame | OOP | 3 | 08-07-2004 17:02:30 |
|