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-2017
Avatar de Young
Young Young is offline
Miembro
 
Registrado: abr 2006
Ubicación: San Felipe, Chile
Posts: 86
Poder: 19
Young Va por buen camino
Me parece que 1 o 2 segundos no es mucho dependiendo de la cantidad de registros, lo que si molesta en estas situaciones es que se congele el formulario, por lo tanto te sugiero que lo hagas en una tareas separada:

Código Delphi [-]
uses System.Threading;

.
.

TTask.Run(
    procedure
    begin
with DBGridProveedores.DataSource do begin DataSet.First; SetLength(provSelecc, DBGridProveedores.SelectedRows.Count); //Establecer el largo del array SetLength(provSeleccNames, DBGridProveedores.SelectedRows.Count); //Establecer el largo del array while not DataSet.Eof do begin if DBGridProveedores.SelectedRows.Find(DataSet.Bookmark, inx) then //Si la fila fue seleccioanda begin provSelecc[i] := DBGridProveedores.Columns[0].Field.AsString; //Guardo en el array provSeleccNames[i] := DBGridProveedores.Columns[1].Field.AsString; //Guardo en el array Inc(i); end; DataSet.Next; end; // ShowMessage(IntToStr(length(provSelecc))); //Muestro cantidad de filas seleccionadas end;
end);

¿Por otro lado porque haces la operacion sobre el dbgrid y no sobre el dataset?

Saludos.
Responder Con Cita
  #2  
Antiguo 20-09-2017
strelok strelok is offline
Miembro
 
Registrado: sep 2017
Posts: 181
Poder: 7
strelok Va por buen camino
Cool

Muchas gracias a ambos, sin embargo, parece que le erré, no es esa la función que causa que el formulario se congele entre 1 y 2 segundos.
Es cuando llamo al procedimiento relacionarProv
¿Puedo hacer lo siguiente?

Código:
         TTask.Run(
          procedure
          begin
              relacionarProv;
          end);
Responder Con Cita
  #3  
Antiguo 20-09-2017
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.913
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Y que hace relacionarProv?
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 20-09-2017
strelok strelok is offline
Miembro
 
Registrado: sep 2017
Posts: 181
Poder: 7
strelok Va por buen camino
Código Delphi [-]
var
inicio, fin : Integer;
begin
    inicio := 1;      //Empiezo de la 1, porque 0 es el título de columna
    fin := vlRelacionarProveedores.RowCount; //Cantidad de filas
    SetLength(self.provBDprovHojaCal, fin, 2); //Seteo alto y ancho del array
    while(inicio < fin) and (vlRelacionarProveedores.Cells[1, inicio] <> '')  do
    begin
        self.provBDprovHojaCal[inicio-1, 0] := vlRelacionarProveedores.Cells[0, inicio]; //Guardo columna 1
        self.provBDprovHojaCal[inicio-1, 1] := extraerIDProveedor(vlRelacionarProveedores.Cells[1, inicio]); //Guardo columna 2  ID
        Inc(inicio);
    end;
    SetLength(self.provBDprovHojaCal, inicio-1, 2); //Ajustar el array a los elementos insertados
end;


Resulta que fin = 2, porque solo estoy relacionando 2 mmmm...

Última edición por Casimiro Notevi fecha: 20-09-2017 a las 19:30:40.
Responder Con Cita
  #5  
Antiguo 20-09-2017
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.

Para detectar el motivo de la demora, también sería necesario ver el código de la función extraerIDProveedor (así como también conocer con cuantos registros estas trabajando).

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 20-09-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.055
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Y también sería necesario saber qué estás haciendo y qué quieres conseguir.
Responder Con Cita
  #7  
Antiguo 21-09-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
El problema es que meter en hilos en segundo plano codigo que actualiza la interfaz de usuario te va a traer problemas de sincronizacion, ya que solo el hilo principal (es decir, en donde corre la Vcl) se pueden actualizar los controles.

Para poder usar hilos debes separar completamente los datos de tu interfaz grafica, de esta manera podes procesarlos en segundo plano y luego actualizar cuando este procesamiento termina
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
ayuda con este codigo kurono Varios 5 02-04-2014 00:25:11
Porque este código me da error (adjunto código) David JAVA 1 12-03-2009 20:07:27
ayuda con este codigo kurono Varios 4 13-06-2008 01:03:29
Editor BRIEF super lento D2007 El_Raso Varios 0 02-05-2008 00:38:22
Que significa este codigo? D-MO PHP 14 23-01-2006 10:08:21


La franja horaria es GMT +2. Ahora son las 17:47:14.


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