Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-01-2004
ingacg ingacg is offline
Miembro
 
Registrado: may 2003
Ubicación: México D.F.
Posts: 36
Poder: 0
ingacg Va por buen camino
RecordCount en Interbase

Que tal amigos, tengo una duda:

Actualmente tengo un proyecto en delphi que utiliza un TIBQuery que accesa a una base de datos en interbase, sin embargo, al invocar la propiedad .RecordCount, siempre me devuelve 1 a pesar de que esté cargado con varios registros (con más de uno), a menos que haga un "last" antes de preguntar por el recordcount, sin embargo el hecer last alenta muchísimo el proceso, alguno de ustedes sabe porqué ocurre esto con el redordcount, hay manera de obtenerlo sin hacer un "last" previo?

p/ej.

close;
sql.clear;
sql.add('select * from tabla_1 ');
open;
last; //debo de hacerlo para que el recordcount me devuelva la cantidad
//real, de registros, de lo contrario siempre devuelve 1
if (recordcount >0) then
begin
DlgMessage('el query está cargado con '+ IntToStr(recordcount));

de antemano, gracias
__________________
Alberto C.

Última edición por ingacg fecha: 13-01-2004 a las 20:41:10. Razón: anexo el código en pascal
Responder Con Cita
  #2  
Antiguo 13-01-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Como puedes ver en la ayuda de Delphi, la propiedad RecordCount indica el número de registros que se han recogido del servidor y no el número total de registros. Conforme recorres el query, se recogen más registros y aumenta RecordCount de manera que sólo hasta que has recorrido todos (lo cuál logras con Last) obtienes el número total. Esto es así porque al hacer la consulta, el servidor, a diferencia de como sucede con bases de datos como paradox, no envía todos los registros a la vez sino conforme se van requiriendo.

Algo que podrías hacer es contar los registros antes de ejecutar la consulta con una sentencia:

select count(*) from tabla_1

Si la consulta tiene condiciones agregas éstas a la sentencia anterior.

// Saludos
Responder Con Cita
  #3  
Antiguo 13-01-2004
ingacg ingacg is offline
Miembro
 
Registrado: may 2003
Ubicación: México D.F.
Posts: 36
Poder: 0
ingacg Va por buen camino
Ok Roman, me queda claro, gracias
__________________
Alberto C.
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


La franja horaria es GMT +2. Ahora son las 17:38:07.


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