Ver Mensaje Individual
  #5  
Antiguo 23-07-2008
avefenix avefenix is offline
Registrado
 
Registrado: mar 2008
Ubicación: Guadalajara, Mexico
Posts: 7
Reputación: 0
avefenix Va por buen camino
Gracias......

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; // Fila donde está el primer dato a importar
    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; // Fila donde está el primer dato a importar
   
      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;

Última edición por marcoszorrilla fecha: 23-07-2008 a las 17:14:48.
Responder Con Cita