Kako brzo ažurirati povezanu tabelu kada se promeni ime eksterne datoteke

Podijeli sada:

Povezane tabele mogu biti fantastično korisne (iako, naravno, ne stalno) – posebno kada imate posla sa eksternim informacijama koje se redovno menjaju. Tipičan primjer može biti kada vam dobavljač daje pristup njihovoj trenutnoj mjesečnoj cijeni. Ali šta se dešava kada izdaju fajl sledećeg meseca, a naziv fajla se promeni iz „Cenovnik-01-01-2016” u „Cenovnik-01-02-2016”? Prva stvar koja će se dogoditi je da će se vaš link pokvariti, tako da ćete ga morati ručno ažurirati. Svaki put kada promijene ime datoteke. To važi i za imena tabela (naravno!). Pitate se da li postoji način da se to uradi brzo i jednostavno? Drago nam je što ste pitali – čitajte dalje i saznajte kako…

Postavljanje scene – scenario

Upravitelj povezanih tabelaU ovom članku ću koristiti izmišljeni scenario – ali siguran sam da ćete ga brzo prepoznati!

Svakog mjeseca, Acme trading nam šalje ažurirani cjenik za sav potrošni materijal koji se koristi DataNumen. Kako bismo znali koliko ćemo svakog mjeseca trošiti na stacionarni materijal, povezujemo se s tim fajlom u našoj bazi podataka za upravljanje uredima.

Promijenite naziv datotekeProblem je u tome što se, iako format datoteke ostaje isti, naziv datoteke mijenja svakog mjeseca. Prošlog mjeseca je bio „stacionar costs Jan 2017.xls”, ovaj mjesec je “stacionaran costs februar 2017.xls”.

Nije velika promjena, siguran sam da ćete se složiti, ali osim ako ne prođemo kroz probleme s ručnim preimenovanjem datoteke (nakon što pomaknemo staru datoteku s puta ili je izbrišemo), ili prođemo kroz proces ponovno povezivanje tabele preko upravitelja povezanih tabela u Accessu.

Budući da to nismo htjeli da radimo, umjesto toga smo kreirali sljedeći kod – mnogo lakše kao što ćete sigurno vidjeti:

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

Objašnjavanje koda

Kao što možete vidjeti, mi prosljeđujemo (povezano) ime tabele, zajedno sa imenom nove datoteke sa kojom tabela treba da bude povezana. Ime datoteke treba da sadrži punu putanju do datoteke. Jedna potencijalna oblast sa kojom se možete boriti u start dobija ispravan format za string veze koji se postavlja u varijablu “newConnect”. Iako postoji mnogo izvora za pronalaženje ispravnog formata, jedan od najlakših koje sam pronašao je jednostavno pogledati niz veze trenutne povezane tabele. Da biste to učinili, jednostavno dodajte sljedeći red direktno ispod reda „Set objTableDef = objDB.TableDefs(tableName)”:

Debug.Print (objTableDef.Connect)

To će odštampati postojeći niz veze u prozor za otklanjanje grešaka/neposredan prozor uređivača koda (ako to već nije vidljivo, pritisnite CTRL-G unutar ekrana VBA uređivača koda da biste uključili vidljivost prozora Immediate prije pokretanja koda.

Upozorenje

Kao i uvijek, ne zaboravite da, iako vam gornji isječak koda može pomoći da uštedite vrijeme kada trebate promijeniti datoteku na koju je tabela povezana, ono što ne može učiniti je da vam pomogne ako naiđete na bilo koju Oštećenje datoteke pristupa, zato vodite računa da čuvate sigurnosne kopije i znate gdje se obratiti ako sve drugo ne uspije.

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 popraviti SQL oštećenja i Excel softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com

Podijeli sada:

Komentari su zatvoreni.