Ver Mensaje Individual
  #4  
Antiguo 27-05-2005
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Reputación: 22
Mick Va por buen camino
No indicas que tipo de tabla es, pero si es paradox o dbase, es infinitamente mas rapido usar un TTable y asignar los campos directamente.

Otra problema con esa query es que la estas limpiando y recreando continuamente (el Sql.Clear y Sql.Add) por cada registro, esto obliga al engine a parsear la sentencia cientos de veces, lo que aumenta tambien la lentitud, deberias asignar una sola vez la sentencia sql al principio, y despues simplemente solo asignar los parametros en el bucle.

La forma mas rapida es algo como esto:

Código:
// Tabla es un objeto TTable , creado previamente y con los campos
// añadidos en tiempo de diseño: Click boton derecho
// sobre el objeto TTAble -> Edit Fields -> Add Fields

Tabla.Append;
TablaCodMay.AsString := Datos.CMay;
TablaCodAux.AsString := Datos.CAux;
TablaDescrip.AsString := Datos.Desc;
TablaRef.AsString := Datos.Ref;
...
...
Tabla.Post;
Si no quieres usar variables persistentes para los campos, podrias hacer algo como lo siguiente (aunque la funcion FieldByName es mucho mas lenta que simplemente acceder directamente a los campos como en el ejemplo anterior):

Código:
Tabla.Append;
Tabla.FieldByName('CodMay').AsString := Datos.CMay;
Tabla.FieldByName('CodAux').AsString := Datos.CAux;
Tabla.FieldByName('Descrip').AsString := Datos.Desc;
Tabla.FieldByName('Ref').AsString := Datos.Ref;
...
...
Tabla.Post;
Ten en cuenta tambien los indices que haya definidos en la tabla temporal, cuantos mas indices tenga definidos mas lenta es la insercion de registros.

Saludos
Responder Con Cita