FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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; |
|
|
|