Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-06-2010
KAYO KAYO is offline
Miembro
 
Registrado: jul 2006
Posts: 78
Poder: 18
KAYO Va por buen camino
Contar Registros

He investigado el RecordCount pero parece que no funciona con algunas BD, dentro del foro he visto que con COUNT en SQL se puede resolver, pero la pregunta es como igualar ese count a una variable para obtener el número de registros de una consulta.
Gracias por vuestra ayuda
Responder Con Cita
  #2  
Antiguo 22-06-2010
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
Var
xx:Integer;
Begin
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select Count(*) From Clientes');
Query1.Open

xx:=Query1.Fields[0].AsInteger;

Nota:Por ejemplo en Firebird para que te funcione RecordCount, tienes que situarte en el último registros. (Last).
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.

Última edición por marcoszorrilla fecha: 15-07-2010 a las 23:03:43.
Responder Con Cita
  #3  
Antiguo 22-06-2010
Avatar de erickahr
erickahr erickahr is offline
Miembro
 
Registrado: feb 2010
Posts: 94
Poder: 15
erickahr Va por buen camino
Cool Otra opcion

En lo personal lo manejo asi, solo por costumbre ya que la respuesta de marcoszorrilla, es muy buena, esto es solo otra opcion , Saludos.
Código Delphi [-]
 
Var
  Cuantos:Integer;
Begin
  Query1.Close;
  Query1.Sql.Clear;
  Query1.Sql.Add('Select Count(*)  as contados From Clientes');
  Query1.Open
 
  Cuantos:=Query1.FieldByName('contados').Value;
end;
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes
Responder Con Cita
  #4  
Antiguo 15-07-2010
manuc manuc is offline
Miembro
 
Registrado: abr 2010
Posts: 165
Poder: 14
manuc Va por buen camino
Hola,

El hecho que la proiedad RecordCount no retorne un valor correcto, puede ser por varios motivos.

El primero y más común: la propiedad recordCount retorna un valor pero es menor al real. Esto es debido a que el componente de conexión abre un cursor en la base de datos, pero no accede a todos los registros, sino que los va cargando por bloques, a medida que va haciendo falta.

En este caso, es cierto que haciendo un "last" se actualizará el valor de la propiedad RecordCount, ya que al hacer esto el cursor abierto en base de datos recorre la tabla entera y ya sabe cuantos registros hay. No obstante, esto puede ser una técnica arriesgada y muy lenta en tablas con muchos registros.

Cuidado si piensas que tu tabla pude crecer mucho.

Otro caso en el que la propiedad RecordCount no retorna un valor incorrecto es cuando usamos componentes uni-direccionales, como pueden ser los tSQLDataset de dbExpress.

Un saludo.
Responder Con Cita
  #5  
Antiguo 22-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
esto funcionará?

yo utilizo lo siguiente para saber el numero de registros de una consulta:
Código Delphi [-]Query.SQL.Add('select ... where ...'); Query.Active:=False; Query.Active:=True; showmessage('Numero de registros: '+IntToStr(Query.RecordCount) );


utilizo SQL 8.00.194
Esta forma de consulta siempre me regresa el numero de registros correctos de la consulta.
¿puede fallar?
si es asi, ¿alguien podria decirme como solucionarlo?
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
Responder Con Cita
  #6  
Antiguo 22-07-2010
Avatar de erickahr
erickahr erickahr is offline
Miembro
 
Registrado: feb 2010
Posts: 94
Poder: 15
erickahr Va por buen camino
Creo que aqui se comenta lo que preguntas:

Cita:
Empezado por marcoszorrilla Ver Mensaje
Nota:Por ejemplo en Firebird para que te funcione RecordCount, tienes que situarte en el último registros. (Last).

Saludos!
__________________
Nadie puede separar su fe de sus actos, o sus creencias de sus afanes
Responder Con Cita
  #7  
Antiguo 22-07-2010
manuc manuc is offline
Miembro
 
Registrado: abr 2010
Posts: 165
Poder: 14
manuc Va por buen camino
Hoal Jac fcc,

¿qué componentes utilizas?

¿cuantos registros suelen tener tus tablas?

Lo normal es que si utilizas componentes que acceden directamente a base de datos, en ocasiones, te pueden engañar. Aunque esto depende también del nº de registros que tengan tus tablas.

Si tienen pocos registros, entonces al abrir el cursor puede que tenga acceso a todos y por lo tanto RecordCount te de un valor correcto. Si tienes muchos, lo normal es que el cursor acceda los x primeros y no a todos, por lo tanto no sepa cuantos registros hay en total.

Pero todo esto depende del tipo de componentes que utilices.

Un saludo.
Responder Con Cita
  #8  
Antiguo 22-07-2010
calco_hugo calco_hugo is offline
Miembro
 
Registrado: jul 2010
Posts: 42
Poder: 0
calco_hugo Va por buen camino
no es lo mas prolijo, table.last
antes del recordcount
pero funciona
Responder Con Cita
  #9  
Antiguo 22-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
gracias manuc

los registros son de hasta 50 000. hasta el momento no han sobrepasado esta cantidad.

Componenetes; uso TAdoQuery, TAdoTable y tambien ADoConnection.

para el ejemplo que coloqué usé Adoconnection.
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
Responder Con Cita
  #10  
Antiguo 22-07-2010
manuc manuc is offline
Miembro
 
Registrado: abr 2010
Posts: 165
Poder: 14
manuc Va por buen camino
Hombre si con 50.000 no te ha dado problemas, no creo que vayas a tener problemas.

Lo normal es que al abrir un cursor se acceda a unos 25-50 registros.

Lo he probado con ADO y no pasa esto, es decir, ADO sí da el nº de registros correcto.

El porqué no lo, no se si será por SQL Server o por los componentes ADO.

Un saludo.
Responder Con Cita
  #11  
Antiguo 22-07-2010
Avatar de Jac fcc
Jac fcc Jac fcc is offline
Miembro
 
Registrado: ene 2010
Posts: 33
Poder: 0
Jac fcc Va por buen camino
Talking que alivio

oh
quedo mas tranquilo entonces, .

Ademas del componente, me parece que ayuda tener limpieza en los componentes (Abrir, cerrar, limpiar).
__________________
Para una vida sana hay que ocupar 30 de 24hrs diarias...Ups!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Contar registros de un filtro jandres SQL 4 08-09-2016 18:25:32
Consulta SQL Contar registros tebre Varios 4 26-03-2009 19:18:52
Contar registros de una tabla sandra mendoza Conexión con bases de datos 4 14-10-2008 01:08:38
Contar registros de un MailMerge Elenita Servers 0 31-10-2006 11:47:31
Contar Registros Roilo SQL 10 18-07-2006 22:20:24


La franja horaria es GMT +2. Ahora son las 18:07:31.


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