Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2005年05月14日] [更新 2013年03月25日] Delphi サンプルプログラム集
   
610_ADO で Paradox にインポート
動作確認等 Windows 7 U64(SP1) + Delphi XE Pro + Excel 2007
610_ADO_Inportt.zip [5,072 KB] 2013年03月25日版 (EXE 同梱)



  • 2010年05月27日
  • インポート元のデータの種類ごとのプロジェクトに分けた
  • Windows 7 U64 + Delphi 2010(UP5) Proで動作確認環境変更
  • 2013年03月25日
  • 各項目の説明を詳しくした
  • Windows 7 U64(SP1) + Delphi XE Proで動作確認




ADO で Paradox にインポート


ADO で Paradox データベースに,エクセルまたは各種テキストファイルのデータを取込む方法の参考用のサンプルプログラムです.
実務上で Paradox のデータベースにインポートすることはあまり考えられませんが,その手法は何かの参考になるかも知れません.


図1
インポート用 Paradox テーブル
  • [データベースデスクトップ] を 管理者権限で起動して作成
  • ここへ,エクセルまたはテキストファイル等からデータを取込む

以下は,サンプルプログラム集の ADO 関係の記事へのリンクです.





01_エクセル ( シート ) データからインポート


添付の エクセルの指定シートのデータを Paradox の表に取込む (インポートする) 例です.
このサンプルのコードでは Excel 2007 で作成したエクセルのブックは扱えません.


図2
取込むエクセルのデータ
  • このデータを Paradox に取り込む


設計時の画面と実行結果です.
これ以降のサンプルも,設計時画面は全く同じです.項目ごとに実行画面を掲載はしていますが,実行結果も同じです.


図3
設計時画面
図4
実行結果
  • [インポート] クリック
  • [確認表示] で取込んだデータを表示

リスト1
エクセルから Paradox にデータを取込む
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    Panel1: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    DBGrid1: TDBGrid;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private 宣言 }
  public
    { Public 宣言 }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//=============================================================================
//  FormCreate時に各種初期設定
//  ADOConnecton1,ADOQuery1はFormに配置しデフォルトの状態で使用
//  それ以外の設定はこのサンプルコード内で行っている
//=============================================================================
procedure TForm1.FormCreate(Sender: TObject);
begin
  ADOConnection1.Connected        := False;
  ADOConnection1.KeepConnection   := False;
  ADOConnection1.LoginPrompt      := False;
  ADOConnection1.Mode             := cmReadWrite;
  ADOConnection1.Provider         := 'Microsoft.Jet.OLEDB.4.0';
  ADOConnection1.ConnectionString := 'Data Source=../DB_Pdx;'
                                   + 'Extended Properties="Paradox 5.x;"';

  ADOQuery1.Connection := ADOConnection1;

  //Windows VisataとWindows 7では接続した後に接続文字列を設定しないと正常動作不可
  ADOConnection1.Connected   := True;
  ADOQuery1.ConnectionString := ADOConnection1.ConnectionString;
end;

//=============================================================================
//  フォームを閉じたら接続を切断
//=============================================================================
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  ADOConnection1.Connected := False;
end;

//=============================================================================
//  [表の全データ削除]ボタン
//  対象となるParadoxの該当テーブルのデータを全て削除
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
  Screen.Cursor := crHourGlass;

  //mdbの該当テーブルのデータを全て削除
  //テーブル(表)を削除するわけではない
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('DELETE FROM TestPdx ');
  ADOQuery1.ExecSQL;

  Screen.Cursor := crDefault;
end;

//=============================================================================
//  [インポート]ボタン
//  Excel(シート)からParadoxのデータベースの表にインポート
//
//  ADOTest.xlsのSheet1の指定項目を,Paradoxの表に新規追加
//  Paradoxの表には追加する項目があらかじめ用意されていなければならない
//  表のデータを全て削除して行っているのは重複データを避けるため
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
  LExcelPath : String;
  LstrInto   : String;
  LstrSelect : String;
  LstrFrom   : String;
