Prehod aplikacije na izdajo 2.0
Ta navodila opisujejo, kako aplikacijo Access s kontrolniki WKL prenesete z izdaje 1.x na izdajo 2.0 knjižnice WKL Forms Object Library. V izdaji 2.0 ima knjižnica tipov novo ime. Vsako aplikacijo, ki to ime navaja v kodi VBA ali v sklicih, morate enkrat prilagoditi.
Predpogoji: imeti morate izvorno obliko aplikacije, torej datoteko ACCDB ali projekt, ki ga zgradite z orodjem za gradnjo ali z WKL Office SDK. Datoteke ACCDE ni mogoče spreminjati, zato jo znova zgradite iz njene datoteke ACCDB.
Pregled rešitve
| Izdaja 1.x | Izdaja 2.0 | |
|---|---|---|
| Ime knjižnice v VBA | WklComponents | WklForms |
| Sklic (Orodja › Sklici, Tools › References) | WKL Forms 1.x Object Library | WKL Forms 2.0 Object Library |
ProgID-ji za CreateObject | WklComponents.Texts, WklComponents.Application … | WklForms.Texts, WklForms.Application … |
Err.Source pri napakah kontrolnikov | WklComponents | WklForms |
| Domorodni zagonski modul | Wkl.Access.Components.dll | Wkl.Forms.ObjectLibrary.dll |
ID knjižnice, ID-ji razredov in člani kontrolnikov so enaki kot v izdaji 1.68. Obrazci in poročila zato obdržijo kontrolnike WKL z vsemi nastavitvami. Spremeniti je treba le kodo in sklice, ki navajajo ime knjižnice.
Za posameznega uporabnika sistema Windows je lahko registrirana le ena od obeh izdaj. Registracija izdaje 2.0 odstrani
registracijo izdaje 1.x, tudi ProgID-je WklComponents.*. Če pozneje znova registrirate izdajo 1.x, ta nadomesti
izdajo 2.0. Zato vse aplikacije, s katerimi dela uporabnik, prenesite hkrati.
Postopek
- Registrirajte izdajo 2.0 v razvojnem računalniku (Namestitev izdanega paketa). Od takrat ProgID-ji
WklComponents.*v tem računalniku niso več registrirani:CreateObject("WklComponents.Texts")in podobni klici se končajo z napako izvajanja 429. - Odprite podatkovno zbirko brez zagonske kode. Med odpiranjem držite tipko Shift, da se zagonski obrazec in makro
AutoExecne zaženeta s starimi sklici. - Preverite sklic. V urejevalniku VBA izberite Orodja › Sklici (Tools › References). Access ob odpiranju podatkovne zbirke prek ID-ja knjižnice poveže sklic z registrirano izdajo 2.0. Če je sklic WKL Forms 1.x Object Library kljub temu označen kot MISSING (v nemškem Officeu „NICHT VORHANDEN“), ga počistite in izberite WKL Forms 2.0 Object Library.
- Zamenjajte ime knjižnice v kodi. Izberite Urejanje › Zamenjaj (Edit › Replace), poiščite
WklComponents, ga zamenjajte zWklFormsin kot obseg izberite Trenutni projekt (Current Project). Tako zajamete deklaracije, kot jeDim tree As WklComponents.WklTreeView, ProgID-je vCreateObject("WklComponents.Texts")in primerjave zErr.Source. - Poiščite ime zunaj modulov. Korak 4 ne zajame besedila, ki ni koda VBA, na primer ProgID-ja v tabeli, poizvedbi ali makru. V predmetih podatkovne zbirke poiščite
WklComponentsin najdena mesta spremenite enako. - Prevedite. Izberite Razhrošči › Prevedi (Debug › Compile), popravite morebitne preostale vrstice in shranite. Nato iz datoteke ACCDB izdelajte novo datoteko ACCDE.
Projekt, zgrajen iz izvornih datotek
Pri projektu, ki ga zgradite z tools\build\Build-AccessApp.ps1 ali z WKL Office SDK, spremenite izvorne datoteke
namesto podatkovne zbirke:
- V razdelku
referencesdatotekeaccess-app.jsonspremenite{ "library": "WklComponents", "major": 1, "minor": ... }v{ "library": "WklForms", "major": 2, "minor": 0 }(access-app.json). Dokler kateri od sklicev navajaWklComponents, se gradnja ustavi s sporočilom. - V datoteki
source\references.jsonprojekta WKL Office SDK pri sklicu z ID-jem knjižnice{A37D549E-FCD0-48EC-8B14-C7323B747E4F}nastavite"name"naWklForms,"major"na2in"minor"na0. - V izvoženih modulih, obrazcih in poročilih zamenjajte
WklComponentszWklForms. - Znova zgradite projekt. Nova datoteka
app-manifest.jsonv razdelkurequiresnavaja knjižnicoWklFormsz različico 2.0 (app-manifest.json).
Rezultat
Aplikacija se prevede z WKL Forms 2.0 Object Library, njeni obrazci pa prikazujejo kontrolnike WKL kot doslej. V
računalnike uporabnikov jo uvajajte samo skupaj z izdajo 2.0 (Uvajanje aplikacije s kontrolniki WKL v računalnike
uporabnikov), in sicer z WKL Bootstrapper 3.1 ali novejšim: šele od različice 3.1 zaganjalnik
prepozna aplikacije za izdajo 2.0 in registrira Wkl.Forms.ObjectLibrary.dll, starejše različice poznajo le izdajo
1.x. Aplikacija, ki še ni prenesena, lahko v računalniku z izdajo 2.0 deloma deluje naprej, ker Access njen sklic
poveže prek istega ID-ja knjižnice. Vse, kar uporablja ProgID-je WklComponents.* ali primerja Err.Source z
WklComponents, pa tam ne deluje. Zagotovljeno je delovanje le z glavno različico, s katero je bila aplikacija
zgrajena.