【发布时间】:2012-08-29 01:28:09
【问题描述】:
我有一个应用程序在运行时创建一个 Jet 数据库,并导入大约 10 万条记录,以便我可以出于性能原因使用索引(1 分钟而不使用 Jet 数据库时将近 10 分钟)。
数据库是使用 Excel 中的 ADO 可扩展性创建的,一切正常。但是,每当我在 Access 前端打开 MDB 文件时,我的问题就会出现,它会自动开始“修复”数据库。
“修复”后数据仍然正常,但是无法在 Access 中查看我的主要输出查询,因为它告诉我它不能表示连接,如果我随后在 SQL 中查看它,则所需的连接不存在,并且查询不能再运行。如果我让它“修复”但不打开该查询,仍然会发生这种情况,即中断查询的是“修复”,而不是尝试在 Access 中查看它的行为。有趣的是,我使用 Access GUI 查询设计器来构造 SQL,因为我的生命太短了,不用担心它是疯狂的括号样式,但后来它认为它对自己来说太复杂了??
此外,似乎没有其他任何事情受到影响,所以我只能假设这是它不喜欢的一个查询。
这对我来说不是什么大问题,因为我的解决方法是隐藏 MDB,并建议可以看到它的用户不要打开它。
但是,如果可以打开数据库并且不必像那样将其隐藏起来,我真的很喜欢。因此,我的问题是是否有任何方法可以防止 MDB 被自动“修复”?
谢谢!
【问题讨论】:
-
应该可以创建不需要修复的DB。也许您可以发布一些代码?
-
我创建数据库的代码如下,我已经测试过,仅此一项就足以强制修复: Set objCat = CreateObject("ADOX.Catalog") objCat.Create ConnectionString( ) 我想到的是,我正在创建一个 MDB,但在 Access 2007 中打开,这就是我所拥有的。这可能是问题所在吗?
-
对我来说,应该是:
objcat.Create "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Z:\Docs\New.accdb;" -
ConnectionString() 返回 Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[FOLDER_PATH][DBName].mdb;
-
非常感谢您的帮助 - 这是否需要在创建或查询它的计算机上安装 Access 07?我知道 Jet 4 绝对可以在所有机器上使用,但设置可能会有所不同,因为它将在不同的位置使用