无法使用LINQ

时间:2015-12-08 17:51:23

标签: c# excel linq excel-vba vba

我有一个winform应用程序,我在其中读取XML发票,获取它的订单号,然后将其插入到先前加载了发票列表(一种本地跟踪它们的方式)更新行的Excel文件中。

我曾经为97-2003工作表做过,而且工作得很好。但由于我们的用户更喜欢使用2013工作表,因此我开始尝试修改连接字符串以使用它。

我还必须安装Office System Driver:Data Connectivity Components 2007,以便它可以与Microsoft.ACE.OLEDB.12.0一起使用

当我运行它时,我得到以下异常:

  

System.Data.OleDb.OleDbExeption(0x80004005):Microsoft Office Access数据库引擎已停止该过程,因为您和另一个用户正在尝试同时更改相同的数据。

因为我目前在当地工作,这很奇怪。目前只有两个用户使用此应用程序,他们只需共享该文件即可使用它。

我有点困惑于此,我一直在阅读有关此内容的更多信息,但我没有成功,当我只是寻找异常结果时说它是关于未找到文件。当我查找异常文本时,我无法获得特定情况的结果。

我已经调试了代码,但是我没有得到太多信息,因为一切都运行良好,直到遇到异常。这基本上就是我在MessageBox中显示的内容。

任何人都知道为什么会发生这种情况?

代码:

            System.Data.OleDb.OleDbConnection MyConnection;
            System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand();
            string sql = null;
            string connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "C:\\Users\\user\\Desktop\\file.xlsx;" + "Extended Properties=\"Excel 12.0;ReadOnly=False;HDR=Yes\";";
            MyConnection = new       System.Data.OleDb.OleDbConnection(connectionString);
            MyConnection.Open();
            myCommand.Connection = MyConnection;
            sql = "Update [sheetname$] set OrderNumber= @order where Invoice= @invoice";
            myCommand.Parameters.AddWithValue("@order", orderNumber);
            myCommand.Parameters.AddWithValue("@invoice", invoiceNumber);
            myCommand.CommandText = sql;
            myCommand.ExecuteNonQuery();
            MyConnection.Close();

1 个答案:

答案 0 :(得分:2)

当我在调试期间遇到此错误或类似错误时,我有一个软假设我正在孤立地工作(即因为它是全局的,我是唯一'用户'积极使用工件/数据等) ,问题通常最终是我也是错误消息抱怨的“其他用户”

当我正在调试DEBUG的调试周期时,很容易无意中让我的代码实例仍在执行测试|停止调试。孤立的代码实例可能仍会锁定各种资源,从而导致您所描述的问题。

检入Windows TaskManager以查看是否可能有一个或多个孤立的代码/调试会话实例。杀死孤立的任务,你开始的下一个DEBUG执行现在应该能够干净地执行。