Announcement

Collapse
No announcement yet.

Import nach Access

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Import nach Access

    Hallo zusammen,
    ich versuche derzeit verschiedene Datendateien ( Paradox, DBase, Txt ( fixed ) und Csv-Dateien ) via ADO in eine Access-Datenbank einzulesen, der Ansatz auf Datensatzebene widerstrebt mir aber sehr!
    Die Jet ist m.E. so mächtig; vermutlich finde ich nur den "roten Faden" nicht! Die Möglichkeit wie bei SQL-Server über "OpenRowSet" sehe ich nicht ( zumindest gibt die Access-Hilfe" nichts her; kann mir jemand einen Denkanstoss geben?
    Ich bedanke mich für jede Antwort!

    Mit freundlichen Grüßen

    Holger Rogge

  • #2
    Hallo,

    das folgende Beispiel demonstriert den Import/Export über die Microsoft JET Engine. Beim Import legt die Eigenschaft <b>'Extended Properties'</b> das Verhalten fest:

    <pre>
    unit ExportImportFrm;

    interface

    uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    Db, ADODB, StdCtrls, ExtCtrls, ComCtrls, Grids, DBGrids;

    type
    TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    RadioGroupExport: TRadioGroup;
    ButtonExport: TButton;
    ButtonImport: TButton;
    ADOConnection1: TADOConnection;
    DBGrid1: TDBGrid;
    ADOConnImport: TADOConnection;
    ADOTableImport: TADOTable;
    DataSourceImport: TDataSource;
    procedure ButtonExportClick(Sender: TObject);
    procedure ButtonImportClick(Sender: TObject);
    private
    { Private-Deklarationen }
    public
    { Public-Deklarationen }
    end;

    var
    Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.ButtonExportClick(Sender: TObject);
    resourcestring
    cSQL1 = 'SELECT * INTO [Export.%s] IN "C:\Temp" "%s;" FROM Customer';
    cSQL2 = 'SELECT * INTO %s IN "C:\Temp\%s" "Excel 8.0;" FROM Customer';
    cSQL3 = 'SELECT * INTO [%s] IN "C:\Temp\%s" FROM Customer';
    var
    sSQL : String;
    iRows: Integer;
    begin
    case RadioGroupExport.ItemIndex of
    0 : sSQL := Format(cSQL1, ['dbf', 'dBASE 5.0']);
    1 : sSQL := Format(cSQL1, ['db', 'Paradox 5.x']);
    2 : sSQL := Format(cSQL1, ['htm', 'HTML Export']);
    3 : sSQL := Format(cSQL1, ['txt', 'Text']);
    4 : sSQL := Format(cSQL2, ['Tabelle1', 'Export.xls']);
    5 : sSQL := Format(cSQL3, ['Cust', 'Test1.MDB']);
    end;
    StatusBar1.Panels[0].Text := sSQL;
    ADOConnection1.Connected := True;
    ADOConnection1.Execute(sSQL, iRows);
    ADOConnection1.Connected := False;
    StatusBar1.Panels[1].Text := IntToStr(iRows);
    ShowMessage(Format('Es wurden %d Datensätze exportiert.', [iRows]));
    end;

    procedure TForm1.ButtonImportClick(Sender: TObject);
    begin
    ADOTableImport.Active := False;
    ADOConnImport.Connected := False;
    ADOConnImport.Provider := 'Microsoft.Jet.OLEDB.4.0';
    case RadioGroupExport.ItemIndex of
    0 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'dBASE 5.0';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp';
    ADOTableImport.TableName := 'Export';
    end;
    1 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'Paradox 5.x';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp';
    ADOTableImport.TableName := 'Export';
    end;
    2 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'HTML Import';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp\Export.htm';
    ADOTableImport.TableName := 'Export';
    end;
    3 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'Text';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp';
    ADOTableImport.TableName := 'Export.txt';
    end;
    4 : begin
    ADOConnImport.Properties['Extended Properties'].Value := 'Excel 8.0';
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp\Export.xls';
    ADOTableImport.TableName := 'Tabelle1';
    end;
    5 : begin
    ADOConnImport.Properties['Data Source'].Value := 'C:\Temp\Test1.mdb';
    ADOConnImport.Properties['Jet OLEDB:Engine Type'].Value := 5; //4
    ADOTableImport.TableName := 'Cust';
    end;
    end;
    ADOConnImport.Connected := True;
    ADOTableImport.Active := True;
    end;

    end.
    </pre&gt

    Comment

    Working...
    X