C++Builder Tips


Jetデータベース・テーブルのCSVファイルインポート(DAO/OLE経由)


JetデータベースのテーブルにCSVファイルからインポートします。テーブルの中に既にデータが格納されている場合キーが重複しているとそのレコードは追加されません。


//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  AnsiString str = ExtractFilePath(Application->ExeName);

  Import(str + "TEST.mdb","新規テーブル",str + "work.csv");

}

//---------------------------------------------------------------------------

void TForm1::Import(AnsiString strDbPath, AnsiString strTblName, AnsiString strTxtPath)
{
  Variant vDAO;
  Variant vDB;
  AnsiString strConnect;
  AnsiString strSql;

  vDAO = Variant::CreateObject("DAO.DBEngine.35");

  strConnect = "[Text;database=" + ExtractFilePath(strTxtPath) + "].";

  vDB = vDAO.Exec(Function("OpenDatabase") << (strDbPath) << false << false);

  strSql = "INSERT INTO " + strTblName + " SELECT * FROM " + strConnect + ExtractFileName(strTxtPath);

  vDB.Exec(Procedure("Execute") << strSql);

  vDB.Exec(Procedure("Close"));

}
//---------------------------------------------------------------------------

DownLoad bcbtips052.lzh 8KB(BCB5)