Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Orodja za Microsoft Access » WKL Forms Object Library » troubleshooting » Aplikacija se odpre, njena koda pa se ne izvaja

Aplikacija se odpre, njena koda pa se ne izvaja

Simptom

Nameščena aplikacija se v uporabnikovem računalniku odpre, vendar se nič od njene kode ne zgodi: zagonski obrazec se prikaže brez podatkov ali ostane prazen, gumbi ne naredijo ničesar, model aplikacije se ne uporabi, kontrolniki WKL ostanejo prazni. Pogosto se ne prikaže nobeno sporočilo; v drugih primerih Access, preden odpre podatkovno zbirko, prikaže varnostno obvestilo programa Microsoft Access.

Okolje

Access za Microsoft 365, polna različica in izvajalno okolje, 32- in 64-bitni; ACCDE in ACCDB.

Vzrok

Access izvaja kodo podatkovne zbirke samo, če ji zaupa. O tem odločata nastavitev makrov v centru zaupanja (Datoteka › Možnosti › Središče zaupanja › Nastavitve središča zaupanja › Nastavitve makrov) in zaupanja vredna mesta; kaj uporabnik vidi, je odvisno od obojega in od vrste datoteke. Za ACCDE in ACCDB, zunaj zaupanja vrednega mesta in na njem:

Nastavitev makrovDatoteka ni na zaupanja vrednem mestuDatoteka je na zaupanja vrednem mestu
Omogoči vse makreKoda se izvajaKoda se izvaja
Onemogoči vse makre z obvestilom (privzeto), ACCDE, polna različica in izvajalno okoljeVarnostno obvestilo; po Odpri se koda izvajaKoda se izvaja, brez obvestila
Onemogoči vse makre z obvestilom, ACCDB, polna različicaBrez obvestila, samo vrstica za sporočila; koda je onemogočena, dokler ne kliknete Omogoči vsebinoKoda se izvaja
Onemogoči vse makre z obvestilom, ACCDB, izvajalno okoljeVarnostno obvestilo; po Odpri se koda izvajaKoda se izvaja
Onemogoči vse makre razen digitalno podpisanih makrovBrez obvestila, koda je onemogočena; ACCDE se sploh ne odpreKoda se izvaja
Onemogoči vse makre brez obvestilaBrez obvestila, koda je onemogočena; ACCDE se sploh ne odpreKoda se izvaja
Omogoči vse makre ali privzeta nastavitev, datoteka je označena kot prenesena iz internetaObvestilo, da je Microsoft blokiral izvajanje makrov, koda je onemogočena – tudi pri Omogoči vse makreKoda se izvaja

„Se sploh ne odpre“ pomeni: Access prikaže svoje prazno okno – naslov Access, trak, brez podokna za krmarjenje, brez zavihkov dokumentov, brez zagonskega obrazca. Zagonske lastnosti datoteke (StartUpShowDBWindow, AllowBypassKey in druge) takrat ne igrajo nobene vloge: izdana kopija za produkcijo in kopija za upravljanje sta videti enako, pridržana tipka Shift ob odpiranju pa ničesar ne spremeni. Ko je koda zaupanja vredna, zagonske lastnosti učinkujejo: kopija za upravljanje prikaže podokno za krmarjenje, kopija za produkcijo pa ohrani zagonski obrazec in podokno skrije tudi pri pridržani tipki Shift (AllowBypassKey = False).

Zaupanja vredno mesto velja samo za datoteke neposredno v njegovi mapi, razen če je vklopljena možnost, da so zaupanja vredne tudi podmape tega mesta: mesto ...\Frontends\ brez te možnosti ne zaupa sprednjemu delu v ...\Frontends\1.0\. Zaupanja vredno mesto učinkuje pri vsaki nastavitvi makrov in odpravi tudi blokado datoteke, prenesene iz interneta.

Nastavitev ActiveX v centru zaupanja (nastavitve kontrolnikov ActiveX) učinkuje neodvisno od tega: pri možnosti Onemogoči vse kontrolnike brez obvestila ostanejo kontrolniki WKL prazni tudi na zaupanja vrednem mestu – koda se izvaja, ustvarjanje kontrolnika WKL pa odpove z napako Accessa 2926 (varnostne nastavitve so kontrolnik onemogočile). Druge možnosti ActiveX nalaganja kontrolnikov WKL na zaupanja vrednem mestu ne preprečijo.

Skript, ki na taki datoteki zažene Access, čaka zaman: Access z onemogočeno kodo se na zahtevo za zaprtje, poslano njegovemu glavnemu oknu, odzove tako, da zapre okno, proces pa ostane. To velja za Access, zagnan skrito ali pomanjšano. Preden skript zažene aplikacijo, preverite zaupanje s Test-AccessTrust.ps1.

Rešitev

  1. Vzrok poiščite, ne da bi zagnali Access: kot uporabnik zaženite tools\deploy\Test-AccessTrust.ps1 -Path <file> iz paketa izdaje. Njegova izhodna koda in izpis navedeta en vzrok (glejte `WklTrustCode` (referenčni priročnik API v angleščini)); v VBA da isti odgovor `WklApplication.CheckTrust` (referenčni priročnik API v angleščini).
  2. Pri kodi 10 (datoteke ne pokriva nobeno zaupanja vredno mesto): sprednji del postavite na zaupanja vredno mesto s tools\deploy\Set-AccessTrustedLocation.ps1 -Path <folder> – z -AllowSubfolders, če je sprednji del v podmapi te mape, na primer v eni mapi za vsako različico.
  3. Pri kodi 30 (dovoljeni so samo podpisani makri): datoteko postavite na zaupanja vredno mesto (2. korak); preverba podpisanega projekta VBA ne prebere.
  4. Pri kodi 41 (uporabnikova nastavitev ActiveX): v Accessu v Datoteka › Možnosti › Središče zaupanja › Nastavitve središča zaupanja odprite nastavitve kontrolnikov ActiveX in izberite katero koli možnost razen Onemogoči vse kontrolnike brez obvestila.
  5. Pri kodi 50 (datoteka iz interneta): datoteko postavite na zaupanja vredno mesto (2. korak) ali odstranite oznako z Lastnosti › Odblokiraj v Raziskovalcu ali z Unblock-File v PowerShellu.
  6. Pri kodi pravilnika skupine (11, 12, 13, 20, 40): pravilnik spremeni oddelek IT ali pa mesto nastavi s pravilnikom; uporabnik ga ne more preglasiti.
  7. Uporabnikom ne svetujte, naj kot način dela klikajo Omogoči vsebino: to velja samo za tisto eno odpiranje, ob naslednjem zagonu ali pri drugem uporabniku pa se pojavi ista blokada.

Sorodne teme

sl/wiki/msaccess/comctl/troubleshooting/application-code-does-not-run.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille