Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Servers
Register FAQ Members List Calendar Guía de estilo Today's Posts

 
 
Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1  
Old 03/08/2003
DarkSide's Avatar
DarkSide DarkSide is offline
Miembro
 
Join Date: Jun 2003
Location: La Serena - Chile
Posts: 91
Poder: 24
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;
Reply With Quote
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT +2. The time now is 21:10.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi