Poročilo se v datoteki ACCDE ustavi z napako 459 „Object or class does not support the set of events“
Okolje
Access za Microsoft 365 16.0.20527, 32-bitni. Poročilo, ki vsebuje kontrolnik ActiveX in ima lasten modul VBA (Ima modul = Da), prevedeno v ACCDE. Ni nujno, da je kontrolnik kontrolnik WKL: enaka napaka se pojavi tudi s predvajalnikom Windows Media Player in z ukaznim gumbom Microsoft Forms 2.0. Obrazci niso prizadeti.
Poročilo se v ACCDB natisne. V ACCDE (in v Access Runtime) se ustavi takoj, ko se odpre, z napako 2473, ki navede njegov prvi dogodek („The expression On Format you entered as the event property setting produced the following error: Object or class does not support the set of events“), ali z napako VBA 459 z enakim besedilom.
Vzrok
Napaka Accessa. ACCDE vsebuje napačno preveden modul poročila, kadar je modul nastal v isti seji urejanja načrta, v kateri je bil nastavljen ali spremenjen vir zapisov poročila, poročilo pa vsebuje kontrolnik ActiveX. Napaka prihaja iz Accessa, preden se izvede katera koli procedura poročila; sam kontrolnik ni poklican.
Kako se Access vede pri posameznem zaporedju (vsakem v lastni podatkovni zbirki):
| Zaporedje v pogledu načrta | ACCDE |
|---|---|
| Vir zapisov in modul v eni seji urejanja (shranjevanje, zaprtje) | odpove |
| Vir zapisov v eni seji, modul v poznejši | se natisne |
Celotno poročilo ustvari LoadFromText (besedilo vsebuje vir zapisov, kontrolnik ActiveX in modul) | odpove |
| Isto besedilo brez modula, modul dodan v poznejši seji | odpove |
| Isto besedilo brez vira zapisov, vir zapisov nastavljen v poznejši seji | odpove |
Poročilo, ki odpove, znova shranjeno, v njegov modul dodan komentar ali znova SaveAsText in LoadFromText | še vedno odpove |
| Poročilo, ki odpove: Ima modul nastavljen na Ne v eni seji, modul ustvarjen v poznejši | se natisne |
Ker LoadFromText ustvari celotno poročilo naenkrat, v ACCDE odpove vsako poročilo s kontrolnikom ActiveX in
modulom, ki ga ustvari gradnja iz besedilnih izvornih datotek, razen če ga gradnja popravi.
Rešitev
Gradnja z orodjem za gradnjo: orodje za gradnjo iz knjižnice WKL Forms Object Library (tools/build/Build-AccessApp.ps1)
taka poročila popravi samo: ko naloži poročilo s kontrolnikom ActiveX in modulom, v eni seji urejanja načrta
modul odstrani, v drugi pa ga znova ustvari, z isto kodo in enakimi lastnostmi dogodkov. Zgradite znova in
znova izdelajte ACCDE; v izvornih datotekah se nič ne spremeni.
Brez modula poročila: poročilo, katerega dogodki so izrazi, ki kličejo javne funkcije standardnega modula
(na primer lastnost dogodka OnFormat odseka s podrobnostmi =FormatStelle()), nima lastnega modula in ni
prizadeto. Tiskanje merilnikov in grafikonov v poročilu
prikazuje to obliko; velja tudi za poročila, ki jih v Accessu izdelate ročno.