我在Visual Studio 2010中編寫了一個小程序來打開Access數據庫,在表中輸入一個值並打開一個表單。非常簡單,程序在我的筆記本電腦上效果很好。Access.DoCMD.RunSQL上的InteropServices.COMException錯誤
當我嘗試在第二臺PC上運行EXE時出現問題。我無法在表格中輸入值。兩臺計算機都可以使用Visual Studio 2010打開項目。我收到的錯誤,當我運行它是:
「System.Runtime.InteropServices.COMException(0x800A09C5):在RunSQL 操作被取消\在 Microsoft.Office.Interop.Access.DoCmd [R \ n .RunSQL(對象的SQLStatement, 對象的UseTransaction個)\ r \ n在 OpenGasAlarmSheet.Program.Main在\的Program.cs(字串[] args):行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
我一直在試圖解決這個錯誤,一個星期左右,我完全被卡住。任何幫助將非常感激!!!
謝謝, 克里斯
編輯: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在 Test.Program.Main在\的Program.cs(字串[] args):行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 \ n在 Microsoft.Office。 .Interop.Access.DoCmd.RunSQL(對象的SQLStatement, 對象的UseTransaction個)\ r \ n在OpenGasAlarmSheet.Program.Main(字符串[] 參數)在\ Program.cs中:行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 [] arg收費) \測試\的Program.cs:行 38"
PC#2:正常工作!
我不能讓這個東西在多臺PC上工作。令人沮喪! :(
這聽起來像一個安裝問題,可能與Access驅動程序。你能打開Access數據庫並手動執行插入嗎? – 2012-07-17 17:44:13
兩臺PC的Access版本是否相同? – Botonomous 2012-07-17 17:55:17
@rontornambe是的,我可以使用有問題的計算機手動插入Access數據庫。 – user1532518 2012-07-17 18:26:46