Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Importar Dbf en Firebird por codigo (https://www.clubdelphi.com/foros/showthread.php?t=58411)

avefenix 19-07-2008 19:26:16

Importar Dbf en Firebird por codigo
 
Saludos a todos

Resulta que me encuentro migrando una aplicacion de dbase a delphi (aunque se rian, aqui estan muy atrasados) y estoy implementando firebird, pero me encuentro con la dificultad de que necesito importar las bases de datos dbf a tablas de firebird; por lo que les solicito su asesoria para hacer esto por codigo, pues necesito integrar informacion de las sucursales. por cierto estoy en delphi 7

Gracias

marcoszorrilla 19-07-2008 21:01:33

Si la importación la vas a realizar una sola vez para actualizar los datos de un sistema a otro, puedes utilizar el DataPump que viene con Delphi.

Un Saludo.

egostar 19-07-2008 21:11:20

O si quieres puedes usar esto :)

Salud OS

avefenix 20-07-2008 19:40:53

y sin usar alias?
 
las importaciones se haran periodicamente; digamos una vez por semana; pero no se si esta aplicacion de paradox soportara las dbf de dbase?

slds

avefenix 23-07-2008 16:06:35

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;


La franja horaria es GMT +2. Ahora son las 21:12:35.

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