Si të konvertoni një tabelë të lidhur në një tabelë lokale në aksesin tuaj

E kemi thënë më parë, por ia vlen të përsëritet – tabelat e lidhura mund të jenë vërtet të dobishme në bazat e të dhënave tuaja për një sërë arsyesh. Por një pengesë e madhe e tabelave të lidhura është performanca – ekzekutimi i pyetjeve kundër tyre, veçanërisht nëse ato nuk janë tabela të Microsoft Access (p.sh. nëse janë Excel, CSV ose DBF dosjet). Ata mund të jenë shumë të ngadalshëm për të punuar me to. Ka disa mënyra se si mund të punoni rreth kësaj - ne do të punojmë me një mënyrë këtu, dhe kjo është të konvertojmë një tabelë të lidhur në një tabelë lokale. Sigurisht – mund ta bëni këtë manualisht duke kopjuar/ngjitur tabela, por nëse keni shumë për të trajtuar, ta bësh atë në kod është shumë, shumë më e lehtë, kështu që le të shohim se si…

Pse është e rëndësishme të përshkruani nevojat tuaja

Hyni në tabelën e lidhurPara së gjithash, le të përshkruajmë se çfarë duam të bëjë kodi – duke bërë këtë e bën shumë më të lehtë krijimin e vërtetë të kodit në radhë të parë, kështu që unë do t'ju sugjeroja ta bëni këtë sa herë që jeni duke menduar të krijoni një kod VBA , ju ndihmon të qartësoni qëllimin tuaj:

"Duke pasur parasysh emrin e një tabele të lidhur, importojeni atë tabelë në bazën e të dhënave si një tabelë lokale për të përmirësuar performancën - fshini opsionalisht lidhjen nga baza e të dhënave në të njëjtën kohë"

Normalisht, kur po konvertoni një tabelë të lidhur në një tabelë lokale, do të dëshironi të fshini lidhjen, por në mostrën e kodit më poshtë ju kemi dhënë mundësinë që të mbani gjithashtu skedarin e lidhur origjinal, por duke e bërë këtë, tabela e sapo importuar nuk do të zëvendësojë tabelën tuaj të lidhur në pyetjet tuaja etj, kështu që ju nuk do të shihni fitimin e performancës që do t'ju jepte një tabelë lokale. Pasi të jeni të kënaqur që kodi funksionon ashtu siç ju nevojitet, ne do të rekomandonim të fshini gjithmonë origjinalin – në fund të fundit, në fakt nuk po fshini tabelën aktuale, por vetëm lidhjen me të.

Një fjalë e kujdes

Përpara se të arrijmë te kodi – vetëm një fjalë e shpejtë kujdesi, nuk ka shumë gjëra që mund të bëni nëse jeni duke u lidhur me një e dëmtuara e bazës së të dhënave të Access – nëse Access nuk mund ta lexojë skedarin, ka shumë pak gjasa që të jetë në gjendje të importojë prej tij.

Pra - te kodi…

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

Çfarë po bën kodi

Kodi VBAPjesa më e madhe e kodit do të jetë mjaft e qartë, por ka disa pika kyçe për t'u vënë re. Së pari, ne marrim detajet se me cilin skedar lidhet duke parë në tabelën e sistemit Access (zakonisht të fshehur) "MSysObjects". Meqenëse është plotësisht e mundur (dhe e mundshme) që ju t'i keni dhënë tabelës së lidhur një pseudonim të ri lokal, gjëja tjetër që duhet të bëjmë është të marrim emrin e tabelës origjinale - përsëri, nga tabela "MSysObjects".

Tani që i kemi ato detaje, për sa kohë që ato janë të vlefshme (d.m.th. nuk keni dhënë një emër tabele të shkruar gabim në rutinë), atëherë jemi gati të shkojmë kështu që është thjesht një çështje e fshirjes së lidhjes (nëse deleteOriginal është vendosur në True), dhe importon tabelën.

Bërja e kësaj do t'ju japë shpesh përmirësime mjaft dramatike në performancë, kështu që nëse përdorni tabela të lidhura, unë do t'ju rekomandoja shumë që të kontrolloni se çfarë përfitimesh do t'ju sjellë lëvizja e atyre tabelave në versionet lokale – mund të habiteni!

Hyrje e autorit:

Mitchell Pond është një ekspert i rikuperimit të të dhënave në DataNumen, Inc., e cila është lider botëror në teknologjitë e rikuperimit të të dhënave, duke përfshirë riparim SQL Server skedar dhe produkte softuerike të rimëkëmbjes excel. Për më shumë informacion vizitoni www.datanumen.com

Komentet janë të mbyllura.