Kako hitro posodobiti povezano tabelo, ko se spremeni ime zunanje datoteke

Skupna raba zdaj:

Povezane tabele so lahko fantastično uporabne (čeprav seveda ne ves čas) - še posebej, če imate opravka z zunanjimi informacijami, ki se redno spreminjajo. Tipičen primer je lahko, ko vam dobavitelj omogoči dostop do trenutne mesečne datoteke s cenami. Toda kaj se zgodi, ko datoteko izdajo naslednji mesec in se ime datoteke spremeni iz »Cenik-01-01-2016« v »Cenik-01-02-2016«? Prva stvar, ki se bo zgodila, je, da se bo povezava prekinila, zato jo boste morali ročno posodobiti. Vsakič, ko spremenijo ime datoteke. To velja tudi za imena tabel (seveda!). Ali lahko to vprašate hitro in enostavno? Veseli smo, da ste vprašali - preberite in ugotovite, kako ...

Nastavitev scene - scenarij

Upravitelj povezanih tabelV tem članku bom uporabil izmišljeni scenarij - toda tistega, za katerega sem prepričan, da ga boste hitro prepoznali!

Vsak mesec nam Acme trgovanje pošlje posodobljen cenik vseh potrošnih materialov, uporabljenih na DataNumen. Da bomo vedeli, koliko bomo mesečno porabili za nepremične, se povežemo s to datoteko v naši zbirki podatkov o upravljanju pisarn.

Spremenite ime datotekeTežava je v tem, da čeprav oblika datoteke ostane enaka, se ime datoteke spreminja vsak mesec. Prejšnji mesec je bilo »stroški pisarniškega materiala januar 2017.xls«, ta mesec pa »stroški pisarniškega materiala februar 2017.xls«.

Ni veliko sprememb. Prepričan sem, da se boste strinjali, toda če ne bomo šli skozi težave z ročnim preimenovanjem datoteke (ko bomo staro datoteko premaknili s poti ali jo izbrisali) ali če bomo šli skozi postopek ponovno povezovanje tabele prek povezanega upravitelja tabel v Accessu.

Ker tega nismo želeli narediti, smo namesto tega ustvarili naslednjo kodo - veliko lažje, saj sem prepričan, da boste videli:

Public Sub UpdateLink (tableName As String, newFileName As String)
    Dim objDB As Database
    Dim objTableDef As TableDef
    Dim newConnect as String
    
    Set objDB = CurrentDb
    Set objTableDef = objDB.TableDefs(tableName)

    'format of the connection string in our case, for example, is:
    ' Excel 5.0;HDR=YES;IMEX=2;DATABASE=File name including path and extension type
    newConnect = "Excel 5.0;HDR=YES;IMEX=2;DATABASE=" & newFileName
    objTableDef.Connect = newConnect
    objTableDef.RefreshLink

    Set objTableDef = Nothing
    Set objDB = Nothing
End Sub

Pojasnilo kode

Kot lahko vidite, posredujemo ime (povezane) tabele skupaj z imenom nove datoteke, s katero naj bo tabela povezana. Ime datoteke mora vsebovati celotno pot do datoteke. Eno od področij, s katerim se lahko na začetku spopadate, je pravilna oblika povezovalnega niza, ki ga vstavite v spremenljivko »newConnect«. Čeprav obstaja veliko virov za iskanje pravilne oblike, je eden najlažjih, ki sem jih našel, preprosto ogled povezovalnega niza trenutno povezane tabele. To storite tako, da preprosto dodate naslednjo vrstico neposredno pod vrstico »Set objTableDef = objDB.TableDefs(tableName)«:

Debug.Print (objTableDef.Connect)

To bo natisnilo obstoječi niz povezave v okno za odpravljanje napak / takojšnje okno urejevalnika kode (če to še ni vidno, pritisnite CTRL-G na zaslonu urejevalnika kod VBA, da preklopite vidnost okna Takoj, preden zaženete kodo.

Opozorilo

Kot vedno ne pozabite, da vam lahko zgornji delček kode prihrani čas, ko morate spremeniti datoteko, na katero je povezana tabela, vendar vam ne more pomagati, če naletite na katero koli Dostop do škode v datoteki, zato poskrbite, da imate varnostne kopije in veste, kam se obrniti, če vse drugo ne uspe.

Uvod avtorja:

Mitchell Pond je strokovnjak za obnovitev podatkov v DataNumen, Inc., ki je vodilna na svetu na področju tehnologij za obnovitev podatkov, vključno z popraviti škodo SQL in excel programske izdelke za obnovitev. Za več informacij obiščite www.datanumen.com

Skupna raba zdaj:

Komentarji so zaprti.