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 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.045
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
  #2  
Antiguo 10-03-2014
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 415
Poder: 14
bulc Va por buen camino
Gracias por la información

Deberé leer la fecha de los hilos.
Responder Con Cita
  #3  
Antiguo 26-06-2023
Chandra_ Chandra_ is offline
Miembro
 
Registrado: may 2008
Posts: 50
Poder: 16
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
  #4  
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.045
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
  #5  
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.045
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
  #6  
Antiguo 26-06-2023
Chandra_ Chandra_ is offline
Miembro
 
Registrado: may 2008
Posts: 50
Poder: 16
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
  #7  
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.045
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
  #8  
Antiguo 26-06-2023
Chandra_ Chandra_ is offline
Miembro
 
Registrado: may 2008
Posts: 50
Poder: 16
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 12:38:00.


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