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 21-07-2006
afarenas afarenas is offline
Miembro
 
Registrado: sep 2003
Ubicación: bogota
Posts: 46
Poder: 0
afarenas Va por buen camino
Como averiguar si un registro existe sin usar recordcount

Hola compañeros
Tengo la siguiente inquietud
Resulta que tengo un sql dentro de un tquery
y para verificar si existe el registro lo hago con la propiedad
recordcount si =0 es que no existe y si recordcount>0 es porque existe,
pero resulta que esta propiedad es muy costosa cuando la tabla que consulto tiene muchos datos, de que otra manera lo puedo hacer. y que no sea con algo como
select count(*) from tabla
Gracias
Responder Con Cita
  #2  
Antiguo 21-07-2006
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
Quizas puedas cargar el campo de la tabla sobre el que buscas en memoria en un stringList y luego buscar sobre esa lista con un while, deberia ir rapido.

PD: Solo cargas la lista una vez o cuando sea necesario, en caso de que se actualice.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5

Última edición por Durbed fecha: 21-07-2006 a las 17:51:55.
Responder Con Cita
  #3  
Antiguo 21-07-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Me imagino que lo que quieres saber ese si la consulta resultó con registros. Bueno para ello solo tienes que preguntar
Código Delphi [-]
if not QueryConsulta.IsEmpty then //Si IsEmpty, No se encontró el registro

Suerte.
Responder Con Cita
  #4  
Antiguo 21-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por afarenas
select count(*) from tabla
Efectivamente esto es costoso porque le obligas a contar cuantos elementos hay, y eso significa que tiene que recorrer toda la tabla;

Es mejor hacer esto:
Código SQL [-]
SELECT * FROM TABLE WHERE ...

Mejor si limitas a 1
Código SQL [-]
SELECT TOP 1 * FROM TABLE WHERE ...

Y mejor si sólo obtienes un campo
Código SQL [-]
SELECT TOP 1 CampoClave FROM TABLE WHERE ...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 24-07-2006
PatrickM PatrickM is offline
Miembro
 
Registrado: jun 2006
Posts: 21
Poder: 0
PatrickM Va por buen camino
Lo mas facil es mirar si el DataSet associado ha llegado a final de fichero. Si al abrir la consulta con el OPEN ha llegado a EOF es que el DataSet (Consulta) no tiene ningun registro:

Código Delphi [-]
 
With C.SQL Do Begin
  ...
End;
C.Open;
 
If  (C.EOF) Then ShowMessage('RecordCount=0');
 
...

Espero que te sirva.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
No me encuentra un registro que existe, puse mal el where? Eden SQL 2 13-02-2006 07:30:49
Registro Vacio en un DBGrid si existe GENERATOR gluglu Conexión con bases de datos 1 08-02-2005 12:01:59
Como averiguar el usuario de windows Telemaco PHP 8 26-07-2004 10:15:10
Cómo puedo averiguar desde un script si un archivo existe sarackganda Linux 4 05-11-2003 21:06:15
Como averiguar si hay un campo en la Db Jose Manuel Tablas planas 3 23-08-2003 19:08:50


La franja horaria es GMT +2. Ahora son las 09:09:55.


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