Ako previesť prepojenú tabuľku na lokálnu tabuľku vo vašom prístupe

Už sme to povedali, ale stojí za to opakovať - ​​prepojené tabuľky môžu byť vo vašich databázach skutočne užitočné z mnohých dôvodov. Veľkou nevýhodou prepojených tabuliek je však výkon - spúšťanie dotazov proti nim, najmä ak nejde o tabuľky programu Microsoft Access (tj. Ak ide o Excel, CSV alebo DBF súbory). S nimi sa dá pracovať bolestivo pomaly. Existuje niekoľko spôsobov, ako to obísť - budeme tu pracovať jedným spôsobom, a to previesť prepojenú tabuľku na miestnu tabuľku. Iste - dalo by sa to urobiť ručne kopírovaním / vkladaním tabuliek, ale ak máte toho veľa na zvládnutie, je to v kóde oveľa, oveľa jednoduchšie, takže sa pozrime, ako ...

Prečo je dôležité načrtnúť svoje potreby

Prístup k prepojenej tabuľkeNajskôr si načrtnime, čo vlastne chceme, aby kód robil - vďaka tomu je oveľa jednoduchšie skutočne vytvoriť tento kód, takže by som vám mal navrhnúť, aby ste to robili zakaždým, keď uvažujete o vytvorení nejakého kódu VBA. , pomôže to objasniť váš cieľ:

„Vzhľadom na názov prepojenej tabuľky importujte túto tabuľku do databázy ako lokálnu tabuľku, aby ste zlepšili výkon - voliteľne súčasne odstráňte odkaz z databázy.“

Keď prevádzate prepojenú tabuľku na miestnu tabuľku, budete chcieť odkaz obvykle odstrániť, ale v ukážke kódu nižšie sme vám dali možnosť ponechať si aj pôvodný prepojený súbor, ale týmto spôsobom novo importovaná tabuľka nenahradí vašu prepojenú tabuľku v dotazoch atď., takže neuvidíte zvýšenie výkonu, ktoré by vám poskytla miestna tabuľka. Len čo sa dozviete, že kód pracuje tak, ako potrebujete, odporúčame vám vždy originál vymazať - koniec koncov, v skutočnosti neodstraňujete samotnú tabuľku, iba odkaz na ňu.

Pozor

Predtým, ako sa dostaneme ku kódu - len krátke upozornenie, ak odkazujete na písmeno a, nemôžete urobiť veľa poškodená databáza Accessu - ak program Access nedokáže súbor prečítať, je veľmi nepravdepodobné, že z neho bude schopný importovať.

Takže - ďalej ku kódu ...

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 & "' A Type = 6 ") 'Získajte skutočné meno prepojenej tabuľky (v prípade, že v prepojení dostal alias) TblName = DLookup (" ForeignName "," MSysObjects "," Name =' "& tableName &" ' And Type = 6 ") If IsNull (DbPath) Then 'Buď bola zadaná lokálna tabuľka, alebo bol zadaný nesprávny názov tabuľky, ukončite sub Exit Sub End If' zmazať prepojenú tabuľku If 'deleteOriginal Then DoCmd.DeleteObject acTable, tableName Else' If nebudeme mazať existujúcu tabuľku, budeme musieť premenovať importovanú tabuľku, aby sme zabránili jej „prepisovaniu atď. Access ", DbPath, acTable, TblName, tableName End Sub

Čo robí kód

Kód VBAMost kódu bude celkom zrejmé, ale treba si uvedomiť niektoré kľúčové body. Najskôr získame podrobnosti o tom, na čo je súbor prepojený, nahliadnutím do (zvyčajne skrytej) tabuľky prístupového systému „MSysObjects“. Pretože je úplne možné (a pravdepodobné), že prepojenej tabuľke dáte nový miestny alias, musíme urobiť, aby sme dostali názov pôvodnej tabuľky - opäť z tabuľky „MSysObjects“.

Teraz, keď máme tieto podrobnosti, pokiaľ sú platné (tj. Do rutiny ste nezadali názov nesprávne napísanej tabuľky), potom sme pripravení, takže je to jednoducho otázka a) vymazania odkazu (ak deleteOriginal je nastavený na True) a import tabuľky.

Toto vám často prinesie výrazné zlepšenie výkonu, takže ak používate prepojené tabuľky, dôrazne vám odporúčam skontrolovať, aké zisky vám prinesie presun týchto tabuliek do lokálnych verzií - možno vás prekvapí!

Úvod autora:

Mitchell Pond je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane oprava SQL Server rezeň a vynikajúce softvérové ​​produkty na obnovenie. Pre viac informácií navštívte www.datanumen. S

Komentáre sú uzavreté.