Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-05-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Busqueda de registro lenta

A ver si alguien me puede echar un cable.

Ejecuto el código siguiente con un doble clik y cada x veces, no tiene una cadencia fija, se congelan los formularios uno encima del otro tardando más de un minuto en mostrar el resultado.

Código Delphi [-]
 
procedure TF_Parcs.JvDBGrid1DblClick(Sender: TObject);
var cod:Integer;
begin
        cod:= Camions_ParcID.Value;
        if not Assigned(F_Camions) then
        begin
                Buscar_Camio.Close;
                Buscar_Camio.UnPrepare;
                Buscar_Camio.SQL.Text:='SELECT ID FROM BOM0001 WHERE ID ='+ IntToStr(cod);
                Buscar_Camio.Prepare;
                Buscar_Camio.Open;
                F_Camions:=TF_Camions.Create(nil);
                F_ModulDades.Camions.Locate('ID',Buscar_CamioID.Value,[]);
        end
        else
        begin
                Buscar_Camio.Close;
                Buscar_Camio.UnPrepare;
                Buscar_Camio.SQL.Text:='SELECT ID FROM BOM0001 WHERE ID ='+ IntToStr(cod);
                Buscar_Camio.Prepare;
                Buscar_Camio.Open;
                F_ModulDades.Camions.Locate('ID',Buscar_CamioID.Value,[]);
                F_Camions.BringToFront;
        end;
end;

Esto es en D6 y FB 1.5

Saludos

Josep
Responder Con Cita
  #2  
Antiguo 30-05-2012
xomen xomen is offline
Miembro
NULL
 
Registrado: ago 2011
Ubicación: Jalisco, Mexico
Posts: 18
Poder: 0
xomen Va por buen camino
Cita:
Empezado por jafera Ver Mensaje
A ver si alguien me puede echar un cable.

Ejecuto el código siguiente con un doble clik y cada x veces, no tiene una cadencia fija, se congelan los formularios uno encima del otro tardando más de un minuto en mostrar el resultado.

Código Delphi [-]
 
procedure TF_Parcs.JvDBGrid1DblClick(Sender: TObject);
var cod:Integer;
begin
        cod:= Camions_ParcID.Value;
        if not Assigned(F_Camions) then
        begin
                Buscar_Camio.Close;
                Buscar_Camio.UnPrepare;
                Buscar_Camio.SQL.Text:='SELECT ID FROM BOM0001 WHERE ID ='+ IntToStr(cod);
                Buscar_Camio.Prepare;
                Buscar_Camio.Open;
                F_Camions:=TF_Camions.Create(nil);
                F_ModulDades.Camions.Locate('ID',Buscar_CamioID.Value,[]);
        end
        else
        begin
                Buscar_Camio.Close;
                Buscar_Camio.UnPrepare;
                Buscar_Camio.SQL.Text:='SELECT ID FROM BOM0001 WHERE ID ='+ IntToStr(cod);
                Buscar_Camio.Prepare;
                Buscar_Camio.Open;
                F_ModulDades.Camions.Locate('ID',Buscar_CamioID.Value,[]);
                F_Camions.BringToFront;
        end;
end;

Esto es en D6 y FB 1.5

Saludos

Josep
Si tu base de datos esta muy pesada o tiene muchos registros debe ser por eso que tarda podrías ayudarle un poco
siendo mas especifico en la query o tal vez reindexando la base de datos. revisa tus formas pueda ser que este algo mal programado
si puedes proporcionar mas datos para poder ayudarte. Espero te sirva de algo saludos
Responder Con Cita
  #3  
Antiguo 30-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Josep.

Hace la prueba de este modo:
Código Delphi [-]
procedure TF_Parcs.JvDBGrid1DblClick(Sender: TObject);
begin
  Buscar_Camio.Close;
  Buscar_Camio.SQL.Text:='SELECT ID FROM BOM0001 WHERE ID = :COD');
  Buscar_Camio.ParamByName('COD').AsInteger:= Camions_ParcID.AsInteger;
  Buscar_Camio.Open;
  F_ModulDades.Camions.Locate('ID', Buscar_CamioID.Value, []);
  if not Assigned(F_Camions) then
     F_Camions:=TF_Camions.Create(nil);
  else
    F_Camions.BringToFront;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 30-05-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Desde luego, el código es mucho más claro como lo pone ecfisa, aunque no creo que influya mucho en la velocidad. Por otra parte, hay algo muy raro en lo que haces:

Código Delphi [-]
Buscar_Camio.SQL.Text:='SELECT ID FROM BOM0001 WHERE ID = :COD');
Buscar_Camio.ParamByName('COD').AsInteger:= Camions_ParcID.AsInteger;

¿Qué sentido tiene esta consulta? Estás buscando el ID de un registro siendo que ya conoces de antemano el ID (se lo pasas como parámetro). ¡Mejor te ahorras la consulta!

// Saludos
Responder Con Cita
  #5  
Antiguo 30-05-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias por las respuestas.

No es un problema de velocidad realmente, lo que me pasa es que de vez en cuando al hacer el doble click se quedan los formularios congelados uno encima del otro y no puedo hacer nada más que esperar a que se acabe el proceso.
He probado con puntos de interrupción y ver que pasa pero no consigo aislar la linea que se bloquea.
La base tiene solo 1500 registros, una nimiedad para un locate.
El campo ID de la tabla está como PK, todo lo demás son consultas normales.
Sigo investigando, aunque cualquier ayudita se agradece.

Saludos

Josep
Responder Con Cita
  #6  
Antiguo 30-05-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

En realidad, lo que me llevó a pensar en una posible demora con los forms (y reorganizar el código) fueron las líneas:
Código Delphi [-]
    ...
    F_Camions:=TF_Camions.Create(nil);
    F_ModulDades.Camions.Locate('ID',Buscar_CamioID.Value,[]);
    ...
Donde primero se crea el form y luego se posiciona con Locate, pero viendo ahora que son muy pocos registros, no sé...

Y no había prestado atención a lo que observó roman, tiene razón; la consulta puede omitirse.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-05-2012 a las 18:35:34.
Responder Con Cita
  #7  
Antiguo 30-05-2012
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 17
jafera Va por buen camino
Gracias.

Yo habia pensado en lo de la consulta para acotar el locate, pues así lo entendí en alguno de los hilos leidos.

El problema persiste y debe ser en la creación del form o algo así ya que como ha dicho antes se produce esporadicamente y sin un patrón fijo.

Si coloco un punto de interrupción en el doble click pasa por todas las lineas correctamente, no se donde más puedo mirar

Saludos

Josep
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
lenta busqueda de archivos con api windows anubis API de Windows 3 18-03-2008 00:18:52
Solamente Primer Búsqueda es lenta PedroAlfonso Firebird e Interbase 0 13-11-2007 20:11:13
Ayuda con consulta lenta, lenta, lenta Gregory Mazon Firebird e Interbase 22 27-06-2007 09:56:38
Busqueda Lenta por Rango de Fechas.... AGAG4 Tablas planas 5 06-04-2005 18:51:53
busqueda lenta Giniromero Conexión con bases de datos 6 24-07-2003 09:36:48


La franja horaria es GMT +2. Ahora son las 19:42:04.


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