如何在訪問中將鏈接表轉換為本地表

立即分享:

我們之前已經說過,但是值得重複一遍–出於多種原因,鏈接表在您的數據庫中非常有用。 但是鏈接表的一個主要缺點是性能–對它們運行查詢,尤其是如果它們不是Microsoft Access表(例如,它們是Excel,CSV或 DBF 文件)。 他們的工作速度可能很慢。 您可以通過幾種方法來解決此問題–我們將在這裡使用一種方法,即將鏈接表轉換為本地表。 當然可以–您可以通過複製/粘貼表格來手動完成此操作,但是如果您要處理的事情很多,則在代碼中執行此操作要容易得多,所以讓我們看看如何...

為什麼概述您的需求很重要

訪問鏈接表首先,讓我們概述一下我們實際上想要代碼執行的操作–這樣做實際上使創建代碼變得非常容易,所以我建議您在每次考慮創建一些VBA代碼時都這樣做,它有助於闡明您的目標:

“給出鏈接表的名稱,將該表作為本地表導入數據庫以提高性能–可選地同時從數據庫中刪除鏈接”

通常,當您將鏈接表轉換為本地表時,您需要刪除該鏈接,但是在下面的代碼示例中,我們為您提供了保留原始鏈接文件的選項,但是通過這樣做,您可以新導入的表不會替換查詢等中的鏈接表,因此您不會看到本地表會給您帶來的性能提升。 一旦您對代碼能夠按需工作感到滿意,我們建議您始終刪除原始表-畢竟,您實際上並沒有刪除實際表,只是刪除了指向表的鏈接。

一個忠告

在開始編寫代碼之前,請注意,如果您要鏈接到 損壞的Access數據庫 –如果Access無法讀取文件,則極不可能從該文件導入。

所以–進入代碼...

Sub MakeTableLocal(tableName As String, optional deleteOriginal As Boolean = True)
    Dim DbPath As Variant, TblName As Variant

    'get path of linked table
    DbPath = DLookup("Database", "MSysObjects", "Name='" & tableName & "' And Type=6")
    'Get the real name of the linked table (in case it has been given an alias in the link)
    TblName = DLookup("ForeignName", "MSysObjects", "Name='" & tableName & "' And Type=6")
    If IsNull(DbPath) Then
        'Either a local table, or the wrong table name has been supplied, exit the sub
        Exit Sub
    End If

    'delete linked table
    If deleteOriginal Then
        DoCmd.DeleteObject acTable, tableName
    Else
        'If we're not deleting the existing table we'll have to rename the imported table to avoid
        'overwriting it etc
        tableName = tableName & " - local"
    End If
    
    'import the table as a local, unlinked table
    DoCmd.TransferDatabase acImport, "Microsoft Access", DbPath, acTable, TblName, tableName
End Sub

代碼在做什麼

VBA代碼Most 的代碼將非常明顯,但是需要注意一些關鍵點。 首先,通過查看(通常是隱藏的)Access系統表“ MSysObjects”,可以了解鏈接到哪個文件的詳細信息。 因為您很有可能(也有可能)為鏈接表賦予了新的本地別名,所以我們接下來要做的就是再次從“ MSysObjects”表中獲取原始表的名稱。

現在我們有了那些詳細信息,只要它們是有效的(即,您沒有為例程提供一個拼寫錯誤的表名),那麼我們就可以開始了,所以這僅僅是一個問題:a)刪除鏈接(如果deleteOriginal設置為True),並導入表。

這樣做通常可以顯著提高性能,因此,如果您使用鏈接表,我強烈建議您檢查一下將這些表移至本地版本會有哪些收益-您可能會感到驚訝!

作者簡介:

Mitchell Pond是 DataNumen,Inc.是數據恢復技術的全球領導者,包括 修復 SQL Server 文件 和excel恢復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM

立即分享:

評論被關閉。