Access se po brisanju ali napaki ne odziva več
Okolje
Vsi kontrolniki v Accessu, ki ga zažene avtomatizacija (New Access.Application, CreateObject) ali je
skrit (Visible = False), in v Accessu, katerega okno je za drugimi okni.
Vzrok
Access ne visi, temveč čaka na okno s sporočilom, ki ga nihče ne vidi. Znani sta dve vrsti takih oken:
- Potrditev kontrolnika
WklGrid(„Ali želite izbrisati izbrane zapise (5)?“), ko uporabnik zapise izbriše s tipko Delete, s priročnim menijem ali ko jih izbrišeDeleteSelected. To je okno s sporočilom sistema Windows (razred okna#32770, naslov „WKL Grid“), katerega lastnik je glavno okno Accessa: če je Access skrit, je skrito tudi to okno, Access pa čaka nanj.WklTreeListinWklGanttsprašujeta na enak način. - Pogovorno okno VBA za napako pri neobravnavani napaki med izvajanjem v dogodkovni proceduri (na primer v
BeforeDelete, vActionobjektaWklToastali v funkciji, navedeni vActionFunction) in pogovorno okno za napako pri prevajanju v modulu.
Upravitelj opravil prikazuje Access kot „Se ne odziva“ samo, dokler pogovorno okno čaka; procesor pri tem miruje.
Rešitev
- Naredite Access viden (
Application.Visible = True) ali premaknite njegovo okno v ospredje, da vidite pogovorno okno; lahko pa z orodjem za pregledovanje oken poiščete okno razreda#32770v procesu Accessa. - Pri brisanju, ki ga izvaja koda ali poteka brez uporabnika, potrditev izklopite: obravnavajte
BeforeDeletein nastaviteConfirmna False (po potrebi tam postavite svoje vprašanje) ali nastaviteCancel. - Vsaki dogodkovni proceduri in vsaki funkciji, ki jo kliče kontrolnik, dodajte obravnavo napak (
On Error GoTo ...); napake zapisujte v dnevnik ali tabelo, namesto da jih prepustite pogovornemu oknu VBA. - Preden podatkovna zbirka teče brez nadzora, jo prevedite (Debug › Compile).
Sorodne teme
sl/wiki/msaccess/comctl/troubleshooting/access-waits-on-a-hidden-dialog.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille