Kako brzo ažurirati povezanu tablicu kada se promijeni naziv vanjske datoteke

Podijeli sada:

Povezane tablice mogu biti fantastično korisne (iako ne cijelo vrijeme naravno) – osobito kada imate posla s vanjskim informacijama koje se redovito mijenjaju. Tipičan primjer mogao bi biti kada vam dobavljač daje pristup svojoj datoteci s trenutnim mjesečnim cijenama. Ali što se događa kada izdaju datoteku sljedeći mjesec, a naziv datoteke se promijeni iz "Cjenik-01-01-2016" u "Cjenik-01-02-2016"? Prva stvar koja će se dogoditi je da će vaša veza prekinuti, pa ćete je morati ručno ažurirati. Svaki put kad promijene naziv datoteke. To vrijedi i za nazive tablica (naravno!). Pitate se postoji li način da to učinite brzo i jednostavno? Drago nam je što ste pitali – čitajte dalje i saznajte kako…

Postavljanje scene – scenarij

Upravitelj povezanih tablicaU ovom ću članku koristiti izmišljeni scenarij – 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 u DataNumen. Kako bismo znali koliko ćemo potrošiti na uredski materijal svaki mjesec, povezujemo se s tom datotekom u našoj bazi podataka za upravljanje uredom.

Promjena naziva datotekeProblem je u tome što, iako format datoteke ostaje isti, naziv datoteke se mijenja svaki mjesec. Prošli mjesec je bio „troškovi papirnice siječanj 2017.xls“, ovaj mjesec je „troškovi papirnice veljača 2017.xls“.

Nije velika promjena, siguran sam da ćete se složiti, ali osim ako ne prođemo kroz probleme ručnog preimenovanja datoteke (nakon što maknemo staru datoteku s puta ili je izbrišemo), ili prođemo kroz proces ponovno povezivanje tablice putem upravitelja povezanih tablica u Accessu.

Budući da to nismo željeli učiniti, stvorili smo sljedeći kod da to učinimo umjesto toga – puno lakše kao što sam siguran da ćete 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šnjavajući šifru

Kao što vidite, prosljeđujemo naziv (povezane) tablice, zajedno s nazivom nove datoteke s kojom bi tablica trebala biti povezana. Naziv datoteke trebao bi uključivati ​​punu putanju do datoteke. Jedno potencijalno područje s kojim biste se mogli boriti na početku je dobivanje ispravnog formata za niz za povezivanje koji treba smjestiti u varijablu "newConnect". Iako postoji mnogo izvora za pronalaženje ispravnog formata, jedan od najlakših koje sam pronašao je jednostavno pogledati niz za povezivanje trenutno povezane tablice. Da biste to učinili, jednostavno dodajte sljedeći redak izravno ispod retka "Set objTableDef = objDB.TableDefs(tableName)":

Debug.Print (objTableDef.Connect)

To će ispisati postojeći niz veze u prozor za otklanjanje pogrešaka/odmah uređivača koda (ako to već nije vidljivo, pritisnite CTRL-G na zaslonu uređivača VBA koda da biste promijenili vidljivost neposrednog prozora prije pokretanja koda.

Upozorenje

Kao i uvijek, nemojte zaboraviti da dok vam gornji isječak koda može pomoći uštedjeti vrijeme kada trebate promijeniti datoteku na koju je tablica povezana, ono što vam ne može pomoći ako naiđete na Oštećenje datoteke pristupa, pa svakako čuvajte sigurnosne kopije i znajte kome se obratiti ako ništa drugo ne uspije.

Uvod za autora:

Mitchell Pond je stručnjak za oporavak podataka u DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući popravak oštećenja SQL-a i excel softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com

Podijeli sada:

Komentari su zatvoreni.