begin
  //該当テーブルのデータを全て削除
  //テーブル(表)を削除するわけではない
  Button1Click(nil);

  Screen.Cursor := crHourGlass;

  //対象のExcelのブック
  //xlsx形式のブックのトートは扱えないので注意
  LExcelPath := '../Data/ADOTest.Xls';

  //SQL文の作成
  LstrInto   := 'INSERT INTO TestPdx (番号, 食品群, 食品名, キロカロリ) ';

  LstrSelect := 'SELECT [Sheet1$].番号,'
              + '        [Sheet1$].食品群,'
              + '        [Sheet1$].食品名,'
              + '        [Sheet1$].キロカロリ ';
  LstrFrom := 'FROM [Sheet1$] IN ' + AnsiQuotedStr(LExcelPath, '"') + ' '
                                   + AnsiQuotedStr('Excel 8.0;', '"');

  try
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(LstrInto);
    ADOQuery1.SQL.Add(LstrSelect);
    ADOQuery1.SQL.Add(LstrFrom);
    ADOQuery1.ExecSQL;
  except
    raise;
  end;
  Screen.Cursor := crDefault;
end;

//=============================================================================
//  [確認表示]ボタン
//  Paradoxのテーブルを開いてDBGridに表示
//  インポートする前は,現在の表のデータが表示される
//=============================================================================
procedure TForm1.Button3Click(Sender: TObject);
begin
  Screen.Cursor := crHourGlass;
  ADOQuery1.DisableControls;

  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('SELECT * FROM TestPdx ');
  ADOQuery1.Open;

  ADOQuery1.EnableControls;
  Screen.Cursor := crDefault;
end;

end.




02_CSV テキストファイルからインポート ( スキーマ設定なし )


添付の,以下のカンマ区切りの CSV ファイルを Paradox にデータを取込む例です.
このサンプルでは,スキーマの設定を使用しません.スキーマの設定を使用しない場合,CSV ファイルの先頭行はタイトル行と解釈され,データとしてはインポートしません.


"番号","食品群","食品名","キロカロリ"
1,"穀類","薄力粉",368
2,"穀類","中華麺",284
3,"穀類","マカロニ",378
4,"穀類","パン粉",372
5,"でん粉類","ジャガイモ",77
6,"でん粉類","マッシュポテト",357
7,"でん粉類","片栗粉",330
8,"でん粉類","砂糖",384
9,"砂糖類","植物油",921
10,"油脂類","豚肉ロース",258
11,"獣鳥鯨肉類","豚肉ばら",417
12,"獣鳥鯨肉類","プレススハム",123
13,"獣鳥鯨肉類","卵黄",363
14,"卵類","牛乳",59
15,"乳類","粉チーズ",475
16,"乳類","バター",745
17,"乳類","しょうが",31
18,"野菜類","たけのこ",34
19,"野菜類","たまねぎ",35
20,"野菜類","にんじん",32
21,"野菜類","ねぎ",25
22,"野菜類","パセリ",37
23,"野菜類","もやし",54
24,"果実類","りんご",50
25,"果実類","レモン汁",24
26,"きのこ類","しいたけ",0
27,"きのこ類","マッシュルーム",0
28,"飲料類","ぶどう酒",75
29,"調味料類","塩",58
30,"調味料類","しょうゆ",48
31,"調味料類","食酢",16
32,"調味料類","こしょう",0
33,"調味料類","シナモン",0


図5
実行結果
  • [インポート] クリック
  • [確認表示] で取込んだデータを表示

リスト2
CSV ファイルから Paradox にデータを取込む
Button2Click 以外のコードは上のサンプルと同じ
//=============================================================================
//  [インポート]ボタン
//  CSVテキストファイルからParadoxのデータベースの表にインポート
//
//  ADOCsv1.csvのテキストデータを,Paradoxの表に新規追加していく
//  Paradoxの表には追加する項目があらかじめ用意されていなければならない
//  表のデータを全て削除して行っているのは重複データを避けるため
//
//  ADOCsv1.csvにはスキーマの定義を用意していないので,1行目はタイトル行と解釈
//  されるため,取込まない
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
  LDataDir   : String;
  LstrInto   : String;
  LstrSelect : String;
  LstrFrom   : String;
