DoCmd.RunSQL CREATE TABLE语句,使用vba的默认值

问题描述 投票:1回答:1

我在ms Access中使用VBA运行SQL语句。当我尝试运行它时,它始终显示“ create table语句中的语法错误”。你能发现我的错误吗?我已经尝试了3个多小时...

Private Sub Btn_create report_Click()


Dim SQL_2 As String

SQL_2 ="CREATE TABLE TR_Customer_data" & _
"[Field 1] CHAR(30) DEFAULT '1'" & _
"[Field 2] CHAR(30) DEFAULT 'MCR'" & _
"[Field 3] CHAR(30) DEFAULT 'GE34567'" & _
"[Field 4] CHAR(30) DEFAULT 'apple and bananas'" & _
"[Field 5] CHAR(30)" & _
"[Field 6] CHAR(30)" & _
"[Field 7] CHAR(30) DEFAULT '192.0.0.1'" & _
"[Field 8] CHAR(30)" & _
"[Field 9] CHAR(30)" & _
"[Field 10] CHAR(30)" & _
"[Field 11] CHAR(30) DEFAULT 'CPR'" & _
"[Field 12] CHAR(30) DEFAULT '7.0'" & _
"[Field 13] CHAR(30)" & _
"[Field 14] CHAR(30)" & _
"[Field 15] CHAR(30)" & _
"[Field 16] CHAR(30)" & _
"[Field 17] CHAR(30)" & _
"[Field 18] CHAR(30) DEFAULT '[email protected]'" & _
"[Field 19] CHAR(30) DEFAULT '[email protected]'" & _
"[Field 20] CHAR(30) DEFAULT 'town/city'" & _
"[Field 21] CHAR(30)"

DoCmd.RunSQL SQL_2`
End Sub

您能帮我发现我的错误吗?

sql ms-access access-vba
1个回答
0
投票

有效的Access DDL CREATE TABLE语句应在表名后的一对括号内包含用逗号分隔的字段定义列表。您的问题中的代码所建立的语句缺少逗号和括号。

这是我在Access 2010中测试的有效语句:

CREATE TABLE TR_Customer_data ([Field 1] CHAR(30) DEFAULT "1",[Field 2] CHAR(30) DEFAULT "MCR")

我使用此VBA构建并执行该语句:

Dim SQL_2 As String

SQL_2 = "CREATE TABLE TR_Customer_data (" & _
    "[Field 1] CHAR(30) DEFAULT ""1""," & _
    "[Field 2] CHAR(30) DEFAULT ""MCR"")"
Debug.Print SQL_2

'DoCmd.RunSQL SQL_2 '<- No! Will not support `DEFAULT` keyword
CurrentProject.Connection.Execute SQL_2

注意:

  • DEFAULT不支持DoCmd.RunSQL ...它将始终为您提供错误3290,“ CREATE TABLE语句中的语法错误。”CurrentProject.Connection或通过使用OleDb。
  • 在DDL语句文本中使用双引号将默认值引起来。如果改为使用单引号,则它们将作为默认值的一部分包括在内。在VBA中构建语句时,请在需要的完整语句中使用2个双引号。
© www.soinside.com 2019 - 2024. All rights reserved.