WKL Office SDK: nadzor različic in gradnja za Microsoft Access
WKL Office SDK omogoča, da aplikacijo Microsoft Access vodite v sistemu git ali Subversion in spremembe pregledujete za vsak obrazec, poizvedbo in modul posebej. Datoteko ACCDB ali ACCDE SDK zgradi iz natančno določenega stanja izvornih datotek, ne iz podatkovne zbirke, ki jo je nekdo nazadnje shranil. Obrazce, poročila in kodo VBA še naprej oblikujete v programu Access. SDK jih prenaša med programom Access in besedilnimi izvornimi datotekami ter iz njih zgradi podatkovno zbirko.
Podprta konfiguracija: Windows 11 z 32- ali 64-bitnim programom Access iz paketa Microsoft 365. Ta izdaja ne podpira programa Access od različice 2016 do 2021, sistema Windows 10 in gradnje samo z izvajalnim okoljem
Access Runtime. Spremembe posameznih izdaj so opisane v datoteki CHANGELOG.md v paketu izdaje.
Izhodišče brez SDK
Aplikacija Access je ena sama binarna datoteka, v kateri so obrazci, poročila, poizvedbe, koda, tabele in nastavitve. Dokler na eni kopiji dela en razvijalec, je to dovolj. Ni pa več dovolj, ko se pojavi katero od naslednjih vprašanj.
- Kaj se je spremenilo? Dveh kopij datoteke ACCDB ni mogoče primerjati po vrsticah. Kdor išče vzrok napake, mora stare kopije odpirati drugo ob drugi.
- Kdo dela na aplikaciji? Dva razvijalca svojega dela ne moreta združiti v eno datoteko. Eden mora obrazce drugega prenesti ročno, sprememba, shranjena v napačni kopiji, pa se izgubi brez sledu.
- Kaj dobijo uporabniki? Izdaja nastane iz razvijalčeve delovne datoteke ACCDB, ki se prevede v ACCDE skupaj z vsem, kar je bilo tisti dan v njej: s preizkusnimi obrazci, staro povezavo ali nedokončanim modulom.
- Ali je mogoče aplikacijo preveriti samodejno? Skript ne more ugotoviti, ali je aplikacija popolna in ali se prevede. To pokaže šele odpiranje v programu Access.
Access sicer zna posamezne objekte zapisati kot besedilo (SaveAsText, LoadFromText), vendar Microsoft teh metod
uradno ne dokumentira, poleg tega pa ne zajamejo tabel, podatkov, sklicev in lastnosti podatkovne zbirke. Celotne
aplikacije samo iz njih ni mogoče znova zgraditi.
Kaj se spremeni z SDK
Odgovori na ta štiri vprašanja se nadgrajujejo. Ko je aplikacija zapisana kot besedilo, je spremembe mogoče prebrati. Ko so spremembe berljive, lahko na aplikaciji dela več ljudi hkrati. Ko so izvorne datoteke popolne, je iz njih mogoče zgraditi podatkovno zbirko. Ko pa je gradnja en sam ukaz, lahko teče brez posredovanja človeka.
| Vprašanje | Z SDK |
|---|---|
| Kaj se je spremenilo? | Vsak obrazec, poročilo, poizvedba, makro in modul je svoja besedilna datoteka. git log pokaže, kdaj se je spremenil, wkl-office diff pokaže spremenjene vrstice, wkl-office changes pa navede vse razlike med podatkovno zbirko, odprto v programu Access, izvornimi datotekami in zadnjim commitom (potrditvijo sprememb v repozitoriju). |
| Kdo dela na aplikaciji? | Vsak razvijalec potrdi svoje besedilne izvorne datoteke, git pa jih združi in spore pokaže za vsako datoteko posebej. Git pri spajanju brez sporov ne preveri, ali je rezultat vsebinsko pravilen: zgradite ga in združene obrazce ter poročila preizkusite v programu Access. V zahtevah za spajanje (pull requests) so obrazci, poizvedbe in moduli prikazani kot besedilo, zato jih je mogoče pregledati. |
| Kaj dobijo uporabniki? | wkl-office build -c Release zgradi ACCDE iz potrjenih izvornih datotek, ne iz delovne kopije posameznega razvijalca. Iste izvorne datoteke, zgrajene z istim programom Access, istimi sklici in isto kodno stranjo, dajo iste objekte, tabele, podatke in nastavitve; datoteka sama pa bajtno ni enaka (kaj je ponovljivo). |
| Ali je mogoče aplikacijo preveriti samodejno? | wkl-office check najde neveljavne izvorne datoteke, manjkajoče sklice ali gonilnike ODBC, neustrezno 32- ali 64-bitno različico in gesla, zapisana v izvorne datoteke, še preden se Access sploh zažene. Vsak ukaz vrne določeno izhodno kodo, z možnostjo --json pa en objekt JSON. dotnet build izvede isto gradnjo iz okolja MSBuild. |
Kako deluje
graph TD
A[Access: oblikovanje obrazcev, poročil, kode] -->|wkl-office export / commit| S[Izvorne datoteke v git ali svn]
S -->|wkl-office build| B[build/Debug/App.accdb]
S -->|wkl-office build -c Release| R[build/Release/App.accde]
B -->|odpiranje v programu Access| A
S -->|CI: check, build, roundtrip| C[Izhodna koda + JSON]Merodajno je stanje v repozitoriju. Datoteki ACCDB in ACCDE sta le rezultat gradnje in se v repozitorij nikoli ne potrdita.
- Projektna datoteka (
<name>.acproj): datoteka XML za MSBuild, ki določa aplikacijo, mapo z njenimi izvornimi datotekami in konfiguracije gradnje (referenčni priročnik). - Izvorne datoteke (
source/): po ena datoteka za vsak objekt, tabelo in model, v stalni razporeditvi (referenčni priročnik). Objekti so shranjeni tako, kot jih zapiše Access, le brez vrednosti, ki se spremenijo ob vsakem shranjevanju. Tabele so shranjene kot shema JSON, začetni podatki kot vrstice JSON, poleg tega pa še sklici, lastnosti podatkovne zbirke, tema, slike, trakovi in modeli WKL Forms Object Library. - Konfiguracije (Debug, Release ali lastna imena) določajo, ali nastane ACCDE, za kateri način modela aplikacije je namenjena in s katerim profilom povezave se povežejo tabele.
- Za oblikovanje ostaja Access. SDK program Access, nameščen na računalniku, upravlja od zunaj, kot ločen proces. Oblikovalnikov obrazcev in poročil ne nadomešča.
En razvojni cikel
Razvijalec, ki ima projekt v svoji delovni kopiji, dela takole:
- Zgradi delovno podatkovno zbirko iz izvornih datotek:
wkl-office build Stranke.acprojzapišebuild/Debug/Stranke.accdb. - Aplikacijo spreminja v programu Access kot doslej: oblikuje obrazec, ureja modul in shrani.
- Preveri, kaj se je spremenilo:
wkl-office changes Stranke.acprojnavede spremenjene objekte in za vsakega naslednji korak,wkl-office diff Stranke.acproj form:frmStrankepa pokaže spremenjene vrstice. - Potrdi spremembe:
wkl-office commit Stranke.acproj -m "Obrazec strank: novo polje za ID za DDV"stanje še enkrat preveri, spremenjene objekte izvozi v izvorne datoteke in jih potrdi. V oddaljeni repozitorij se ne pošlje nič, dokler ne zaženetewkl-office push. - Pripravi izdajo: na vsakem računalniku z istim programom Access in istimi sklici
wkl-office build Stranke.acproj -c Releaseiz tega commita zgradi ACCDE.
Spremembe z druge strani, na primer commit sodelavca ali urejanje v programu Visual Studio Code, prenesete v odprto
podatkovno zbirko z wkl-office sync. Objekt, ki je bil spremenjen na obeh straneh, se nikoli ne prepiše: izvajanje se
ustavi, dokler se ne odločite, katera različica velja. Vadnica ta cikel prikaže na resnični podatkovni
zbirki, dodatek za Access pa iste korake ponuja na zavihku traku v programu
Access.
Zahteve in omejitve
- Windows 11 s polno različico programa Microsoft Access, nameščeno in aktivirano za uporabnika, ki gradi, izvajalno okolje .NET 10 ter git (ali
svn.exe) na poti PATH. Podrobnosti so v navodilih Namestitev WKL Office SDK. - Gradnja potrebuje interaktivno sejo Windows s programom Access; kot storitev ne deluje. Access teče skrito, vsak korak ima časovno omejitev, pogovorno okno, ki ga Access prikaže, pa SDK prekliče in sporoči, namesto da bi izvajanje obstalo. Za prijavo računa, s katerim se gradi, in za to, da njegova seja ostane odprta, poskrbi sistem za gradnjo.
- Česa izvoz ne zajame. Vrednosti, ki jih Access zapiše znova ob vsakem shranjevanju, ter stanje, vezano na posamezen računalnik ali uporabnika, so namenoma odstranjeni. Izvoz ne zajame tudi delov aplikacije, ki jih SDK ne obdeluje: nekaterih vrst objektov, neznanih lastnosti tabel, polj in podatkovne zbirke ter povezanih tabel zunaj upravitelja povezav (Linked Tables Manager). Za neznane lastnosti izpiše opozorilo, za vrste objektov ne. Nov projekt zato enkrat preverite z
wkl-office roundtripin preberite razdelek Česa izvoz ne ohrani. - SDK aplikacije ne namešča na računalnike uporabnikov (to opravi WKL Bootstrapper) in ne vodi različic podatkov v produkcijskih podatkovnih zbirkah.
Naslednji korak
- Vadnica: aplikacija Access pod nadzorom različic – od obstoječe datoteke ACCDB do prvega commita
Prehod z drugega orodja
Ta razdelek je pomemben le, če aplikacijo že hranite kot besedilo z drugim orodjem. wkl-office migrate tak projekt
enkrat pretvori, starega projekta pa pri tem ne spreminja.
- DATEC Access SDK (
msaccess-sdk), samostojno orodje, ki prav tako hrani objekte Access kot besedilo: Selitev projekta DATEC Access SDK. - Orodje za gradnjo WKL Forms Object Library (
access-app.json), predhodnik tega SDK za aplikacije, zgrajene z WKL Forms Object Library: Selitev projekta orodja za gradnjo. - Dodatek WKL Extensions (
WklExtensions.accda), čigar meni je odpiral oblikovalnike WKL Forms Object Library: Prehod z dodatka WKL Extensions.
Sorodne teme
- Avtomatizacija: Gradnja z dotnet build, Preizkušanje aplikacije, Referenčni priročnik ukazne vrstice – vsi ukazi, možnosti, izhodne kode in polja JSON