2

csv ファイルからデータをインポートし、そのデータを SQLServerCE データベース テーブル (ローカル C ドライブ上) に配置する C# プログラムがあります。このプログラムは多くのユーザーのマシンで動作しますが、一部のユーザーはエラーが発生し続けます:

System.Data.OleDb.OleDbException (0x80004005): Invalid setting in Excel key of the Engines section of the Windows Registry. at
System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection) at
System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject) at
System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup) at
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) at
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) at
System.Data.OleDb.OleDbConnection.Open() 

C# コードは次のとおりです。

string connStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathToFile + ";Extended Properties=Text;";
string sqlCmd = "SELECT * FROM [" + filenameOnly + "]";

using (OleDbConnection conn = new OleDbConnection(connStr))
{
  OleDbCommand cmd = new OleDbCommand(sqlCmd, conn);
  using (OleDbDataAdapter dadapt = new OleDbDataAdapter(cmd))
  {
     conn.Open();
     dadapt.TableMappings.Add("Table", dataSourceAlias);
     dadapt.Fill(ds);
     conn.Close();
  }
}

私はすでにいくつかのことを試しました:

  1. 検証済みの HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4\Engines\Text には、フォーマット キーの「CSVDelimited」があります
  2. ユーザーが Jet4.0 の最新リリース (Msjet40.dll バージョン 4.0.9511.0 Windows XP SP3 およびセキュリティ情報 MS08-028) を使用していることを確認しました。
  3. 検証済みの HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\Engines\Text に 4 文字を超える拡張子がありません

しかし、この後も、「Windows レジストリのエンジン セクションの Excel キーの設定が無効です」という理由で、ユーザーは csv ファイルのデータをインポートできません。

助言がありますか?

4

1 に答える 1

0

解決策が見つかりました.....レジストリ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4\Engines\Text 項目 UseZeroMaxScanAs が「0」に設定されていました....正しく機能させるには、「One」に変更する必要がありました。

すべての提案に感謝します。

于 2013-06-14T17:46:09.283 に答える