Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-07-2006
Avatar de Hagen
Hagen Hagen is offline
Miembro
 
Registrado: ene 2004
Posts: 65
Poder: 21
Hagen Va por buen camino
Question RecordCount no funciona correctamente

Hola

Uso Delphi 7 Enterprise, IBX 7.08 y Firebird 1.5.3

Tengo un formulario con un DBGrid para realizar la busqueda en una tabla,
despues de realizar la busqueda muestro en un Edit la cantidad de registros
encontrados; pero cuando uso la propiedad RecordCount del IBQuery solo
me funciona bien cuando los registros devueltos son menores o iguales a 5.
Cuando los registros devueltos son mas de 5, el Edit siempre muestra 5.

Muchas gracias de antemano
Responder Con Cita
  #2  
Antiguo 25-07-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
RecordCount no es aplicable en muchos sistemas de bases de datos cliente/servidor, te valdra si usas una base de datos paradox o dbase por ejemplo, pero no si usas firebird o interbase.

Cuando usas un query, los ibx no se traen todos los registros resultantes al cliente, solo los que se necesiten. Si tienes enlazado un dbgrid, por ejemplo, se traeran los registros correspondientes a las lineas del dbgrid que se necesiten visualizar, solo cuando avanzas en el dbgrid se reciben del servidor mas registros.

De modo que recordcount solo te indicara el numero de registros que se han recibido de las base de datos (de los que se ha hecho fetch).

Tendras que hacer una consulta sql adicional con un count(*), para saber el numero total de registros.

Tambien puedes hacer un fetchall o usar un clientdataset, ya que esto se trae todos los registros. Pero esto no suele ser eficiente y puede colapsar todo el sistema: si el resultado de la query son miles de registros y haces esto, se traeran todos esos miles de registros, pudiendo colapsar el equipo cliente porque se quede sin memoria, la propia red mientras se reciben toda esa burrada de registros, y ademas puede tardar el proceso muchos segundos o minutos.

Ahora si, si sabes seguro que el resultado no son mas que unas pocas decenas o cientos de registros puedes hacer un fetchall sin problemas.

Saludos
Responder Con Cita
  #3  
Antiguo 25-07-2006
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
O bien....

Puedes usar

Código Delphi [-]
ibQuery.Last;   
ibQuery.First;   

//  ó

ibQuery.FetchAll;

OJO , como comenta Mick, sabiendo que son pocos Registros!!!!

Última edición por AGAG4 fecha: 25-07-2006 a las 23:56:08.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Maximizar correctamente piccolo2101 Varios 4 22-03-2014 13:35:59
MDI no se maximiza correctamente Lepe OOP 4 26-08-2010 18:42:37
Funciona el RecordCount en los ibQuery's???? AGAG4 Varios 7 04-11-2004 16:24:11
no funciona el recordcount Irina Varios 8 13-06-2003 19:21:38


La franja horaria es GMT +2. Ahora son las 00:45:35.


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
Copyright 1996-2007 Club Delphi