Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Exportar a DBF (https://www.clubdelphi.com/foros/showthread.php?t=68554)

cmm07 20-06-2010 22:48:28

Exportar a DBF
 
Hola compañeros, necesito de su ayuda, alguien sabe como exportar datos de SQL Server 2000 (AdoQuery) a tablas DBF, pero sin ocupar BDE, estoy desesperado he buyscado por todas partes y nada de nada es increible....

gracias,

PD si son componentes que sean gratis porfavor si conocen alguno.

gracias y saludos.!

PD 2 y sin hacer recorrido por la tabla ya que eso es muy lento porfavor, gracias.

cmm07 20-06-2010 23:53:48

intente con los componentes ExportSite pero crea bien el dbf pero marca error al leerlo en DOS, necesito poder ver esos datos exportados en DOS.

toy con d2010

Casimiro Notevi 20-06-2010 23:56:13

Creo que ninguno nos hemos traído hoy la bola de cristal para adivinar el error que te sale ;)

cmm07 21-06-2010 00:13:26

hola, pues me dice que el archivo esta corrupto cuando intento acceder a el, y veo el interior y comparo con otro DBF y la estructura es diferente eso quiere decir q ese componente genera un dbf corrupot..

Casimiro Notevi 21-06-2010 00:17:19

Un fichero dbf es "casi" un fichero de texto con la descripción de los campos en la cabecera, puede que incluso así puedas usarlo.
De todas formas, no creo que los componentes estén defectuosos, no es normal.

cmm07 21-06-2010 00:23:15

entonces nose porque me marca el error de archivo corrupto.
lo hago de la siguiente manera :

DataToDbf1.SaveToFile('Ejemplo.dbf');

y en dataset le coloco Adoquery1

pero al crearlo no lo puedo abrir ni en windows, en todas las aplicaciones dice archivo corrupto.

Aqui subo el componente q uso y el DBF que segun los programas está corrupto.

http://www.mediafire.com/?qie3ovjwmox

PD: Disculpa sería mucha molestia pedir tu email para conversar de este problema por MSN ahorita??? gracias. y saludos.!

PD el error exacto es : Corrupt Table/Index header
en español La cabecera de la Tabla o indice está corrupto

Casimiro Notevi 21-06-2010 00:37:37

¿Has hecho alguna prueba sencilla de ejemplo?, no sé si al usar Delphi2010 influye el juego de caracteres unicode al exportar.

Te recomiendo que las preguntas y dudas las haga aquí en el foro para poder ayudar a otros que tengan el mismo problema, si lo resolvemos por email/messenger nadie se enterará y no podrá resolver una duda similar.
Para eso existen los foros ;)

cmm07 21-06-2010 00:38:54

hola, gracias, y la verdad al instalar el componente no me marco ningun problema, pero puede ser eso del unicode, ¿que puedo hacer? ¿de q otra forma exporto a dbf?.

gracias.

Caral 21-06-2010 01:15:35

Hola
Yo exportaria primero a msaccess que es mas familiar con sqlserver, de ahi exportaria a bdf.
Saludos

cmm07 21-06-2010 01:20:14

el problema es que son muchos procesos imaginate que es una base de datos de 20000 registros aprox. y pasarlo 2 veces el tiempo es el doble, necesito lo más optimizado.

gracias.!

Caral 21-06-2010 01:30:40

Hola
Lo que veo yo es la compativilidad, osea, que las bed sean lo mas similes posibles.
sqlserver con bdf no tienen nada en comun, estoy convencido que se cambiaran muchas cosas en el proceso.
sqlserver, mysql, access son similes.
Bdf, fdb son similes.
No creo que pasar una bd de 20000 registros tarde mas de unos minutos.
Saludos

Casimiro Notevi 21-06-2010 01:35:10

Cita:

Empezado por cmm07 (Mensaje 367827)
el problema es que son muchos procesos imaginate que es una base de datos de 20000 registros aprox. y pasarlo 2 veces el tiempo es el doble, necesito lo más optimizado.
gracias.!

¿20.000 registros?, eso no es nada, léelos con un dataset y lo exportas a xml, por ejemplo o a texto, ¿es sólo una tabla?

jorge82 21-06-2010 01:52:53

Creo que te hace falta llamar al método GetFields antes de llamar a SaveToFile, he hecho una prueba y me ha funcionado, pruébalo y nos comentas.

Saludos.

Casimiro Notevi 21-06-2010 02:02:33

Cita:

Empezado por jorge82 (Mensaje 367830)
Creo que te hace falta llamar al método GetFields antes de llamar a SaveToFile, he hecho una prueba y me ha funcionado, pruébalo y nos comentas.
Saludos.

No lo he probado, pero parece lógico que sea así.
El ejemplo que viene con los componentes es este:

Código Delphi [-]
{ Copyright Federico Firenze }
{ webmaster@ffirenze.com.ar  }
{ Envíe un mail registrando su copia y recibirá novedades y actualizaciones  }

unit unMain;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, DataToXLS, DataToAscii, DataExport, DataToDbf, DB, DBTables,
  StdCtrls, Grids, DBGrids, DataToWK1, DataToHTML;

type
  TfrmMain = class(TForm)
    tblContacts: TTable;
    dsContacts: TDataSource;
    DataToDbf1: TDataToDbf;
    DataToAscii1: TDataToAscii;
    DataToXLS1: TDataToXLS;
    DataToWK11: TDataToWK1;
    SaveDialog: TSaveDialog;
    dbgContacts: TDBGrid;
    btnExport: TButton;
    lbHelp: TLabel;
    chkCopyColumns: TCheckBox;
    DataToHTML1: TDataToHTML;
    procedure btnExportClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
  public
  end;
var
  frmMain: TfrmMain;
implementation
{$R *.dfm}

procedure TfrmMain.btnExportClick(Sender: TObject);
  procedure DoExportFile(AExport: TDataExport; AExtencion : String);
  begin
    if chkCopyColumns.Checked Then
      AExport.GetFields.Assign( dbgContacts.Columns )
    else
      AExport.GetFields.Clear; { Dynamic Fields }
    AExport.SaveToFile( ChangeFileExt( SaveDialog.FileName, AExtencion ) );
  end;
begin
  if SaveDialog.Execute Then
    case SaveDialog.FilterIndex of
      1: DoExportFile( DataToDbf1,   '.dbf' );
      2: DoExportFile( DataToAscii1, '.csv' );
      3: DoExportFile( DataToXLS1,   '.xls' );
      4: DoExportFile( DataToWK11,   '.wk1' );
      5: DoExportFile( DataToHTML1,  '.html' );
    end;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  tblContacts.Open ;
end;
end.

Y efectivamente usa getfields

cmm07 21-06-2010 20:31:08

hola gracias a toodos ya solucione mi problema, tarda menos de 1 segundo en crearla, pero lo tuve q hacer sin ese componente ya que no hubo caso con los ExportSuite, lo hice gracias a este post:

http://www.clubdelphi.com/foros/showthread.php?t=27455

saludos.!


La franja horaria es GMT +2. Ahora son las 06:55:51.

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