Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

¿Cuántos registros?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ¿Cuántos registros? Responder citando

Estoy acostumbrado, usando un TQuery, a saber cuantos registros me devuelve una consulta con un sencillo Query1->RecordCount. Sin embargo, al pasarme a Firebird y usar los TIBQuery y TIBSQL no funciona; me devuelve siempre 1 si la consulta no está vacía. ¿Cómo se puede saber el número de filas que devuelve una consulta con Firebird?[/code]
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

Código:

qry->Last();
ShowMessage(qry->RecordCount);

_________________
Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc

http://www.touchsoftwares.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Que tal Angel, lo que te aconseja Touchsoftwares es una forma de saberlo. El porque de esto se debe a situaciones de performance.

Cuando tu ejecutas una consulta en Firebird utilizando los componentes IBX, la propiedad RecordCount tiene el valor de el número de registros "traidos" (Fetched). Para saber con está propiedad el número de registros TOTALES tendrías que hacer un FetchAll de todos los registros pero esto no es recomendable, ya que estos componentes trabajan sobre demanda, es decir, conforme vayas necesitando tus registros. Esta técnica que esan los componentes aumenta el rendimiento.

Para que puedas notar este rendimiento puedes hacer una prueba con una consulta que te devuelva una cantidad enorme de registros y que esta consulta este enlazada a un DBGrid. Si esto mismo lo hicieramos por ejemplo en Paradox, la consulta se tardaria demasiado ya que "traeria" todos los registros solicitados. Lo que sucederia con los IBX es que solo "trae" los que necesita mostrar en la parte visible de un DBGrid y el resto los traeria conforme fueramos avanzando en nuestro DBGrid. Asi que cuando ejecutas la consulta el proceso es bastante rápido.

En conclusión, si necesitas saber el número total de registros lo más recmendable es tener otro Query con la sentencia "SELECT count(*) FROM TU_TABLA"

Saludos
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola. Gracias por las sugerencias. Lo del SELECT COUNT lo había pensado, pero lo deseché porque se trata de un query bastante complejo. Para que te hagas una idea, en la situación más sencilla es una cosa así:
Código:
SELECT A.C_refer, A.Sexo, Trim(A.Apellidos) Apellidos, Trim(A.Nombre) Nombre, A.Domicilio, A.Cpostal||' '||B.Poblacion Resi, C.Nombre Junta, Trim(D.Nombre) Prov FROM Personas A, Poblaciones B, Tablas C, Tablas D WHERE A.Municipio = B.Codigo AND A.JLocal = C.Codigo AND C.Tabla = 'PB' AND A.Provincia = D.Codigo AND D.Tabla = 'PV' ORDER BY Resi,  Apellidos, Nombre, C_refer

No es que sea fundamental el saberlo y sólo lo empleo en un caso, para informar del número de etiquetas que se van a emitir y así el usuario pueda prepararlas de antemano y cargar la impresora láser.
_________________
Un saludo

Necesitamos tu ayuda: Envía AI al 27595 (Coste 1,20 euros + IVA)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email
Mensaje    Asunto: Responder citando

En ese caso bastaria con agregar otro Query. Es el mismo que el tuyo, ya que se siguen las mismas condiciones, la excepción está en que en lugar de traer los registros que te interesan, solo cuentas el número de registros que involucraría la consulta.

Código:
SELECT count(*) as TotalEtiquetas FROM Personas A, Poblaciones B, Tablas C, Tablas D WHERE A.Municipio = B.Codigo AND A.JLocal = C.Codigo AND C.Tabla = 'PB' AND A.Provincia = D.Codigo AND D.Tabla = 'PV'


Saludos
_________________
Quien hace una pregunta teme parecer un ignorante durante cinco minutos, quien no pregunta se mantiene ignorante toda la vida.
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.