 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mar 27 Feb, 2007 2:50 pm Asunto: ¿Cuántos registros? |
|
|
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 |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mar 27 Feb, 2007 3:44 pm Asunto: |
|
|
| Código: |
qry->Last();
ShowMessage(qry->RecordCount);
|
_________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Mar 27 Feb, 2007 4:14 pm Asunto: |
|
|
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 |
|
 |
Angel Master


Registrado: 15 Abr 2003Mensajes: 2311Ubicación: Toledo (España)
|
Publicado: Mie 28 Feb, 2007 8:13 am Asunto: |
|
|
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 |
|
 |
Buildero Master


Registrado: 23 Dic 2003Mensajes: 523Ubicación: Puebla, México
|
Publicado: Mie 28 Feb, 2007 4:09 pm Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|