MS ACCESS 中的表级验证表达式中的语法错误

Posted

技术标签:

【中文标题】MS ACCESS 中的表级验证表达式中的语法错误【英文标题】:Syntax error in table-level validation expression in MS ACCESS 【发布时间】:2015-09-05 05:05:20 【问题描述】:
OleDbCommand oleDbCmd = new OleDbCommand();
OleDbConnection bookConn = Sqlhelper.Conncect_Mdb();
oleDbCmd.Connection = bookConn;
oleDbCmd.CommandText = "ALTER TABLE doc_comp ADD COLUMN versioncode NUMBER DEFAULT 0";
oleDbCmd.ExecuteNonQuery();
bookConn.Close();

这是我在 ms 访问中更改表的代码,它在表级验证表达式中抛出错误语法错误。此代码在不添加“DEFAULT 0”的情况下工作正常。我正在使用 MS ACCESS 2007。尝试使用 this,但我无法使用工具进行设置。

【问题讨论】:

【参考方案1】:

如果我使用以下连接字符串,您的代码对我有效:

static public OleDbConnection Conncect_Mdb()

    const string oledb = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=scratch.accdb";     
    var conn = new OleDbConnection(oledb);
    conn.Open();
    return conn;

有一些较旧的驱动程序,特别是那些通过 ODBC 运行的驱动程序,它们要求您在驱动程序中指明您需要哪些 sql 支持。在 Odbc 连接字符串中进行此类设置的示例是 ExtendedAnsiSQL=1

如果您的设置没有同样支持 Access 2007 的 Microsoft Access Database Engine 2010,您可以从 Microsoft Download 下载并安装可再发行组件。

【讨论】:

我的连接字符串 String connParam = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + dbPath + ";Persist Security Info=False" ; 将提供程序更改为较新的驱动程序(如果您还没有,请先下载并安装) 如何检查提供程序是否已正确安装。我使用的是 Office 2013,卸载了 2010。我使用了您的确切连接字符串,无法执行查询。 @htm11h 您可以通过在 HKEY_CLASSES_ROOT 下找到 Microsoft.ACE.OLEDB 来检查注册表。如果您正在构建 x64,则可以尝试使用 AnyCPU,以防您只安装了 32 位驱动程序【参考方案2】:

此答案与特定问题无关,但它确实回答了 TITLE 中发布的错误消息......

Syntax error in table-level validation expression in MS ACCESS

我收到了这个确切的错误,解决方法是从查询语句的末尾删除一个分号。

我正在使用 OP 的查询来提出解决方案...

oleDbCmd.CommandText = "ALTER TABLE doc_comp ADD COLUMN versioncode NUMBER DEFAULT 0**;**";

应该是,

oleDbCmd.CommandText = "ALTER TABLE doc_comp ADD COLUMN versioncode NUMBER DEFAULT 0";

从查询语句中删除被星号包围的分号。这为我解决了这个确切的错误。

【讨论】:

以上是关于MS ACCESS 中的表级验证表达式中的语法错误的主要内容,如果未能解决你的问题,请参考以下文章

MS Access SQL 语法错误

加入时更新 MS Access 语法错误

在连接上更新时出现MS Access语法错误

MS Access SQL:使用另一个表中的Sum更新连接查询

MS Access Query 中的语法错误 [重复]

MS Access 中的 INSERT 语句中的语法错误