Hogyan alakíthat át egy csatolt táblát helyi táblává a hozzáférésében

Oszd meg most:

Korábban már elmondtuk, de érdemes megismételni – a linkelt táblák számos okból valóban hasznosak lehetnek az adatbázisokban. De a csatolt táblák egyik nagy hátránya a teljesítmény – lekérdezések futtatása ellenük, különösen, ha nem Microsoft Access táblák (pl. ha Excel, CSV vagy DBF fájlok). Fájdalmasan lassú lehet velük dolgozni. Ezt több módon is megkerülheti – itt egy módszerrel dolgozunk, ez pedig az, hogy egy csatolt táblát helyi táblává alakítunk. Persze – ezt manuálisan is megteheti táblázatok másolásával/beillesztésével, de ha sokat kell kezelnie, sokkal-sokkal egyszerűbb kódban csinálni, szóval lássuk, hogyan…

Miért fontos az igényeinek felvázolása

Hozzáférés a kapcsolt tábláhozElőször is vázoljuk fel, hogy valójában mit is szeretnénk elérni a kóddal – ezzel sokkal könnyebbé válik a kód tényleges létrehozása, ezért azt javaslom, hogy ezt tegye meg minden alkalommal, amikor valamilyen VBA-kód létrehozásán gondolkodik. , segít tisztázni a célját:

"A hivatkozott tábla nevének megfelelően importálja a táblát az adatbázisba helyi táblaként a teljesítmény javítása érdekében – adott esetben törölje a hivatkozást az adatbázisból egyidejűleg."

Normális esetben, amikor egy csatolt táblát helyi táblává alakít át, törölni kell a hivatkozást, de az alábbi kódmintában lehetőséget adtunk arra, hogy megtartsa az eredeti csatolt fájlt is, de ezzel a Az újonnan importált tábla nem fogja lecserélni a hivatkozott táblát a lekérdezésekben stb., így nem fogja látni azt a teljesítménynövekedést, amelyet egy helyi tábla nyújtana. Miután megbizonyosodott arról, hogy a kód megfelelően működik, javasoljuk, hogy mindig törölje az eredetit – elvégre valójában nem a tényleges táblázatot törli, csak a hivatkozást.

A figyelmeztető szó

Mielőtt rátérnénk a kódra – csak egy gyors figyelmeztetés, nem sok mindent tehetsz, ha egy sérült Access adatbázis – Ha az Access nem tudja olvasni a fájlt, nagyon valószínűtlen, hogy képes lesz importálni belőle.

Szóval – tovább a kódhoz…

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

Mit csinál a kód

VBA kódMost A kód része elég nyilvánvaló lesz, de néhány kulcsfontosságú pontot meg kell jegyeznünk. Először is, az (általában rejtett) Access rendszertáblázatban, az „MSysObjects” megtekintésével tudhatjuk meg, hogy melyik fájlhoz van kapcsolva. Mivel teljesen lehetséges (és valószínű), hogy a csatolt táblának új helyi álnevet adott, a következő dolgunk az, hogy lekérjük az eredeti tábla nevét – ismét az „MSysObjects” táblából.

Most, hogy megvannak ezek az adatok, mindaddig, amíg érvényesek (azaz nem adtál meg hibásan írt táblanevet a rutinhoz), akkor készen állunk arra, hogy a) a) töröljük a hivatkozást (ha deleteOriginal értéke True), és importálja a táblát.

Ez gyakran drámai teljesítményjavulást eredményez, ezért ha linkelt táblákat használ, azt javaslom, hogy ellenőrizze, milyen előnyökkel jár, ha ezeket a táblákat áthelyezi a helyi verziókra – meg fog lepődni!

Szerző Bevezetés:

Mitchell Pond adat-helyreállítási szakértő DataNumen, Inc., amely világelső az adat-helyreállítási technológiák területén, beleértve javítás SQL Server filé és Excel helyreállítási szoftvertermékek. További információért látogasson el www.datanumen.com

Oszd meg most:

Hozzászólások lezárva.