begin
  Screen.Cursor := crHourGlass;

  //該当テーブルのデータを全て削除
  //テーブル(表)を削除するわけではない
  Button1Click(nil);

  //対象のCSVファイルがあるフォルダ
  //テキストデータはフォルダがデータベース扱い
  LDataDir := '../Data';

  //SQL文の作成
  //テキストファイル名(表名)の.は#に置換える
  LstrInto   := 'INSERT INTO TestPdx (番号, 食品群, 食品名, キロカロリ) ';
  LstrSelect := 'SELECT [ADOCsv1#csv].番号,'
              + '       [ADOCsv1#csv].食品群,'
              + '       [ADOCsv1#csv].食品名,'
              + '       [ADOCsv1#csv].キロカロリ ';
  LstrFrom  := 'FROM ADOCsv1#csv IN ' + AnsiQuotedStr(LDataDir, '"') + ' '
                                      + AnsiQuotedStr('Text;', '"');

  try
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(LstrInto);
    ADOQuery1.SQL.Add(LstrSelect);
    ADOQuery1.SQL.Add(LstrFrom);
    ADOQuery1.ExecSQL;
  except
    raise;
  end;
  Screen.Cursor := crDefault;
end;




03_CSV テキストファイルからインポート ( スキーマ設定あり )


添付の,次のカンマ区切りの CSV テキストデータから Paradox にデータを取込む例です.
第 1 行目からデータとなっていて,項目名の行がない CSV ファイルの場合です.スキーマの設定がないと,第 1 行目がタイトルとなってしまいます.


1,"穀類","薄力粉",368
2,"穀類","中華麺",284
3,"穀類","マカロニ",378
4,"穀類","パン粉",372
5,"でん粉類","ジャガイモ",77
6,"でん粉類","マッシュポテト",357
7,"でん粉類","片栗粉",330
8,"でん粉類","砂糖",384
9,"砂糖類","植物油",921
10,"油脂類","豚肉ロース",258
11,"獣鳥鯨肉類","豚肉ばら",417
12,"獣鳥鯨肉類","プレススハム",123
13,"獣鳥鯨肉類","卵黄",363
14,"卵類","牛乳",59
15,"乳類","粉チーズ",475
16,"乳類","バター",745
17,"乳類","しょうが",31
18,"野菜類","たけのこ",34
19,"野菜類","たまねぎ",35
20,"野菜類","にんじん",32
21,"野菜類","ねぎ",25
22,"野菜類","パセリ",37
23,"野菜類","もやし",54
24,"果実類","りんご",50
25,"果実類","レモン汁",24
26,"きのこ類","しいたけ",0
27,"きのこ類","マッシュルーム",0
28,"飲料類","ぶどう酒",75
29,"調味料類","塩",58
30,"調味料類","しょうゆ",48
31,"調味料類","食酢",16
32,"調味料類","こしょう",0
33,"調味料類","シナモン",0


添付のスキーマファイル,schema.ini 内のスキーマの設定です.[] 内が Paradox にインポート,つまり取り込むデータのファイル名です.
ColNameHeader=False は第 1 行目は項目名ではない,つまり 1 行目から実際のデータであることを意味しています.項目名は使用しませんが項目の設定は必要です.項目名は適当に付けています.


[ADOCsv2.csv]
ColNameHeader=False
CharacterSet=932
MaxScanRows=0
Format=CsvDelimited
Col1=AAA Integer
Col2=BBB Char
Col3=CCC Char
Col4=DDD Integer


図6
実行結果
  • [インポート] クリック
  • [確認表示] で取込んだデータを表示

