Farbschema: Riviera
Sie befinden sich hier: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » how-to » Gradnja aplikacije Access iz besedilnih izvornih datotek

Gradnja aplikacije Access iz besedilnih izvornih datotek

Aplikacijo Access s kontrolniki WKL hranite kot besedilo v sistemu za upravljanje izvorne kode in iz njega z enim ukazom zgradite ACCDB in ACCDE, tako da vsak razvijalec in vsak računalnik za gradnjo izdela enako aplikacijo.

Novi projekti: WKL Office SDK gradi, izvaža in preverja aplikacije Access iz izvornih datotek z več koraki kot to orodje za gradnjo (stanje in usklajevanje z odprtim Accessom, krožna preverba, MSBuild, dodatek za Access), datoteko access-app.json pa prevzame z ukazom wkl-office migrate access-app.json -o <folder> (dokumentacija WKL Office SDK, „Selitev projekta orodja za gradnjo WKL Forms Object Library“). To orodje za gradnjo za obstoječe projekte še naprej deluje.

Zahteva WKL Forms Object Library 1.38 ali novejšo (orodje za gradnjo je del izdaje); hišna tema Riviera v paketu 1.44 ali novejšo; -Normalize in finish 1.45.1 ali novejšo.

Pregled rešitve

  • Vir je repozitorij. Moduli in moduli razreda, kot jih izvozi urejevalnik VBA, obrazci, poročila, poizvedbe in makri, kot jih zapiše SaveAsText, tabele kot SQL, tema Officea in trakovi kot datoteke. ACCDB in ACCDE sta izdelka gradnje in se ne hranita.
  • Projektna datoteka access-app.json navaja ime aplikacije, njene sklice in mape z izvornimi datotekami (referenčni priročnik).
  • En ukaz gradi: tools\build\Build-AccessApp.ps1 -Project access-app.json. Access zažene skrito, v vrstnem redu, ki ga Access potrebuje (temo pred obrazci), in se ustavi s korakom, ki ni uspel.
  • Kontrolniki WKL v obrazcih pridejo z besedilom obrazca, če je bil obrazec urejen v Accessu in shranjen s SaveAsText. Obrazec, ki ga ustvari skript, dobi na mestu kontrolnika pravokotnik z lastnostjo Oznaka (Tag) wkl:<Kind>; gradnja ga zamenja z izdanim gradnikom kontrolnika te vrste.

Izvedba

Repozitorij s to strukturo:

my-app/
+- access-app.json
+- src/
   +- tables/01-customer.sql
   +- modules/basApp.bas, clsCustomer.cls
   +- forms/frmShell.form.txt, frmStranke.form.txt
   +- ribbons/AppRibbon.xml
   +- theme/          (deli paketa .thmx: [Content_Types].xml, theme/theme/theme1.xml ...)

Projektna datoteka:

{
  "name": "Stranke",
  "references": [ { "library": "WklForms", "major": 2, "minor": 0 } ],
  "tables": "src/tables",
  "modules": "src/modules",
  "theme": { "folder": "src/theme", "name": "Riviera" },
  "ribbons": "src/ribbons",
  "forms": "src/forms",
  "properties": { "AppTitle": "Stranke", "StartUpForm": "frmShell", "CustomRibbonID": "AppRibbon" }
}

Gradnja (iz katerega koli okna PowerShell; skript se sam znova zažene v bitni različici Officea):

& '<release>\tools\build\Build-AccessApp.ps1' -Project .\my-app\access-app.json

Izhodna mapa my-app\out nato vsebuje Stranke.accdb in Stranke.accde.

Hišna tema „Riviera“ je v paketu izdaje pod themes\riviera. Če jo želite uporabiti namesto kopije v svojem projektu, temo usmerite na paket (<package> pomeni mapo paketa izdaje):

"theme": { "folder": "<package>/themes/riviera", "name": "Riviera" }

Če izdelate lastno temo, v datoteki theme1.xml pred korenskim elementom ne sme biti komentarjev: Access tako temo brez sporočila zavrže.

Spremembe, narejene v Accessu, vrnete v repozitorij tako, da razvojno podatkovno zbirko izvozite v mape z izvornimi datotekami iste projektne datoteke. Export-AccessApp.ps1 je poleg skripta za gradnjo (<project> pomeni mapo vašega projekta):

.\tools\build\Export-AccessApp.ps1 -Project <project>\access-app.json -Database <project>\dev\Stranke.accdb
.\tools\build\Export-AccessApp.ps1 -Project <project>\access-app.json -Only frmStranke,basApp

