2016-04-21 89 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的性能。)

相關問題