我在Access中創建了一個儀表板,用於觀察我們用於數據錄入的Excel電子表格。我們避免鎖定電子表格是非常重要的,所以我一直使用保存在定時器上的數據導入。代碼在第一次運行時完美運行。在第二次刷新時,列表框將返回空白,並且表格的數據被刪除。實時Excel文件訪問儀表板
我的猜測是列表框正在鎖定表,所以我嘗試了一個DAO.Recordset,但我有同樣的問題。
如何繼續獲取此計時器的更新?
私人小組Form_Timer()
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE test.* FROM TEST"
DoCmd.RunSavedImportExport "DWOR"
DoCmd.SetWarnings True
Dim db As Database
Set db = CurrentDb()
Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("TEST", dbOpenDynaset)
If rs.RecordCount > 0 Then
Set watcher.Recordset = rs
End If
'rs.Close
'Me.watcher.RowSource = db.OpenRecordset("Test")
'watcher.RowSource = "SELECT [test].[#], [test].[Line Set], [test].[Model], [test].[Chassis Def], [test].[Chassis Short], [test].[Cab-L], [test].[Cab-C MRU/LEU], [test].[Cab Short], [test].[Paint Qual], [test].[Paint Damage], [test].[Paint Short], [test].[MTR Rm], [test].[ENG], [test].[Westport], [test].[Vendor], [test].[Hood], [test].[Sleeper], [test].[Sub-Assem], [test].[OFFLINE] FROM test ORDER BY [#]; "
watcher.Requery
結束子
編輯: 我移動的情況下,以一個按鈕,列表框和表字段全部顯示爲中#Deleted。
需要更多信息...定時器間隔是多少?我假設沒有錯誤信息產生?什麼是'看守'?這是代碼駐留的表單名稱嗎?如果是的話,爲什麼不將表單記錄源設置爲「測試」,然後重新查詢呢?如果是這樣,你應該完成後關閉並釋放RS和DB。另外,在您測試Recordcount> 0的IMO中,如果您轉移到ADO,將無法正常工作(它返回-1)。我會用「如果不是rs.eof」代替那一行。第二次幫助調試,顯示TEST的記錄數。如果> 0,則問題出現在RecordSource/Requery中。 –
定時器間隔設置爲10秒。沒有錯誤消息被拋出,它只是清除表。測試只是表格的名稱。 Watcher是列表框的名稱。 我會嘗試將列表框直接綁定到「測試」,我只是試圖避免鎖定表。 編輯:綁定列表框鎖定表我相信。沒有錯誤消息被拋出,但表從未更新(而不是更新一次,然後清除) – Duffie
爲了幫助調試,您可以在導入之後添加一個顯示來計算表中的記錄數嗎?如果爲零,那麼問題與導入有關。 –