Paano Mag-convert ng isang Naka-link na Talahanayan sa isang Lokal na Talahanayan sa Iyong Pag-access

Ipamahagi ngayon:

Nasabi na namin ito dati, ngunit sulit na ulitin - ang mga naka-link na talahanayan ay maaaring maging tunay na kapaki-pakinabang sa iyong mga database para sa maraming mga kadahilanan. Ngunit ang isang malaking sagabal ng mga naka-link na talahanayan ay ang pagganap - pagpapatakbo ng mga query laban sa kanila, lalo na kung hindi sila mga talahanayan ng Access sa Microsoft (ibig sabihin kung sila ay Excel, CSV, o DBF mga file). Maaari silang maging napakasakit upang gumana. Mayroong ilang mga paraan upang magawa mo iyon - gagana kami sa isang paraan dito, at i-convert ang isang naka-link na talahanayan sa isang lokal na talahanayan. Oo naman - magagawa mo ito nang manu-mano sa pamamagitan ng pagkopya / pag-paste ng mga talahanayan, ngunit kung marami kang mahahawakan, ang paggawa nito sa code ay mas madali, kaya't tingnan natin kung paano…

Bakit mahalaga ang balangkas ng iyong mga pangangailangan

Pag-access sa Talahanayan na Naka-linkUna sa lahat, balangkasin natin kung ano ang talagang nais nating gawin ng code - ang paggawa nito ay ginagawang mas madali upang aktwal na likhain ang code sa una kaya iminumungkahi kong gawin mo ito sa tuwing iniisip mong lumikha ng ilang VBA code , makakatulong itong linawin ang iyong hangarin:

"Dahil sa pangalan ng isang naka-link na talahanayan, i-import ang talahanayan na iyon sa database bilang isang lokal na talahanayan upang mapabuti ang pagganap - opsyonal na tanggalin ang link mula sa database nang sabay-sabay"

Karaniwan, kapag nagko-convert ka ng isang naka-link na talahanayan sa isang lokal na talahanayan, gugustuhin mong tanggalin ang link, ngunit sa sample ng code sa ibaba binigyan ka namin ng pagpipiliang panatilihin din ang orihinal na naka-link na file ngunit sa pamamagitan nito, ang iyong bagong papalit na talahanayan ay hindi papalitan ang iyong naka-link na talahanayan sa iyong mga query atbp, kaya hindi mo makikita ang nakuha sa pagganap na ibibigay sa iyo ng isang lokal na talahanayan. Kapag komportable ka na gumana ang code ayon sa kailangan mo, inirerekumenda namin na palaging tanggalin ang orihinal - kung tutuusin, hindi mo talaga tinanggal ang aktwal na talahanayan, ang link lamang dito.

Isang salita ng pag-iingat

Bago kami makarating sa code - isang mabilis na pag-iingat lamang, walang gaanong magagawa mo kung nagli-link ka sa isang nasira Access database - Kung hindi mabasa ng Access ang file, malamang na hindi ito magawang mag-import mula rito.

Kaya - sa 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

Ano ang ginagawa ng code

VBA codeMost ng code ay magiging halata ngunit may ilang mga pangunahing puntos na dapat tandaan. Una, nakukuha namin ang detalye ng kung anong file ang nai-link sa pamamagitan ng pagtingin sa (karaniwang nakatago) Ang talahanayan ng sistema ng pag-access na "MSysObjects". Tulad ng perpektong posible (at maaaring mangyari) na bibigyan mo ang naka-link na talahanayan ng isang bagong lokal na alyas, ang susunod na kailangan nating gawin ay upang makuha ang pangalan ng orihinal na talahanayan - muli, mula sa talahanayan na "MSysObjects".

Ngayon na mayroon kaming mga detalyeng iyon, hangga't ang mga ito ay wasto (ibig sabihin hindi mo naibigay ang isang maling pag-pangalan ng talahanayan sa nakagawian), pagkatapos ay nakatakda kaming pumunta kaya't simpleng isang bagay na) tinatanggal ang link (kung ang deleteOriginal ay nakatakda sa True), at pag-import ng talahanayan.

Ang paggawa nito ay madalas na magbibigay sa iyo ng mga kapansin-pansing pagpapabuti sa pagganap kaya't kung gumagamit ka ng mga naka-link na talahanayan, lubos kong inirerekumenda na suriin mo kung anong mga nadagdag sa iyong mga talahanayan sa mga lokal na bersyon ang magbibigay sa iyo - maaari kang mabigla!

Panimula ng May-akda:

Ang Mitchell Pond ay isang dalubhasa sa pagbawi ng data sa DataNumen, Inc., na pinuno ng mundo sa mga teknolohiya sa pagbawi ng data, kasama ang magkumpuni SQL Server file at excel mga produkto ng pagbawi ng software. Para sa karagdagang impormasyon pagbisita www.datanumen. Sa

Ipamahagi ngayon:

Mga komento ay sarado.