Cum să convertiți un tabel conectat într-un tabel local în accesul dvs

Am mai spus-o, dar merită repetat – tabelele legate pot fi cu adevărat utile în bazele de date din mai multe motive. Dar un mare dezavantaj al tabelelor legate este performanța - rularea de interogări împotriva lor, mai ales dacă nu sunt tabele Microsoft Access (adică dacă sunt Excel, CSV sau DBF dosare). Lucrul cu ei poate fi dureros de lenți. Există câteva moduri în care puteți rezolva asta – vom lucra cu un singur mod aici, și acesta este să convertiți un tabel legat într-un tabel local. Sigur – ai putea face acest lucru manual prin copierea/lipirea tabelelor, dar dacă ai multe de rezolvat, este mult, mult mai ușor să faci asta în cod, așa că hai să vedem cum...

De ce este important să vă conturați nevoile

Accesați tabelul legatÎn primul rând, să descriem ce vrem de fapt să facă codul – dacă faceți acest lucru, este mult mai ușor să creați codul în primul rând, așa că vă sugerez să faceți acest lucru de fiecare dată când vă gândiți să creați un cod VBA. , vă ajută să vă clarificați scopul:

„Având în vedere numele unui tabel legat, importați acel tabel în baza de date ca tabel local pentru a îmbunătăți performanța – opțional ștergeți legătura din baza de date în același timp”

În mod normal, atunci când convertiți un tabel legat într-un tabel local, veți dori să ștergeți linkul, dar în exemplul de cod de mai jos v-am oferit opțiunea de a păstra și fișierul legat original, dar făcând acest lucru, dvs. tabelul nou importat nu va înlocui tabelul conectat în interogările dvs. etc., așa că nu veți vedea câștigul de performanță pe care vi l-ar oferi un tabel local. Odată ce vă simțiți confortabil că codul funcționează așa cum aveți nevoie, vă recomandăm să ștergeți întotdeauna originalul - la urma urmei, nu ștergeți de fapt tabelul real, ci doar linkul către acesta.

Un cuvânt de precauție

Înainte de a ajunge la cod – doar un scurt cuvânt de precauție, nu puteți face multe dacă vă conectați la un baza de date Access deteriorată – dacă Access nu poate citi fișierul, este foarte puțin probabil să poată importa din el.

Așa că – la cod…

Sub MakeTableLocal(tableName As String, opțional deleteOriginal As Boolean = True) Dim DbPath As Variant, TblName As Variant 'get path of linked table DbPath = DLookup("Database", "MSysObjects", "Name='" & tableName & "' Și Type=6") 'Obține numele real al tabelului legat (în cazul în care i s-a dat un alias în link) TblName = DLookup ("ForeignName", "MSysObjects", "Name='" & tableName & "' Și Type=6") Dacă IsNull(DbPath) Atunci „Fie un tabel local, fie un nume de tabel greșit a fost furnizat, ieșiți din sub Exit Sub End If „Ștergeți tabelul legat Dacă ștergețiOriginal Atunci DoCmd.DeleteObject actTable, tableName Altceva „Dacă nu ștergem tabelul existent, va trebui să redenumim tabelul importat pentru a evita „suprascrierea lui etc tableName = tableName & „ - local” Sfârșit Dacă „import tabelul ca tabel local, neconectat DoCmd.TransferDatabase acImport, „Microsoft Acces", DbPath, actTable, TblName, tableName End Sub

Ce face codul

Cod VBAMost codul va fi destul de evident, dar există câteva puncte cheie de reținut. În primul rând, obținem detaliile la ce fișier este legat, căutând în tabelul de sistem Access (de obicei ascuns) „MSysObjects”. Deoarece este perfect posibil (și probabil) să fi dat tabelului legat un nou alias local, următorul lucru pe care trebuie să-l facem este să obținem numele tabelului original – din nou, din tabelul „MSysObjects”.

Acum că avem acele detalii, atâta timp cât sunt valide (adică nu ați furnizat un nume de tabel scris greșit rutinei), atunci suntem gata să mergem, așa că este pur și simplu o chestiune de a) ștergerea linkului (dacă deleteOriginal este setat la True) și importul tabelului.

Făcând acest lucru vă va aduce adesea îmbunătățiri destul de dramatice ale performanței, așa că, dacă utilizați tabele conectate, vă recomand să verificați ce câștiguri vă va oferi mutarea acestor tabele în versiunile locale – ați putea fi surprins!

Introducerea autorului:

Mitchell Pond este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv repara SQL Server fişier și produse software de recuperare Excel. Pentru mai multe informații vizitați www.datanumen.com

Lasă un comentariu

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate *