here C#を使用してSQL ServerからAccessにテーブルを再構築しています 私が受け取ったヘルプのおかげで、.accdbファイルがきれいです大きな、私は圧縮し、後でそれらを修復する必要があります。 そのために、the marked answer from hereを使用しました。不思議なことに、自分のプロジェクトに追加できる「Microsoft Office 16.0アクセスデータベースエンジンオブジェクトライブラリ」の参照のみがありました。 DBEngineの初期化時に C#DAOまたはADOXを使用して.accdbファイルを圧縮して修復する
using Microsoft.Office.Interop.Access.Dao;
var engine = new DBEngine(); // Exception
var destFile = Path.GetFileNameWithoutExtension(filepath) + "_Compact" + ".accdb";
var destFilePath = Path.Combine(Path.GetDirectoryName(filepath), destFile);
engine.CompactDatabase(filepath, destFilePath);
- オブジェクトは、例外がスローされます。また、
Retrieving the COM class factory for component with CLSID {CD7791B9-43FD-42C5-AE42-8DD2811F0419} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
は、このタスクにADOXを使用する方法があり、私はすでに作成のためにそれを使用していますので、私のカタログ?
データベースバインディングを使用してデータベースエンジンオブジェクトを作成してみてください: 'System.Reflection; 'と' Object engine = Activator.CreateInstance(Type.GetTypeFromProgID( "DAO.DBENGINE.36")); ' –
@ErikvonAsmuthはあなたの返事に感謝します。コンパイラはそのメソッドの定義がないので、メソッド "CompactDatabase"をどのように呼び出すのですか? – Scorch
ああ、あなたは 'ダイナミック'型を使って回避することができます。(これらのものがなくても動作するvbの人のほうが) 'Dynamic engine = Activator.CreateInstance(Type.GetTypeFromProgID(" DAO.DBENGIN E.36 "));' –