我有一个应用程序,在运行时创建一个Jet数据库,并导入〜100k记录,以便我可以利用索引出于性能原因(1分钟对比将近10不使用Jet数据库)。访问“修复”打破了一个稍微复杂的查询
该数据库使用Excel中的ADO Extensibility创建,并且一切正常。但是,每当我在Access前端打开MDB文件时,就会出现问题,它会自动开始“修复”数据库。
“修复”后数据仍然正常,但是我的主输出查询不能在Access中查看,因为它告诉我它不能表示连接,如果我在SQL中查看它,则所需的连接不是那里,并且查询不能再运行。这仍然发生,如果我让它得到“修复”,但不打开该查询,即它是打破查询的“修复”,而不是尝试在Access中查看它的行为。有趣的是,我使用Access GUI查询设计器来构建SQL,因为我的生命太短,无法担心它是疯狂的包围风格,但后来它认为它本身太复杂了?
此外,没有别的东西似乎受到影响,所以我只能假设它是这一个它不喜欢的查询。
这对我来说并不是一个破坏行为,因为我的修复是隐藏MDB并建议用户不要打开它。
但是,我真的很喜欢它,如果数据库可以打开,我不必像这样隐藏它。因此,我的问题是,是否有办法阻止MDB自动“修复”?
谢谢!
应该可以创建一个不需要修复的数据库。也许你可以发布一些代码? – Fionnuala
我创建数据库的代码如下所示,并且我已经测试过,这足以强制修复: Set objCat = CreateObject(“ADOX.Catalog”) objCat.Create ConnectionString() 什么是发生在我身上的是我正在创建一个MDB,但在Access 2007中开放,这就是我所拥有的。这可能是问题吗? – CrazyHorse
什么是ConnectionString()? – Fionnuala