在Windows公司网络环境中,我们有几个用户通过MS Excel VBA程序访问MS Access数据库。 为了更新数据库,我们绑定到遗留系统。为了输入数据,我们使用普通的Access Forms和规范化表。 Excel VBA不直接查询规范化表,而是使用包含非规范化记录的其他Access数据库。后者被删除(通过Kill命令)并在每个“会话”之后新创建,用于在表单中输入新数据。 因此,如果任何用户通过Excel程序查询数据库,而其他程序想要删除并重新创建它,则删除失败并显示错误70 - 访问被拒绝。 (我猜在Excel程序中有一些错误,并非所有连接都关闭,这就是为什么长时间保持程序打开的用户会长时间阻止删除 - 但我不负责那些程序O_o)。
因此,我想在抛出错误时获取当前阻止数据库的用户的Windows登录(或任何其他信息)。有没有办法做到这一点? 或者我想在删除时将任何阻塞用户从数据库中踢出来 - 有没有办法为kill命令设置某种优先级?
非常感谢!
答案 0 :(得分:2)
要查找有文件打开的人,请使用PsFile,并将文件路径阻止。
就您的体系结构而言,如果非规范化记录是由(或可以)存储在Access数据库中的查询生成的,则应考虑将Excel文件指向查询,而不是生成完整的单独文件以此目的。您可以使用“DATA”功能区的“获取外部数据”部分在Excel工作簿中插入可刷新的表。