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 26-05-2003
ramiretor ramiretor is offline
Miembro
 
Registrado: may 2003
Ubicación: México
Posts: 196
Poder: 22
ramiretor Va por buen camino
Escritura de archivo dbf

Hola amigos del foro:

Actulamente estoy trabajando base de datos Oracle. Por cosas del destino necesito hacer un porgrama en D7, que 'exporte' la información a una tabla dbf. Las tablas destino y origen tienen la misma estructura. La cuestión es que he probado y mi programa funciona correctamente. El código que utilizo para copiar campo a campo entre la base de datos y la tabla es el siguiente:

for i:= 1 to registros do begin
Tabla.Insert;
Tabla.Append;


for j := 0 to NumeroCampos - 1 do begin

Tabla.FieldByName(tabla.Fields[j].FieldName).AsVariant :=
qryExporta.FieldByName(qryExporta.Fields[j].FieldName).AsVariant;

end;

Tabla.ApplyUpdates;
qryExporta.Next;

end;

----------------------------------------

donde: QryExporta es el TQuery de Oracle (origen ) y Tabla es la tabla de FoxPro ( destino). Numero campos es el numero de campos de la tabla o el query ( al fin y al cabo es lo mismo).
Mi problema reside en que cuando le cargo TQuery unos 1000 registros para copiar responde rápido ( unos 15 segs ), pero para unos 10000( diez mil) registros tarda unos 5 minutos.

Habrá alguna manera de agilizar el proceso de copiado ya que cuando se utilice este programa se copiarán unos 400000 registros.

Gracias y salu2

__________________
Ernesto R.
Responder Con Cita
  #2  
Antiguo 26-05-2003
andres1569 andres1569 is offline
Miembro
 
Registrado: may 2003
Posts: 908
Poder: 22
andres1569 Va por buen camino
Hola:

Cita:
for i:= 1 to registros do begin
Tabla.Insert;
Tabla.Append;
No entiendo bien porque usas simultáneamente estas dos instrucciones, si estás añadiendo registros, lo ideal es Append (no lo he comprobado pero la lógica me dice que debe ser más rápido también)

Cita:
Tabla.ApplyUpdates;
qryExporta.Next;
Si usas CachedUpdates, sería bueno que aplicaras los cambios cada x registros, no a cada uno, como parece indicar este código. Aunque los CachedUpdates están pensados para realizar toda la operación de golpe, como una transacción, mi uso con tablas dBase y Paradox me dice que hay que grabar cada 200 registros más o menos, si no se van bloqueando registros (el límite son 255) y se satura la cosa, (imagino que con FoxPro puede ser parecido).

¿Te has planteado utilizar un componente TBachtMove? Hay que molestarse en asignar bien la equivalencia entre campos, pero es bastante más rápido que ir registro a registro.

Hasta pronto,

Un Saludo
Responder Con Cita
  #3  
Antiguo 26-05-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Otra opción:
Si solo necesitas exportar los archivos DBF, te recomiendo que utilices un TDataToDBF, que es un componente creado con ese propósito y no utiliza DLLs ni BDE ni nada, lo puedes bajar de mi página, pertenece al ExportSuite.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
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


La franja horaria es GMT +2. Ahora son las 23:30:50.


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