Gracias marcoszorrilla y Egostar, ya pude importar un dbf sin usar BDE; como le hice ahora explico, ya habia hecho un procedimiento para importar un XLS asi que utilice el mismo para el dbf. en un form inserte un gauge, un opendialog y tendo mis ibodatabase, ibotable & iboquery en un datamodule
Código Delphi
[-]
codigo:
procedure TImportDbf.BitBtn3Click(Sender: TObject);
Var
Seleccion:Integer;
xls : Variant;
iFila: Integer;
fLoop: Boolean;
archivo:TMemoryStream;
temp:integer;
begin
Seleccion:=MessageDlg('¿Deseas Actualizar la Tabla PUENTE1?', mtCustom, [mbYes, mbNo], 0);
if Seleccion = mrYes Then
begin
if Open1.Execute then begin
archivo := TMemoryStream.Create;
archivo.LoadFromFile(Open1.FileName);
Gauge1.Progress:=0;
archivo.Free;
xls := CreateOleObject('Excel.Application');
xls.WorkBooks.Open( Open1.FileName );
xls.Visible := false;
end;
DATAMODULE3.IBOQERYcountxls.Open;
try
fLoop := true;
iFila := 2; while fLoop do begin
if VarToStr( xls.WorkSheets[1].Cells[iFila,1].Value ) = '' then
fLoop := false
else
with DATAMODULE3.IBOQERycountxls do begin
temp:=temp+1;
END;
inc(iFila);
end;
finally
DATAMODULE3.IBOQERYcountxls.Close;
Gauge1.MaxValue:=temp-1;
DATAMODULE3.IBOQUERYPTE.Open;
try
fLoop := true;
iFila := 2;
for ifila := 2 to temp do
if VarToStr( xls.WorkSheets[1].Cells[iFila,1].Value ) = '' then
fLoop := false
else
with DATAMODULE3.IBOQUERYPTE do begin
Insert;
FieldByName('MARCA').AsString := VarToStr( xls.WorkSheets[1].Cells[iFila,1].Value ); FieldByName('DESCRIP').AsString := VarToStr( xls.WorkSheets[1].Cells[iFila,2].Value ); Fieldbyname('MODELO').AsString :=varToStr ( xls.WorkSheets[1].Cells[iFila,3].Value ); Fieldbyname('ORIGINAL').AsString :=varToStr ( xls.WorkSheets[1].Cells[iFila,4].Value ); Fieldbyname('FABRICANTE').AsString :=varToStr ( xls.WorkSheets[1].Cells[iFila,5].Value ); Fieldbyname('STOCK').AsInteger :=trunc ( xls.WorkSheets[1].Cells[iFila,6].Value );
Fieldbyname('ANO').AsString :=varToStr ( xls.WorkSheets[1].Cells[iFila,7].Value ); Fieldbyname('CODIGO').AsString :=varToStr ( xls.WorkSheets[1].Cells[iFila,8].Value ); Fieldbyname('PRECIO').AsInteger :=trunc ( xls.WorkSheets[1].Cells[iFila,9].Value );
Post;
Gauge1.Progress:=Gauge1.Progress+1;
END;
inc(iFila);
finally
xls.Quit;
DATAMODULE3.IBOQUERYPTE.Close;
edit1.text:=inttostr(temp);
end;
ShowMessage ('Terminado');
end
end
else
DataModule3.IboPUENTE.Cancel;
end;