Kako pretvoriti povezanu tabelu u lokalnu tabelu u vašem pristupu

Podijeli sada:

Već smo to rekli, ali vrijedi ponoviti – povezane tabele mogu biti zaista korisne u vašim bazama podataka iz više razloga. Ali jedan veliki nedostatak povezanih tabela je performanse – pokretanje upita prema njima, posebno ako nisu Microsoft Access tabele (tj. ako su Excel, CSV ili DBF datoteke). Oni mogu biti bolno spori za rad. Postoji nekoliko načina na koje možete to zaobići – ovdje ćemo raditi na jednom, a to je da pretvorimo povezanu tablicu u lokalnu tablicu. Naravno – to možete učiniti ručno kopiranjem/lijepljenjem tablica, ali ako imate puno toga za rukovati, raditi to u kodu je mnogo, mnogo lakše, pa da vidimo kako…

Zašto je važno navesti svoje potrebe

Pristupite povezanoj tabeliPrije svega, hajde da opišemo šta zapravo želimo da kod radi – ovo čini mnogo lakšim kreiranje koda na prvom mjestu, pa bih vam predložio da to učinite svaki put kada razmišljate o kreiranju nekog VBA koda , pomaže da razjasnite svoj cilj:

„S obzirom na ime povezane tabele, uvezite tu tabelu u bazu podataka kao lokalnu tabelu da poboljšate performanse – opciono istovremeno izbrišite vezu iz baze podataka“

Obično, kada konvertujete povezanu tabelu u lokalnu tabelu, želećete da izbrišete vezu, ali u donjem primeru koda dali smo vam mogućnost da zadržite i originalnu povezanu datoteku, ali ako to učinite, vaš novouvezena tabela neće zamijeniti vašu povezanu tablicu u vašim upitima itd., tako da nećete vidjeti povećanje performansi koje bi vam dala lokalna tablica. Jednom kada budete sigurni da kod radi kako vam je potrebno, preporučujemo da uvijek izbrišete original – na kraju krajeva, vi zapravo ne brišete stvarnu tabelu, već samo vezu do nje.

A riječ oprez

Prije nego što dođemo do koda – samo kratka riječ opreza, ne možete puno učiniti ako se povezujete na oštećena Access baza podataka – ako Access ne može da pročita datoteku, malo je verovatno da će moći da uveze iz nje.

Dakle – na šifru…

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

Šta kod radi

VBA kodVećina koda će biti prilično očigledna, ali postoje neke ključne tačke koje treba uzeti u obzir. Prvo, detalje o tome koja datoteka se povezuje dobijamo gledajući u (obično skrivenu) tabelu Access sistema „MSysObjects“. Pošto je sasvim moguće (i vjerovatno) da ste povezanoj tabeli dali novi lokalni alias, sljedeće što trebamo uraditi je da dobijemo naziv originalne tabele – opet, iz tabele „MSysObjects“.

Sada kada imamo te detalje, sve dok su validni (tj. niste uneli pogrešno napisano ime tabele u rutinu), onda smo spremni da krenemo tako da je jednostavno pitanje a) brisanja veze (ako deleteOriginal je postavljen na True) i uvoz tabele.

Ovo će vam često dati prilično dramatična poboljšanja u performansama, tako da ako koristite povezane tabele, toplo bih vam preporučio da provjerite kakve će vam dobiti premještanje tih tablica na lokalne verzije – možda ćete biti iznenađeni!

Uvod za autora:

Mitchell Pond je stručnjak za oporavak podataka DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući Popravak SQL Server fajl i Excel softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com

Podijeli sada:

Komentari su zatvoreni.