2

Visual Studio 2010で、Accessデータベースを開き、テーブルに値を入力してフォームを開くための小さなプログラムを作成しました。非常にシンプルで、プログラムは私のラップトップでうまく機能します。

2台目のPCでexeを実行しようとすると、問題が発生します。テーブルに値を入力できません。どちらのコンピューターも、VisualStudio2010でプロジェクトを問題なく開くことができます。実行時に受け取るエラーは次のとおりです。

"System.Runtime.InteropServices.COMException(0x800A09C5):RunSQLアクションがキャンセルされました。\ r \ nMicrosoft.Office.Interop.Access.DoCmd.RunSQL(Object SQLStatement、Object UseTransaction)\ r \ natOpenGasAlarmSheet.Program。 Main(String [] args)in \ Program.cs:line 47 "

いくつかの引数を文字列に渡して、次と同等のものを取得します。

String sql = "INSERT INTO tbl_LOG ([ALARM], [DATE]) 
              VALUES ('KNITERV4', #07-17-2012 10:22:29 AM#);"

そして、そのSQL文字列を実行するプログラムの一部のコードは次のとおりです。

Access.Application oAccess = null;
oAccess = new Access.Application();
oAccess.OpenCurrentDatabase(<file path to mdb>, false);
oAccess.DoCmd.RunSQL(sql); //This is line 47

私はこのエラーを約1週間修正しようとしてきましたが、完全に行き詰まっています。どんな助けでも大歓迎です!!!

ありがとう、クリス


編集:2012年7月18日

これが私がいるところです...

オプション1:

String sql = "INSERT INTO tbl_LOG ([ALARM], [DATE]) 
     VALUES ('KNITERV4', #07-17-2012 10:22:29 AM#);";
oAccess.CurrentDb().Execute(sql); //ERROR HERE

結果は.....

PC#1:正しく動作します!

PC#2&#3:エラー(以下を参照)

"System.Runtime.InteropServices.COMException(0x8002801D):ライブラリが登録されていません。(HRESULTからの例外:0x8002801D(TYPE_E_LIBNOTREGISTERED))\ r \ n Microsoft.Office.Interop.Access.ApplicationClass.CurrentDb()\ r\nテスト時.Program.Main(String [] args)in \ Program.cs:line 47 "

オプション2:

String sql = "INSERT INTO tbl_LOG ([ALARM], [DATE]) 
     VALUES ('KNITERV4', #07-17-2012 10:22:29 AM#);";
oAccess.DoCmd.RunSQL(sql); //ERROR HERE

結果は.....

PC#1:正しく動作します!

PC#2&#3:エラー(以下を参照)

"System.Runtime.InteropServices.COMException(0x800A09C5):RunSQLアクションがキャンセルされました。\ r \ nMicrosoft.Office.Interop.Access.DoCmd.RunSQL(Object SQLStatement、Object UseTransaction)\ r \ natOpenGasAlarmSheet.Program。 Main(String [] args)in \ Program.cs:line 47 "

オプション3:

cn.ConnectionString = oAccess.CurrentProject.Connection.ConnectionString; //ERROR HERE
cn.Open();

rs.ActiveConnection = cn;
rs.LockType = ADODB.LockTypeEnum.adLockBatchOptimistic;
rs.CursorType = ADODB.CursorTypeEnum.adOpenKeyset;
rs.CursorLocation = ADODB.CursorLocationEnum.adUseClient;

rs.Open("tbl_LOG");
rs.AddNew("ALARM", "KNITERV4");
rs.UpdateBatch();

結果は.....

PC#1&#3:エラー(以下を参照)

"System.Runtime.InteropServices.COMException(0x8000FFFF):壊滅的な障害(HRESULTからの例外:0x8000FFFF(E_UNEXPECTED))\ r \ n Microsoft.Office.Interop.Access._CurrentProject.get_Connection()\ r \ n
at Test.Program .Main(String [] args)in \ Test \ Program.cs:line 38 "

PC#2:正しく動作します!!!

これを複数のPCで動作させることはできません。フラストレーション!!! :(

4

1 に答える 1