Težave z referencami

Ste že naleteli na težavo, ko vam del kode, ki je še včeraj brezhibno deloval danes ne deluje več? Za povrh pa niste menjali niti verzije programa ali le tega kakorkoli spreminjali. Se zgodi, a kdo je kriv in kako rešiti zagato?

Krivec je nek proces, ki je nedavno na računalnik nekaj namestil, morda je bila to sistemska posodobitev Office-a ali Windows platforme. Namestitve pa včasih naredijo nekaj zmede v knjižnicah – te so podaljšana roka vsakega večjega programa, npr. datoteke tipa dll.

Knjižnice so komponente, ki zagotavljajo razširjeno delovanje saj povečujejo nabor funkcionalnosti ter hranijo ukaze, ki so osnova delovanja programa. V našem primeru MS Access zagotovo uporablja programski jezik VBA, enako kot ostali programi v Office paketu. MS Access in VBA sta dve bistveni knjižnici v vsakem projektu. Če Access ne ponuja nekaj, kar potrebujete (npr. ukaze za delo z bazami podatkov), boste izbrali ustrezno zunanjo knjižnico in jo povezali z vašim programom. Vendar pa dodajanje dodatnih knjižnic poveča možnosti, da bi lahko šlo kaj narobe.

Kakšne so tovrstne težave?

Vsako nameščanje, posodobitev ali odstranjevanje programske opreme ali operacijskega sistema lahko prepiše, odstrani ali odjavi knjižnice. Nato pa preproste funkcije, kot sta Date () ali Trim (), ne delujejo, MS Access (lahko tudi Excel ipd) pa ne znajo več preračunati datumskih operacij.

Kje si ogledam uporabljene knjižnice?

Če si želite ogledati knjižnice, na katere se je nanašal vaš projekt Access, odprite okno s kodo (npr. pritisnite Ctrl + G ali pa npr. Alt + F11) in v meniju Tools (Orodja) izberite Reference.

Če je knjižnica označena z MISSING, kliknite gumb Browse (Prebrskaj) in poiščite ustrezno datoteko za knjižnico. Z nekaj sreče ste že rešili problem.

Če knjižnica ni prikazana, jo boste morda morali ponovno registrirati. Kliknite gumb Windows Start in izberite Run (Zaženi). Vnesite regsvr32 in presledek, sledi naj celotna pot in datoteka knjižnice. Dodajte narekovaje, če knjižnica ali pot do le te vsebuje presledke, npr:
regsvr32 “c:\\Program files\Common files\microsoft shared\DAO\dao360.dll”.
Na tem mestu bi priporočal test.

Včasih težava ni odpravljena, dokler ne odjavite knjižnice in jo ponovno registrirate. V tem primeru odznačite knjižnico, ki v programu manjka in zaprite MS Access. Izvedite ukaz regsvr32 s parametrom »-u«:
regsvr32 –u “c:\\Program files\Common files\microsoft shared\DAO\dao360.dll”
Zdaj datoteka ni več registrirana kot knjižnica, nato pa ponovite ukaz za registracijo. S tem boste sistemu dopovedali, da je to knjižnica, ki jo potrebujete za delo.

Zdaj odprite MS Access in izberite referenčno knjižnico.

Ni pa vedno tako lahko kot doslej opisano. Večje težave se pojavijo, če imajo knjižnice predmete z istim imenom. Na primer, knjižnici DAO in ADO imata objekt Recordset, MS Access pa uporabi vedno prvo referenco kjer najde zahtevan ukaz. Torej v tem primeru pomaknite knjižnico DAO nad ADO in izvedite teste prej nedelujočega dela vašega programa.

V primeru DAO IN ADO explicitno navedite vsako deklaracijo tako, da polno zapišete knjižnico, ki jo želite uporabiti.

Dim rs as DAO.Recordset

Primerov podobnih težav povezanih z referencami je še kar nekaj, predlagam pa, da si pred spreminjanjem knjižnic naredite varnostno kopijo programa. Saj veste, morda zaidete v slepo ulico, pot nazaj pa je dolga.