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 20-09-2005
acl_gandalf acl_gandalf is offline
Miembro
 
Registrado: feb 2005
Posts: 39
Poder: 0
acl_gandalf Va por buen camino
como saber numero de registros de una tabla usando un clientdataset?

quisiera saber como podria saber el numero total de registros que tiene una tabla, y si hay algun metodo hecho para eso

gracias de antemano
__________________
Soy Annatar, el señor de los dones
Responder Con Cita
  #2  
Antiguo 20-09-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
table1.RecordCount
Saludos
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #3  
Antiguo 09-03-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 416
Poder: 15
bulc Va por buen camino
RecordCount es .....lennntttiiisimmmooo

La mejor manera de saber los registros en una FDB es llevar constancia de todas las altas, usando un GENERADOR. Pero lo que pasa es que no te contará los delete que hagas. Te dará el último número del último Insert y a cada insert se activará con el Trigger correspondiente.
Esa función RecordCount ha de recorrer todos los registros para contarlos, por lo que es mejor hace un Select dirigido directamente al servidor.
Usa por ejemplo: SELECT COUNT(NUM) FROM TABLA1;
Esta orden debes someterla directamente al servidor. Para probarla puedes entrar en modo comando en la FDB y hacer pruebas.
No dices si usas MySQL o Firebird...
Saludos.
Responder Con Cita
  #4  
Antiguo 09-03-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 416
Poder: 15
bulc Va por buen camino
Record count is very, very slow

Prueba a usar un GENERADOR y actualizar los números de registros con un Trigger. Podrás saber el número de último registro, pero sin tener en cuenta los deletes que hayas hecho. El generador se deber actualizar con un TRIGGER.
No indicas que base de datos usas.
Saludos.
Responder Con Cita
  #5  
Antiguo 09-03-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Este hilo es de hace 9 años.
Y para contar los registros de una tabla no hay que usar un generador, sino contarlos:
Código SQL [-]
select count(campo) from tabla
Pero que el campo sea primary key o que esté indexado.
Nunca usar el asterisco select count(*) ni tampoco contar un campo que no tenga índice, porque en ese caso sí que recorrerá la tabla uno a uno.
Responder Con Cita
  #6  
Antiguo 10-03-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 416
Poder: 15
bulc Va por buen camino
Gracias por la información

Deberé leer la fecha de los hilos.
Responder Con Cita
  #7  
Antiguo 26-06-2023
Chandra_ Chandra_ is offline
Miembro
 
Registrado: may 2008
Posts: 50
Poder: 17
Chandra_ Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
select count(campo) from tabla

¿Y cómo saco yo de esa consulta el dato, el número de registros? Un Integer, en conclusión.


Este hilo recorre los tiempos
Responder Con Cita
  #8  
Antiguo 26-06-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Chandra_ Ver Mensaje
¿Y cómo saco yo de esa consulta el dato, el número de registros? Un Integer, en conclusión.
Este hilo recorre los tiempos
No entiendo la pregunta.
Responder Con Cita
  #9  
Antiguo 26-06-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si tienes una conexión a la BD, sería más o menos:
Código Delphi [-]
IBQuery.Close;
IBQuery.SQL.Text := 'SELECT COUNT(*) FROM ' + nombreTabla;
IBQuery.Open;
Result := IBQuery.Fields[0].AsInteger;
IBQuery.Close;
Responder Con Cita
  #10  
Antiguo 26-06-2023
Chandra_ Chandra_ is offline
Miembro
 
Registrado: may 2008
Posts: 50
Poder: 17
Chandra_ Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si tienes una conexión a la BD, sería más o menos:
Código Delphi [-]IBQuery.Close; IBQuery.SQL.Text := 'SELECT COUNT(*) FROM ' + nombreTabla; IBQuery.Open; Result := IBQuery.Fields[0].AsInteger; IBQuery.Close;
Es para SQLite con FireDAC, pero ya lo adapto yo.

Un millón de gracias, Casimiro Notevi!!!
Responder Con Cita
  #11  
Antiguo 26-06-2023
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si quieres que sea lo más rápido posible, usa el campo principal indexado de la tabla, por ejemplo, si la tabla tbClients y los campos codigo,nombre, telefono, etc... y la clave primaria es "codigo", entonces:
Código Delphi [-]
IBQuery.Close;
IBQuery.SQL.Text := 'SELECT COUNT(codigo) FROM ' + nombreTabla;  //  Ponemos el nombre del campo en lugar del asterisco *
IBQuery.Open;
Result := IBQuery.Fields[0].AsInteger;
IBQuery.Close;
Responder Con Cita
  #12  
Antiguo 26-06-2023
Chandra_ Chandra_ is offline
Miembro
 
Registrado: may 2008
Posts: 50
Poder: 17
Chandra_ Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si quieres que sea lo más rápido posible, usa el campo principal indexado de la tabla, por ejemplo, si la tabla tbClients y los campos codigo,nombre, telefono, etc... y la clave primaria es "codigo", entonces:
Código Delphi [-]IBQuery.Close; IBQuery.SQL.Text := 'SELECT COUNT(codigo) FROM ' + nombreTabla; // Ponemos el nombre del campo en lugar del asterisco * IBQuery.Open; Result := IBQuery.Fields[0].AsInteger; IBQuery.Close;

Genial, Casimiro Notevi! Muchísimas gracias! Este es el tipo de cosas que, de no ser por gente como tú, nos volveríamos locos buscando.
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 02:03:57.


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