Skript zapiše module, kot jih izvozi urejevalnik VBA, obrazce, poročila, poizvedbe in makre, kot jih zapiše SaveAsText (brez vrstice Checksum, ki se spremeni ob vsakem shranjevanju), in trakove iz USysRibbons. Tabele, tema in lastnosti podatkovne zbirke se ne zapišejo nazaj: določene so v izvornih datotekah. Objekti, ki obstajajo samo v mapi, so navedeni, ne pa izbrisani. Podatkovno zbirko najprej zaprite v svojem Accessu; skript jo odpre v lastnem, skritem Accessu. Z -Normalize iz besedil obrazcev in poročil izpusti vrstice, ki jih Access ob vsakem shranjevanju zapiše na novo, tudi brez spremembe – GUID, bloke NameMap in RecSrcDt ter NoSaveCTIWhenDisabled –, zato primerjava pokaže le prave spremembe; gradnja te vrednosti znova ustvari.

Korake, ki jih orodje ne pozna – skupine podokna za krmarjenje, skrite objekte –, zapišite v lastno funkcijo, ki jo gradnja izvede po lastnostih in jo navedete v projektni datoteki:

"finish": "FinishBuild"
Public Function FinishBuild() As String
    On Error GoTo Failed
    CurrentDb.Properties("StartUpShowDBWindow") = False   ' any step the tool does not know
    FinishBuild = "OK"
    Exit Function
Failed:
    FinishBuild = "Fehler " & Err.Number & ": " & Err.Description
End Function

Vsako besedilo razen "" ali "OK" ustavi gradnjo s tem besedilom.

Opombe

  • Za gradnjo je potreben Access. Gradnja uporablja Accessova LoadFromText in SysCmd 603; Access Runtime ne more graditi. Na računalniku mora biti izdaja WKL registrirana v bitni različici Officea, kot na razvijalskem računalniku (Namestitev izdanega paketa).
  • Korak ACCDE se ponovi. Access se iz izdelave ACCDE občasno vrne brez datoteke in brez napake; skript poskusi do trikrat in preveri datoteko.
  • Brez pogovornih oken. Access teče skrito; modul, ki se ne prevede, ustavi gradnjo s korakom in namigom, naj ga prevedete v urejevalniku VBA. Končan je samo primerek Accessa, ki ga je zagnal skript.
  • Zaupanja vredno mesto samo med gradnjo. Izhodna mapa je med gradnjo zaupanja vredno mesto za trenutnega uporabnika, nato pa se odstrani. Če želite zgrajeno aplikacijo odpreti od tam, mapi zaupajte sami: <release>\tools\deploy\Set-AccessTrustedLocation.ps1 -Path <output folder> (za posameznega uporabnika, brez skrbniških pravic). Brez tega Access podatkovno zbirko odpre z onemogočeno aktivno vsebino: brez VBA, brez kode zagonskega obrazca, kontrolniki WKL pa se ne naložijo.
  • Izvozi brez normalizacije spremenijo nekatere vrstice. Access ob vsakem shranjevanju v besedilo obrazca zapiše nove vrednosti, tudi če se obrazec ni spremenil (GUID-i v binarnih blokih, NameMap, RecSrcDt, NoSaveCTIWhenDisabled); izvažajte z -Normalize, da jih ne prenesete v repozitorij.
  • Slike ohranijo pot računalnika, na katerem so bile vstavljene. Lastnost Picture kontrolnika slike, vstavljene iz datoteke, ob prvem izvozu vsebuje absolutno pot do te datoteke, vendar le kot podatek (vdelana slika je v besedilu obrazca); gradnja iz besedila ohrani samo ime datoteke, zato naslednji izvoz to vrstico enkrat prikaže kot spremenjeno.
  • Ob odpiranju zgrajene podatkovne zbirke se zažene zagonski obrazec. StartUpForm začne veljati, ko se podatkovna zbirka odpre; skript, ki zgrajeno podatkovno zbirko nato odpre za lastne korake, zažene aplikacijo, odprtega obrazca pa ni mogoče skriti ali spremeniti v pogledu načrta (napaka 2564). Take korake zapišite v funkcijo finish, ki se izvede, preden se podatkovna zbirka znova odpre, ali pa StartUpForm v lastnem skriptu nastavite nazadnje.
  • Orodje ne zajema povezanih tabel (ob zagonu uporabite WklLinkManager.EnsureLinks), podatkov lokalnih tabel razen stavkov INSERT in relacij.

Sorodne teme

sl/wiki/msaccess/comctl/how-to/build-an-application-from-source.txt · Zuletzt geändert: von Wolfgang van der Stille