Access · VBA · Delphi · .NET
Na vaši programski opremi temelji vaše poslovanje. Posodobite jo, ne da bi začeli znova
Poslovno ključne aplikacije še naprej razvijamo – v Accessu in VBA, v Delphiju ali na proizvodnih podatkovnih bazah – in zamenjamo le tiste dele, ki so dosegli svoje meje. Za Microsoft Access orodja za to razvijamo sami.
Izhodišče
Kdaj preizkušena aplikacija postane tveganje
Redko zato, ker ne bi več delovala. Največkrat zato, ker si je nihče več ne upa spreminjati.
- Ena datoteka, brez zgodovine. Aplikacija je datoteka ACCDB na omrežnem pogonu. Kdo je kaj spremenil in kdaj, ni mogoče ugotoviti, in če hkrati delata dva razvijalca, drug drugemu prepišeta spremembe.
- Znanje v glavah nekaj ljudi. Poslovna pravila so zapisana v obrazcih, poizvedbah in kodi VBA – pogosto nikjer drugje.
- Gesla na vsaki delovni postaji. Povezava s SQL Serverjem je skupaj z geslom podatkovne baze vgrajena v aplikacijo, od zunaj pa je dostop mogoč le prek VPN-ja.
- Otok. Aplikacija ni povezana s spletnimi storitvami, sistemom ERP ali orodji za poročanje, zato se podatki izvažajo in ročno usklajujejo.
- Zastarel uporabniški vmesnik. Neprekinjeni obrazci in gnezdeni podobrazci tam, kjer uporabniki danes pričakujejo drevesni pogled, mrežo s seštevki ali Ganttov diagram.
Zakaj je razvoj od začetka le redko pravi prvi korak
Vrednost aplikacije, ki se je razvijala več let, je v njenih pravilih: v izjemah, preverjanjih in postopkih, ki so se sčasoma nabrali v obrazcih, poizvedbah in kodi. Vse to mora nova aplikacija znova odkriti, opisati in preizkusiti – stari sistem pa je treba ves ta čas še naprej vzdrževati.
Zato najprej poskrbimo, da je aplikacijo spet mogoče spreminjati: izvorna koda pod nadzorom različic, urejene povezave z drugimi sistemi in uporabniški vmesnik, s katerim ljudje radi delajo. Posamezen del zamenjamo šele, ko doseže svoje meje – na primer ko podatki presežejo 2 GB, kolikor jih sprejme datoteka Access, ali ko mora z aplikacijo hkrati delati več lokacij.
Tudi takrat postopoma: obseg vsakega koraka določimo vnaprej, vrnitev na prejšnje stanje in skladnost podatkov pa načrtujemo in preizkusimo, preden preklopimo. Če stari in novi sistem nekaj časa vzporedno zapisujeta podatke, je usklajevanje del načrta.
Iz prakse · Kemijska industrija · od leta 2003
Trije poslovno ključni sistemi, ki smo jih razvijali dve desetletji – upravljanje naprav, informacijski sistem delavnice in upravljanje skladišča: nadgrajevani v Delphiju, postopoma preneseni na .NET 8, z uporabniškim vmesnikom DevExpress, optimizacijo podatkovnih baz in CI/CD.
Štiri poti – odvisno od tega, kje se zatika
Razvoj pod nadzorom različic
Aplikacija Access kot izvorna koda v Gitu: spremembe pregledujete po obrazcih in modulih, datoteko ACCDE pa zgradite iz točno določene različice.
Nov vmesnik, ista poslovna logika
Drevesni pogledi, podatkovne mreže z združevanjem in seštevki, Ganttov diagram in navigacija – kot kontrolniki na obrazcih, ki jih že imate.
Povezovanje namesto izolacije
Spletne storitve in JSON neposredno v VBA; podatki SQL Serverja prek podatkovnega prehoda namesto z geslom na vsaki delovni postaji.
Postopen prehod na .NET
Kjer je del res treba zamenjati: kos za kosom, z dogovorjenim obsegom in preizkušeno možnostjo vrnitve na prejšnje stanje – tako kot pri zgornjih sistemih v Delphiju.
V čem se razlikujemo
Lastna orodja namesto prosojnic: ekosistem WKL Access
Za Access sami razvijamo orodja, na katera se posodobitev lahko opre – dokumentirana, z jasno navedenim stanjem in omejitvami.
| Orodje | Kaj reši | Stanje |
|---|---|---|
| Office SDK | Aplikacijo hrani kot izvorno kodo v Gitu ali Subversionu in iz točno določene različice zgradi ACCDB ali ACCDE – enako na vsakem računalniku in v sistemu CI. | V razvoju izdaja 0.13.0; Windows 11 z 32- ali 64-bitnim Accessom iz Microsoft 365 |
| Forms Object Library | 31 kontrolnikov ActiveX in objektov za obrazce Access – drevesni pogled, mreža, Ganttov diagram, navigacija; nastavite jih v listu z lastnostmi, delujejo pa tudi v datotekah ACCDE in okolju Access Runtime. | Izdano izdaja 2.0.0, 32- in 64-bitni Access |
| Office JSON | JSON v VBA z objektnim modelom MSXML: poizvedbe JPath v skladu z RFC 9535, zneski brez tihega zaokroževanja in brez nameščanja izvajalnega okolja. | Izdano 32- in 64-bitni Office (Microsoft 365) |
| Bootstrapper | Nove izdaje za vsakega uporabnika brez skrbniških pravic, ko oddelek IT enkrat namesti zaganjalnik: namestitev z vrnitvijo na prejšnje stanje, komponente v bitnosti nameščenega Officea, odstranitev v razdelku Aplikacije. | Izdano Windows 11 z 32- ali 64-bitnim Accessom (Microsoft 365) |
| Database Gateway in gonilnik OData ODBC | Podatki SQL Serverja brez gesla podatkovne baze na delovni postaji, pravice po tabelah, dostop od zunaj brez VPN-ja; v Accessu tabele povežete in urejate brez kode VBA. | z Accessom in okoljem Access Runtime, 32- in 64-bitno |
Orodja in podatkovni prehod so dokumentirani v slovenščini, nemščini in angleščini; referenčna priročnika API za Forms Object Library in Office JSON sta samo v angleščini.
Od ene datoteke do ponovljive gradnje
Tako obstoječa aplikacija Access z orodjem Office SDK preide pod nadzor različic. Ukazi in vzorčni projekt »Kunden« so vzeti iz vodiča.
-
Prevzem obstoječe aplikacije
Ustvarite projekt in izvozite podatkovno bazo. Izvoz poteka na kopiji v skritem primerku Accessa – izvirno podatkovno bazo samo bere.
wkl-office new C:\Work\Kundencd C:\Work\Kundengit initwkl-office export Kunden.acproj -d C:\Data\Kunden.accdb
-
Izvorna koda namesto binarne datoteke
Vsaka poizvedba, obrazec, poročilo in modul postane besedilna datoteka, tabele postanejo opisi sheme, podatki šifrantov pa vrstice JSON. Kar Access ob vsakem shranjevanju zapiše na novo, izvoz izpusti.
Kunden.acproj source/ queries/ *.query.txt forms/ *.form.txt reports/ *.report.txt modules/ *.bas classes/ *.cls tables/ *.table.json data/ *.jsonl references.json
-
Pregled sprememb kot pri kodi
Razvijalci še naprej delajo v Accessu. SDK nato pokaže, kaj se je spremenilo – po objektih in po vrsticah –, potrditev pa se v repozitorij zapiše kot berljivo besedilo, ki ga ekipa pregleda kot vsako drugo kodo.
wkl-office status Kunden.acprojwkl-office diff Kunden.acproj form:frmKundenwkl-office commit Kunden.acproj -m "ID za DDV"
-
Ponovljiva gradnja
Gradi se iz repozitorija, ne iz kopije, ki je bila nazadnje shranjena.
checkže pred zagonom Accessa najde neveljavne izvorne datoteke, manjkajoče sklice in gesla v poizvedbah.roundtripdokaže, da je izvorna koda celovita: izhodna koda 0 pomeni, da vsak, ki klonira repozitorij, zgradi enako aplikacijo – enake objekte, tabele, podatke in nastavitve, čeprav datoteka ni enaka do zadnjega bajta.wkl-office check Kunden.acprojwkl-office roundtrip Kunden.acprojwkl-office build Kunden.acproj -c Release
V razvoju
Izdaja 0.13.0 Office SDK deluje v sistemu Windows 11 z 32- ali 64-bitnim Accessom iz Microsoft 365. Access od 2016 do 2021, Windows 10 in gradnja samo z okoljem Access Runtime niso podprti, gradnja pa potrebuje prijavljeno sejo Windows z Accessom. Več o SDK-ju
Dokazi, ki jih lahko preverite
- Napisano tako, da lahko sledite. Navodila vodijo korak za korakom: povezovanje tabele v Accessu s posnetki zaslona ter od praznega strežnika do prve poizvedbe.
- Orodja uporabljamo tudi sami. Skrbniška konzola podatkovnega prehoda je aplikacija Access, zgrajena z Forms Object Library in Office JSON – posnetek na vrhu strani.
- Javno dokumentirano. Stanje, zahteve in omejitve vsakega orodja so zapisani v njegovi dokumentaciji, ne le na tej strani.
Več o tem: vodič za SDK, zgradba izvorne kode, pregled orodij za Access; pregled podatkovnega prehoda, pregled gonilnika.
Vaš naslednji korak
- Želite, da vaša aplikacija Access ostane v uporabi? Skupaj jo pregledamo in vam povemo, katera od štirih poti je prava – dogovorite se za pogovor.
- Bi orodja raje najprej preizkusili sami? Vodič za SDK vas v sedmih korakih pripelje od podatkovne baze do repozitorija.
- Vaš podedovani sistem ni Access? Delphi, .NET ali proizvodna podatkovna baza: oglejte si industrijsko programsko opremo in naše reference.
Katera pot ustreza vaši aplikaciji, najlažje ugotovimo ob vašem dejanskem sistemu – ne ob predstavitvenih prosojnicah.
Dogovorite se za pogovor