リスト3
CSV テキストデータを Paradox に取込む
Button2Click 以外のコードは前のサンプルと同じ
//=============================================================================
//  [インポート]ボタン
//  CSVテキストファイルからParadoxのデータベースの表にインポート
//  CSVの第1行目からデータの場合
//
//  ADOCsv2.csvのテキストデータを,Paradoxの表に新規追加していく
//  Paradoxの表には追加する項目があらかじめ用意されていなければならない
//  表のデータを全て削除して行っているのは重複データを避けるため
//
//  スキーマファイル(schema.ini)の定義は,
//  インポートの場合Widthや表示形式の指定は無効.取込む側の表の設定による
//  ただし,固定長テキストの場合は必要
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
  LDataDir   : String;
  LstrInto   : String;
  LstrSelect : String;
  LstrFrom   : String;
begin
  Screen.Cursor := crHourGlass;

  //該当テーブルのデータを全て削除
  //テーブル(表)を削除するわけではない
  Button1Click(nil);

  //対象のCSVファイルがあるフォルダ
  //テキストデータはフォルダがデータベース扱い
  LDataDir := '../Data';
  LDataDir := ExtractFilePath(ExtractFileDir(Application.ExeName)) + 'Data';//   '../Data';

  //SQL文の作成
  //テキストファイル名(表名)の.は#に置換える
  LstrInto   := 'INSERT INTO TestPdx (番号, 食品群, 食品名, キロカロリ) ';
  LstrSelect := 'SELECT [ADOCsv2#csv].AAA,'
              + '       [ADOCsv2#csv].BBB,'
              + '       [ADOCsv2#csv].CCC,'
              + '       [ADOCsv2#csv].DDD ';
  LstrFrom := 'FROM ADOCsv2#csv IN ' + AnsiQuotedStr(LDataDir, '"') + ' '
                                     + AnsiQuotedStr('Text;', '"');

  try
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(LstrInto);
    ADOQuery1.SQL.Add(LstrSelect);
    ADOQuery1.SQL.Add(LstrFrom);
    ADOQuery1.ExecSQL;
  except
    raise;
  end;
  Screen.Cursor := crDefault;
end;




04_タブ区切りテキストファイルからインポート


添付の,次のタブ区切りのテキストデータを Paradox に取込む例です.
タブ区切りのテキストデータを取込む場合はスキーマファイルでの設定が必ず必要です.


"番号"  "食品群"        "食品名"        "キロカロリ"
1       "穀類"  "薄力粉"        368
2       "穀類"  "中華麺"        284
3       "穀類"  "マカロニ"      378
4       "穀類"  "パン粉"        372
5       "でん粉類"      "ジャガイモ"    77
6       "でん粉類"      "マッシュポテト"        357
7       "でん粉類"      "片栗粉"        330
8       "でん粉類"      "砂糖"  384
9       "砂糖類"        "植物油"        921
10      "油脂類"        "豚肉ロース"       258
11      "獣鳥鯨肉類"    "豚肉ばら"      417
12      "獣鳥鯨肉類"    "プレススハム"  123
13      "獣鳥鯨肉類"    "卵黄"  363
14      "卵類"  "牛乳"  59
15      "乳類"  "粉チーズ"      475
16      "乳類"  "バター"        745
17      "乳類"  "しょうが"      31
18      "野菜類"        "たけのこ"      34
19      "野菜類"        "たまねぎ"      35
20      "野菜類"        "にんじん"      32
21      "野菜類"        "ねぎ"  25
22      "野菜類"        "パセリ"        37
23      "野菜類"        "もやし"        54
24      "果実類"        "りんご"        50
25      "果実類"        "レモン汁"      24
26      "きのこ類"      "しいたけ"      0
27      "きのこ類"      "マッシュルーム"        0
28      "飲料類"        "ぶどう酒"      75
29      "調味料類"      "塩"    58
30      "調味料類"      "しょうゆ"      48
31      "調味料類"      "食酢"  16
32      "調味料類"      "こしょう"      0
33      "調味料類"      "シナモン"      0


添付のスキーマファイル,schema.ini 内のスキーマの設定です.[] 内が Paradox にインポート,つまり取り込むデータのファイル名です.
ColNameHeader=True が第 1 行目が項目名であることを意味しています.


