So konvertieren Sie eine verknüpfte Tabelle in eine lokale Tabelle in Ihrem Zugriff

Jetzt teilen:

Wir haben es bereits gesagt, aber es lohnt sich zu wiederholen - verknüpfte Tabellen können aus mehreren Gründen in Ihren Datenbanken sehr nützlich sein. Ein großer Nachteil verknüpfter Tabellen ist jedoch die Leistung - das Ausführen von Abfragen für sie, insbesondere wenn es sich nicht um Microsoft Access-Tabellen handelt (dh wenn es sich um Excel, CSV oder handelt DBF Dateien). Es kann schmerzhaft langsam sein, mit ihnen zu arbeiten. Es gibt einige Möglichkeiten, wie Sie das umgehen können - wir arbeiten hier mit einer Möglichkeit, nämlich eine verknüpfte Tabelle in eine lokale Tabelle zu konvertieren. Sicher - Sie können dies manuell tun, indem Sie Tabellen kopieren / einfügen. Wenn Sie jedoch viel zu tun haben, ist es viel einfacher, dies im Code zu tun. Lassen Sie uns also sehen, wie ...

Warum es wichtig ist, Ihre Bedürfnisse zu skizzieren

Zugriff auf verknüpfte TabelleLassen Sie uns zunächst skizzieren, was der Code tatsächlich tun soll. Dadurch wird es viel einfacher, den Code überhaupt erst zu erstellen. Ich würde Ihnen daher empfehlen, dies jedes Mal zu tun, wenn Sie daran denken, VBA-Code zu erstellen hilft es, Ihr Ziel zu klären:

"Importieren Sie diese Tabelle unter dem Namen einer verknüpften Tabelle als lokale Tabelle in die Datenbank, um die Leistung zu verbessern. Optional können Sie die Verknüpfung gleichzeitig aus der Datenbank löschen."

Normalerweise möchten Sie beim Konvertieren einer verknüpften Tabelle in eine lokale Tabelle den Link löschen. Im folgenden Codebeispiel haben wir Ihnen jedoch die Möglichkeit gegeben, auch die ursprüngliche verknüpfte Datei beizubehalten Eine neu importierte Tabelle ersetzt Ihre verknüpfte Tabelle in Ihren Abfragen usw. nicht, sodass Sie nicht den Leistungsgewinn sehen, den eine lokale Tabelle für Sie bedeuten würde. Sobald Sie sich sicher sind, dass der Code wie gewünscht funktioniert, empfehlen wir, immer das Original zu löschen. Schließlich löschen Sie nicht die eigentliche Tabelle, sondern nur den Link dazu.

Ein Wort der Vorsicht

Bevor wir zum Code kommen - nur ein kurzes Wort der Vorsicht -, können Sie nicht viel tun, wenn Sie auf a verlinken beschädigte Access-Datenbank - Wenn Access die Datei nicht lesen kann, ist es sehr unwahrscheinlich, dass sie daraus importiert werden kann.

Also weiter zum Code…

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

Was der Code tut

VBA-CodeMost des Codes wird ziemlich offensichtlich sein, aber es gibt einige wichtige Punkte zu beachten. Zunächst erhalten wir Einzelheiten dazu, mit welcher Datei verknüpft wird, indem wir in der (normalerweise ausgeblendeten) Access-Systemtabelle „MSysObjects“ nachsehen. Da es durchaus möglich (und wahrscheinlich) ist, dass Sie der verknüpften Tabelle einen neuen lokalen Alias ​​zugewiesen haben, müssen wir als Nächstes den Namen der ursprünglichen Tabelle abrufen - wiederum aus der Tabelle "MSysObjects".

Nachdem wir diese Details haben, solange sie gültig sind (dh Sie haben der Routine keinen falsch geschriebenen Tabellennamen angegeben), können wir loslegen, sodass es einfach darum geht, a) den Link zu löschen (wenn deleteOriginal ist auf True gesetzt und importiert die Tabelle.

Wenn Sie dies tun, werden Sie häufig dramatische Leistungsverbesserungen erzielen. Wenn Sie also verknüpfte Tabellen verwenden, würde ich Ihnen dringend empfehlen, zu prüfen, welche Vorteile das Verschieben dieser Tabellen in lokale Versionen bringt - Sie werden möglicherweise überrascht sein!

Einführung des Autors:

Mitchell Pond ist ein Datenrettungsexperte in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich Reparatur- SQL Server Datei und Excel-Wiederherstellungssoftwareprodukte. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX

Jetzt teilen:

Kommentare sind geschlossen.