使用以下代碼時,刷新鏈接的ODBC表連接時會膨脹數據庫大小。因此,如果不關閉並重新打開數據庫以使其壓縮,用戶將永遠無法完成該過程。連接從SQL鏈接,數據庫中有13個鏈接表。該代碼重置連接4次。MS Access 2003在VBA中刷新鏈接的ODBC表導致Bloat
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Dim rs As DAO.Recordset
Dim strSite As String
Set dbs = CurrentDb
Set rs = dbs.OpenRecordset("tblSites")
'Run query against Default Site to create table
DoCmd.OpenQuery ("qryWarranty01") 'creates tblWarranty
'Loop through Site 2, Site 3 & Site 4 and append data to table
With rs
.MoveFirst
Do While .EOF = False
strSite = rs.Fields("Site")
For Each tdf In dbs.TableDefs
If Len(tdf.Connect) > 0 Then
tdf.Connect = "ODBC;DRIVER={SQL Server};SERVER=ServerName;DATABASE=" & strSite & ";UID=Username; PWD=Password;"
tdf.RefreshLink
End If
Next
DoCmd.OpenQuery "qryWarranty02" 'appends to tblWarranty
.MoveNext
Loop
End With
rs.Close
'Reset tables to be linked to Default Site
For Each tdf In dbs.TableDefs
If Len(tdf.Connect) > 0 Then
tdf.Connect = "ODBC;DRIVER={SQL Server};SERVER=ServerName;DATABASE=Site1;UID=Username; PWD=Password;"
tdf.RefreshLink
End If
Next
我已經搜索並搜索了壓縮和修復之外的分辨率。有人可以向我解釋爲什麼在這段代碼中發生膨脹並且速度如此之快?還有另外一種方法可以完成我需要做的事嗎?
我感謝您的幫助。
感謝, 卡拉
膨脹太過激烈了,所有需要完成的流程都無法在其中間關閉。創建/使用傳遞查詢完美地解決了這個問題。謝謝你的幫助! – cdohn