[ADOTab.txt]
ColNameHeader=True
MaxScanRows=0
Format=TabDelimited
Col1=食品番号 Integer
Col2=食品群 Char Width 20
Col3=食品名 Char Width 20
Col4=キロカロリ Integer


図7
実行結果
  • [インポート] クリック
  • [確認表示] で取込んだデータを表示

リスト4
タブ区切りのテキストデータを Paradox に取込む
Button2Click 以外のコードは前のサンプルと同じ
//=============================================================================
//  [インポート]ボタン
//  タブ区切りテキストファイルからParadoxのデータベースの表にインポート
//
//  ADOTab.txtのテキストデータを,Paradoxの表に新規追加していく
//  Paradoxの表には追加する項目があらかじめ用意されていなければならない
//  表のデータを全て削除して行っているのは重複データを避けるため
//
//  スキーマファイル(schema.ini)の定義は,
//  インポートの場合Widthや表示形式の指定は無効.取込む側の表の設定による
//  ただし,固定長テキストの場合は必要
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
  LDataDir   : String;
  LstrInto   : String;
  LstrSelect : String;
  LstrFrom   : String;
begin
  Screen.Cursor := crHourGlass;

  //該当テーブルのデータを全て削除
  //テーブル(表)を削除するわけではない
  Button1Click(nil);

  //対象のテキストファイルがあるフォルダ
  //テキストデータはフォルダがデータベース扱い
  LDataDir := '../Data';

  //SQL文の作成
  //テキストファイル名(表名)の.は#に置換える
  LstrInto   := 'INSERT INTO TestPdx (番号, 食品群, 食品名, キロカロリ) ';
  LstrSelect := 'SELECT [ADOTab#txt].食品番号,'
              + '       [ADOTab#txt].食品群,'
              + '       [ADOTab#txt].食品名,'
              + '       [ADOTab#txt].キロカロリ ';
  LstrFrom := 'FROM ADOTab#txt IN ' + AnsiQuotedStr(LDataDir, '"') + ' '
                                    + AnsiQuotedStr('Text;', '"');

  try
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(LstrInto);
    ADOQuery1.SQL.Add(LstrSelect);
    ADOQuery1.SQL.Add(LstrFrom);
    ADOQuery1.ExecSQL;
  except
    raise;
  end;
  Screen.Cursor := crDefault;
end;




05_固定長テキストファイルからインポート


添付の,以下の固定長テキストデータを Paradox に取込む例です.
固定長テキストデータを取込む場合はスキーマファイルでの設定が必ず必要です.


1     穀類                薄力粉                 368     
2     穀類                中華麺                 284     
3     穀類                マカロニ               378     
4     穀類                パン粉                 372     
5     でん粉類            ジャガイモ             77      
6     でん粉類            マッシュポテト         357     
7     でん粉類            片栗粉                 330     
8     でん粉類            砂糖                   384     
9     砂糖類              植物油                 921     
10    油脂類              豚肉ロース                258     
11    獣鳥鯨肉類          豚肉ばら               417     
12    獣鳥鯨肉類          プレススハム           123     
13    獣鳥鯨肉類          卵黄                   363     
14    卵類                牛乳                   59      
15    乳類                粉チーズ               475     
16    乳類                バター                 745     
17    乳類                しょうが               31      
18    野菜類              たけのこ               34      
19    野菜類              たまねぎ               35      
20    野菜類              にんじん               32      
21    野菜類              ねぎ                   25      
22    野菜類              パセリ                 37      
23    野菜類              もやし                 54      
24    果実類              りんご                 50      
25    果実類              レモン汁               24      
26    きのこ類            しいたけ               0       
27    きのこ類            マッシュルーム         0       
28    飲料類              ぶどう酒               75      
29    調味料類            塩                     58      
30    調味料類            しょうゆ               48      
31    調味料類            食酢                   16      
32    調味料類            こしょう               0       
33    調味料類            シナモン               0       


添付のスキーマファイル,schema.ini 内のスキーマの設定です.[] 内が Paradox にインポート,つまり取り込むデータのファイル名です.
ColNameHeader=False は第 1 行目は項目名ではない,つまり 1 行目から実際のデータであることを意味しています.
固定長テキストデータの場合は,スキーマの各項目の Width の値の設定が必要です.値は,実際の各項目の長さ以内として,合計値が固定長データの 1 行の長さを超えないようにします.


[ADOFix.txt]
ColNameHeader=False
Format=FixedLength
Col1=食品番号 Integer Width 6
Col2=食品群 Char Width 20
Col3=食品名 Char Width 20
Col4=キロカロリ Integer Width 6


図8
実行結果
  • [インポート] クリック
  • [確認表示] で取込んだデータを表示



リスト5
固定長テキストデータを Paradox に取込む
Button2Click 以外のコードは前のサンプルと同じ
//=============================================================================
//  [インポート]ボタン
//  固定長テキストファイルからParadoxのデータベースの表にインポート
//
//  ADOFix.txtのテキストデータを,Paradoxの表に新規追加していく
//  Paradoxの表には追加する項目があらかじめ用意されていなければならない
//  表のデータを全て削除して行っているのは重複データを避けるため
//
//  スキーマファイル(schema.ini)の定義は,
//  インポートの場合Widthや表示形式の指定は無効.取込む側の表の設定による
//  ただし,固定長テキストの場合は必要
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
  LDataDir   : String;
  LstrInto   : String;
  LstrSelect : String;
  LstrFrom   : String;
begin
  Screen.Cursor := crHourGlass;

  //該当テーブルのデータを全て削除
  //テーブル(表)を削除するわけではない
  Button1Click(nil);

  //対象のテキストファイルがあるフォルダ
  //テキストデータはフォルダがデータベース扱い
  LDataDir := '../Data';

  //SQL文の作成
  //テキストファイル名(表名)の.は#に置換える
  LstrInto   := 'INSERT INTO TestPdx (番号, 食品群, 食品名, キロカロリ) ';
  LstrSelect := 'SELECT [ADOFix#txt].食品番号,'
              + '       [ADOFix#txt].食品群,'
              + '       [ADOFix#txt].食品名,'
              + '       [ADOFix#txt].キロカロリ ';
  LstrFrom := 'FROM ADOFix#txt IN ' + AnsiQuotedStr(LDataDir, '"') + ' '
                                    + AnsiQuotedStr('Text;', '"');

  try
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add(LstrInto);
    ADOQuery1.SQL.Add(LstrSelect);
    ADOQuery1.SQL.Add(LstrFrom);
    ADOQuery1.ExecSQL;
  except
    raise;
  end;
  Screen.Cursor := crDefault;
end;




06_JET データベースからインポート


添付している,JET データベース内の表データを Paradox に取込む例です.


図9
実行結果
  • [インポート] クリック
  • [確認表示] で取込んだデータを表示

リスト6
JET エンジンデータベースから Paradox にデータを取込む
Button2Click 以外のコードは前のサンプルと同じ
//=============================================================================
//  [インポート]ボタン
//  Paradoxの表に,JETデータベースの表からデータをインポート
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
  LJETDBName : String;
  LSQLText   : string;
begin
  Screen.Cursor := crHourGlass;

  //Paradoxの該当テーブルのデータを全て削除
  //テーブル(表)を削除するわけではない
  Button1Click(nil);

  //JETデータベース名
  //このデータベース内の食品カロリ表という表から取り出す
  LJETDBName := '../Data/TestMDB.mdb';

  //SQL文の作成
  LSQLText := 'INSERT INTO TestPdx (番号, 食品群, 食品名, キロカロリ) '
            + 'SELECT 番号, 食品群, 食品名, キロカロリ '
            + 'FROM 食品カロリ表 IN ' + AnsiQuotedStr(LJETDBName, '"');

  try
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Text := LSQLText;
    ADOQuery1.ExecSQL;
  except
    raise;
  end;
  Screen.Cursor := crDefault;
end;