我将 97 版 Access 数据库转换为 32 位版 Access 2013。该数据库现在在 Windows 7 中崩溃,但在 Windows 2012 R2 中运行正常。
如果我将数据库复制到电脑上,第一次打开数据库时它不会崩溃,但以后每次都会崩溃。
此查询将始终导致 Windows 7 中的 Access 崩溃,但不会导致 Windows Server 2012 中的 Access 崩溃:
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 次后就会崩溃。
由于使用了 32 位 vba 代码,因此必须使用 Access 32 位。
我收到一条错误消息:
APP NAME: MSACCESS.EXE
FAULT MODULE: OLEAUT32.DLL
FAULT MODULE VERSION: 6.1.7601.18679
EXCEPTION CODE: C0000005
答案1
听起来这可能是 Windows 7 无法处理的缓存问题。
我找到了一个指南这里这解释了如何在关闭时清除访问缓存。
- 单击文件 > 选项 > 当前数据库
- 滚动到“缓存 Web 服务和 Sharepoints 表”
- 选中“使用与 Microsoft Access 2010 及更高版本兼容的缓存格式”
- 勾选“关闭时清除缓存”
- 点击“确定”
- 重新启动 Access 以使更改生效。
这应该可以防止 Access 在打开或重新打开时崩溃。