ddd_ddd
27-09-2005, 04:47:03
tengo el siguiente codigo para transferir la hoja de claculo excel a la tabla de delphi. pero con 50mil filas y 12 columnas se tarda mas de 30 minutos.
:confused:
¿alguien sabe como hacer la tranferencia en el menor tiempo posible?
:(
procedure TForm2.BitBtn1Click(Sender: TObject);
var
appExcel: Variant;
i, j: integer;
sql: String;
x: string;
const
numCampos: integer = 12;
numFilas: integer = 50000;
begin
appExcel := CreateOleObject('Excel.Application');
appExcel.WorkBooks.Open('C:\archivo.xls');
query1.active:=false;
for i := 2 to (numfilas + 2) do // en la fila 1 esta el nombre del campo
begin
sql := '';
for j := 1 to numCampos do
begin
x := appExcel.WorkBooks[1].Worksheets[1].Cells[i, j];
sql := sql + x + '''';
if j <> numCampos then
sql := sql + ',''';
end;
query1.SQL.Clear;
query1.SQL.Add('insert into tabla values(''' + sql + ')');
try
query1.ExecSQL;
except
showmessage('no se pudo transferir todos los registros') ;
end;
end;
showmessage('ya se han transferido los datos');
appExcel.Quit;
appExcel := Unassigned;
end;
:confused:
¿alguien sabe como hacer la tranferencia en el menor tiempo posible?
:(
procedure TForm2.BitBtn1Click(Sender: TObject);
var
appExcel: Variant;
i, j: integer;
sql: String;
x: string;
const
numCampos: integer = 12;
numFilas: integer = 50000;
begin
appExcel := CreateOleObject('Excel.Application');
appExcel.WorkBooks.Open('C:\archivo.xls');
query1.active:=false;
for i := 2 to (numfilas + 2) do // en la fila 1 esta el nombre del campo
begin
sql := '';
for j := 1 to numCampos do
begin
x := appExcel.WorkBooks[1].Worksheets[1].Cells[i, j];
sql := sql + x + '''';
if j <> numCampos then
sql := sql + ',''';
end;
query1.SQL.Clear;
query1.SQL.Add('insert into tabla values(''' + sql + ')');
try
query1.ExecSQL;
except
showmessage('no se pudo transferir todos los registros') ;
end;
end;
showmessage('ya se han transferido los datos');
appExcel.Quit;
appExcel := Unassigned;
end;