Excel查询对安全的Access数据库

时间:2015-04-28 20:14:17

标签: excel ms-access odbc ms-access-2010 oledb

如果标题有点令人困惑,我道歉,让我解释一下。我的部分工作是从ERP系统处理/标记大型数据集,并使其对报告更有意义。我使用2010访问数据库来操作和标记数据,以定期创建静态数据集,用户可以将excel数据透视表指向,这样就可以为他们的客户创建报告。

我们遇到过许多使用默认Excel连接的用户问题,这是一种[Share Deny Write] OLEDB连接。这会锁定"来源" .accdb,阻止我们删除更新的source.accdb文件,如果有数十个用户中的任何一个在刷新文件后打开了他们的Excel报告。

为了解决这个问题,我找到了创造一个"阴影" .accdb只包含查询source.accdb的链接表或查询,这些连接不会锁定source.accdb,允许我们用更新的数据覆盖文件。

有些用户仍然会找到source.accdb并直接链接到它,所以我们尝试用密码保护它们以防止这种情况发生。我没有问题从shadow.accdb创建一个select来使用正确的密码查询source.accdb。当我尝试从excel链接到shadow.accdb中的任何查询时出现问题,我被抛出一个"无效的密码"错误。

问题似乎是excel oledb(或odbc)连接没有从shadow.accdb中的SQL查询传递密码?

是的,我理解这是一种设置数据源的反向方式,但是有很多用户要警告连接,我没有选择更改我们使用的程序,而且没有办法从数据库端到杀死与访问数据库的excel连接,所以这就是我必须使用的。

虽然我怀疑任何人都有这种设置的具体经验,但任何想法都会很棒。从shadow.accdb到source.accdb的连接示例如下:

SELECT *
FROM table IN '' [MS Access;PWD=password;DATABASE=C:\directory\Source.accdb];

1 个答案:

答案 0 :(得分:0)

尝试使用Mode = Share Deny None代替Share Deny Write,这应该允许您在用户使用excel文件连接到访问文件时打开和修改访问文件,显然他们必须更新数据才能获取您在连接到数据库时添加的最后一个 您可以在选项卡高级中创建连接时指定属性Share Deny None,也可以编辑打开其属性的现有连接,选项卡 definition ,并编辑用Mode = Share deny Write替换Mode = Share Deny None的连接字符串。