Я преобразовал базу данных Access 97 в Access 2013 32bit. Теперь база данных зависает в Windows 7, но отлично работает в Windows 2012 R2.
Если я скопирую базу данных на ПК, то при первом открытии базы данных она не зависнет, но каждый раз после этого она будет зависать.
Этот запрос всегда приводит к сбою Access в Windows 7, но не в Windows Server 2012:
UPDATE BatchHdr SET BatchHdr.RecCount = Val(Nz(DCount("[EntryID]","BatchDtl","[BatchID] = " & [BatchID]),0)), BatchHdr.Errors = Val(Nz(DCount("[EntryID]","BatchDtl","[Er] is not null and [BatchID]=" & [BatchID]),0)), BatchHdr.Warnings = Val(Nz(DCount("[EntryID]","BatchDtl","[Warning] is not null and [BatchID]=" & [BatchID]),0)), BatchHdr.NeedsChecked = IIf(DCount("[BatchID]","BatchDtl","[Checked] = false and [BatchID] = " & [BatchID])>0,True,False) WHERE (((BatchHdr.Status)<>"Exported" And (BatchHdr.Status)=[Forms]![BatchHeader]![MyStatus])) WITH OWNERACCESS OPTION;
Я не могу понять, как заставить эту базу данных работать в Windows 7. Я пробовал запустить Access в режиме совместимости, и поначалу сбоев не было, но они возникали после 1-2 открытий.
Необходимо использовать Access 32bit, поскольку используется 32-битный код VBA.
Я получаю сообщение об ошибке:
APP NAME: MSACCESS.EXE
FAULT MODULE: OLEAUT32.DLL
FAULT MODULE VERSION: 6.1.7601.18679
EXCEPTION CODE: C0000005
решение1
Похоже, это проблема кэша, с которой Windows 7 не справляется.
Я нашел руководствоздесьгде объясняется, как очистить кэш доступа при закрытии.
- Нажмите Файл > Параметры > Текущая база данных.
- Прокрутите страницу до таблицы «Кэширование веб-служб и SharePoints».
- Установите флажок «Использовать формат кэша, совместимый с Microsoft Access 2010 и более поздними версиями».
- Установите флажок «Очистить кэш при закрытии».
- Нажмите «ОК».
- Перезапустите Access, чтобы изменения вступили в силу.
Это должно предотвратить сбои Access при его открытии или повторном открытии.