Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-08-2003
Avatar de DarkSide
DarkSide DarkSide is offline
Miembro
 
Registrado: jun 2003
Ubicación: La Serena - Chile
Posts: 91
Poder: 21
DarkSide Va por buen camino
Unhappy Llevar desde Excel a una BD paradox

Necesito recuperar información desde una planilla Excel a una BD, en este caso Paradox. El problema es que son mas de 50.000 lineas, y en el traspaso se queda pegado en la 4.000 aprox., ademas que el proceso resulta demasiado lento, si bien se va a realizar una o dos veces al año, calculo que llevaria mas de media hora en completarse. Si alguien tiene alguna solución mas eficiente, por favor de enviarmela, o alguna dirección de internet que hable del tema.

A continuación les envio el codigo fuente. Esta en Delphi 5.0 y paradox 7.0. de antemnao muchas gracias:


uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Db, DBTables, ComObj, ComCtrls;
...

public
Excel: Variant; // Objeto OLE.
...

procedure TfrmImporta.btnImportaClick(Sender: TObject);
var Hoja: OleVariant;
nFil: Integer;
xVal: String;
begin

// Crea objeto Excel.
try
Excel := CreateOleObject('Excel.Application');
except
showmessage('No se pudo crear el Objecto Excel.');
Exit;
end;

Excel.Workbooks.Open(Edit1.Text); // Abre libro Excel
Hoja := Excel.Worksheets.Item['Datos']; // Abre Hoja 'Datos'.
Hoja.Activate;

// Elimina datos anteriores
Table1.Open;
Table1.First;
while not Table1.Eof do begin
Table1.Delete;
end;

nFil:= 2;
repeat
Table1.Insert;
Table1.FieldByName('fecha').AsDateTime:= Excel.Cells[nFil,1].Value;
Table1.FieldByName('cuenta').AsString := Excel.Cells[nFil,4].Value;
Table1.FieldByName('debe').AsString := Excel.Cells[nFil,7].Value;
Table1.FieldByName('debe_d').AsString := Excel.Cells[nFil,9].Value;
Table1.FieldByName('haber').AsString := Excel.Cells[nFil,8].Value;
Table1.FieldByName('haber_d').AsString:= Excel.Cells[nFil,10].Value;
Table1.FieldByName('ccosto').AsString := Excel.Cells[nFil,12].Value;
Table1.FieldByName('cpadre').AsString := Excel.Cells[nFil,16].Value;
Table1.FieldByName('tcomp').AsString := Excel.Cells[nFil,11].Value;
Table1.FieldByName('comp').AsString := Excel.Cells[nFil,2].Value;
Table1.FieldByName('predio').AsString := Excel.Cells[nFil,6].Value;
Table1.FieldByName('tconc').AsString := Excel.Cells[nFil,14].Value;
Table1.FieldByName('conc').AsString := Excel.Cells[nFil,15].Value;
Table1.Post;
nFil:= nFil + 1;
xVal:= IntToStr(Excel.Cells[nFil,4].Value);
until (xVal = '0');

// Cierra archivo excel.
try
Excel.Quit;
except
ShowMessage('La aplicación Excel no se pudo finalizar automaticamente.');
Excel.Visible := True;
end;
end;
Responder Con Cita
 



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 10:25:45.


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