2016-04-21 51 views
0

有一个Excel工作簿用作保存在共享文件夹中的数据库。用户有其他工作簿,其中有用户表单,允许插入和更新到数据库中。Excel工作簿作为数据库,插入更新问题

我正在使用connection.Execute方法进行插入和更新,并使用recordsaffected进行确认。

虽然recordsaffected给出了正确,但有时插入或更新从未发生过。

我能做些什么来解决这个问题?

Set oCn = CreateObject("ADODB.Connection") 
oCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _ 
"Data Source=" & shtSetting.Range("filePath").Value & ";" & _ 
"Extended Properties=Excel 12.0;" 


strSQL = "Insert Into [Sheet1$] (" & _ 
"sr_no, process,employee_id,employee_name) Values (" & _ 
"'" & sr_no & "','" & process & "','" & emp_id & "','" & emp_name & "')" 

oCn.Execute strSQL, r_status 
oCn.Close 

Set oCn = Nothing 
+0

问题是“有时”。你有时需要调查。是否有多个用户连接?当你插入记录吗?是在你追加记录的时候吗? –

+0

我作为单个用户测试过这个问题,并且遇到了这个问题。有时更新,有时插入不起作用。 – Santosh

回答

-1

,除非有强有力的理由来将数据存储在Excel电子表格,不过,我会考虑卸载它的数据库管理部进行Access数据库(即使你没有访问,你可以仍然创建一个mdb/accdb文件)。如果没有别的,这将让你访问索引,这可以极大地提高性能。您仍然可以使用数据连接(或其他技术)在Excel中镜像Access数据。

如果您在Excel中完成所有工作都陷入困境,则一种(可能较慢)的解决方案是在执行更新后查询工作表,以确认它已进行了您所期望的更改。如果您正在进行插入操作,您可能只需计算记录就可以避开,但查找刚刚插入的确切值肯定更安全。

另外:如果用户正在进行多个更新,则可能需要考虑在连接关闭前保持连接处于打开状态。 (虽然我不记得这是否会导致Excel后端锁定问题,但它通常会提高Access的性能。)

相关问题