我在一家公司工作,我们可能会从Access97 / 2003更新到Access2010。
在使用原型后,我发现将Access 2010与Access 2003中创建的数据库一起使用时会出现问题。
在某些情况下,Access 2003中的现有查询/ SQL将在Access 2010中变得无法使用。这里有一个小例子:
表名:参数字段名称:数字,值
使用Access 2003查询设计器创建的查询:
SELECT Parameters.Value
FROM [Parameters]
WHERE (((Parameters.Number)=100));
这适用于Access 2003。 在Access 2010中引发错误:PARAMETER子句中的语法错误
该错误的解决方法是更改Access 2003中的视图。这里我们删除括号:
SELECT Parameters.Value FROM [Parameters] WHERE Parameters.Number=100;
这将在Access 2010中有效,但查询在设计器中仍然不可更改,因为查询设计器会创建上面显示的语法。
这个错误的原因实际上是使用保留字'Number',当你开始构建一个表或查询时,它不会被使用,但对于有数百个现有数据库的迁移,这是非常的在没有完整测试的情况下更改Access版本可能或至少存在风险。
我的想法是编写一个小程序,打开所有现有的视图和表格,以检查它们是否正常工作。
无论如何,任何人都有更好的解决方案,或者是否有工具来检查MS-Access 2003数据库是否与Access 2010兼容?
非常感谢提前
约克
答案 0 :(得分:1)
Parameters
,Value
和Number
都是保留字。你可能是对的Number
是罪魁祸首;我怀疑Parameters
更有可能在查询中混淆Access。
“对于包含数百个现有数据库的迁移”,首先使用Allen Browne的Database Issue Checker Utility进行评估。除了保留字问题,它还会让您了解其他潜在的问题区域。这些问题在Access 2010中是否比2003年更麻烦是一个悬而未决的问题。
但是我没有看到一个简单的解决方案来解决你的困境。你有数百个数据库,可能有数千个表和查询......如果它们经常包含表和字段名称的保留字,以及其他对象名......你的情况很糟糕。
试验现有数据库的副本。打开“track name autocorrect”并让它构建对象依赖项。更改表定义以消除保留字。然后看看你需要多少额外工作才能找到并修复自动更正不适合你的项目。但是,不要在您向用户发布的任何应用程序中启用自动更正。